Chunkear PDFs sin partir oraciones y sin agotar el rate limit de embedding.
restriccion: HuggingFace Inference rate-limita agresivamente; un PDF de 200 paginas puede dar 800+ chunks. Cada llamada reintentada cuenta. Chunks muy chicos pierden coherencia semantica; muy grandes desbordan el context window del LLM al concatenarse.
RecursiveCharacterTextSplitter con chunkSize=1000 y chunkOverlap=200. Los embeddings se batchean (10-20 por vez) con backoff exponencial sobre 429. El chunking y el embedding pasan en la API route, nunca en el browser.
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 1000,
chunkOverlap: 200,
});
const docs = await splitter.createDocuments([cleanText]);
return docs.map((doc, index) => ({
content: doc.pageContent,
index,
}));