Trocea texto con solapamiento
Antes de indexar un documento para RAG se parte en trozos. Un pequeño solapamiento evita cortar una idea justo por la mitad.
Escribe chunkWords(text, size, overlap). Separa text en palabras por cualquier espacio en blanco (espacios, saltos de línea, tabuladores) y devuelve un array de cadenas, cada una con como máximo size palabras unidas por un espacio. Cada trozo empieza size - overlap palabras después del anterior, así que comparte overlap palabras con él.
No generes trozos vacíos ni un trozo final que solo repita palabras del anterior. El último trozo puede ser más corto. Un texto vacío devuelve []. Lanza un error si size no es un entero positivo o si overlap no está entre 0 y size - 1.
DOC contiene un texto de ejemplo de 12 palabras.
Retos 0/4
- Trocea DOC en trozos de 4 con 1 de solapamiento
- No deja un trozo final que solo repite el solapamiento
- Sin solapamiento, el último trozo puede ser más corto
- Texto vacío da [] y un solapamiento no válido lanza un error
function chunkWords(text, size, overlap) {
// separa por espacios y toma `size` palabras cada `size - overlap` palabras
const words = text.split(' ');
const chunks = [];
for (let i = 0; i < words.length; i += size) {
chunks.push(words.slice(i, i + size).join(' '));
}
return chunks;
}
console.log(chunkWords(DOC, 4, 1));Para profundizar: la guía relacionada →
¿Esto en producción, con tus datos? Hablemos 15 minutos →