La idea, desarrollada por Anthropic, es sencilla: antes de generar el embedding, un LLM lee el documento completo y redacta dos o tres frases que sitúan ese chunk dentro de él. Lo que se indexa es el contexto más el chunk.
| Qué se indexa | |
|---|---|
| Antes | «La política cambiaría el próximo trimestre» |
| Después | «Este fragmento es del informe anual de TechCorp, sección Anuncios del CEO. Describe cambios en la política de trabajo remoto. | La política cambiaría el próximo trimestre» |
El chunk enriquecido responde solo a las tres preguntas que el original dejaba abiertas: de qué documento viene, de qué habla y a qué se refieren sus pronombres. Y como el embedding se calcula sobre el texto completo, también se encuentra mejor: la consulta «política de trabajo remoto de TechCorp» ya casa con él.
El precio es directo y hay que hacerlo consciente: una llamada al LLM por cada chunk, pagada durante la indexación y otra vez en cada reindexado.
La otra vía no toca el contenido: cambia qué se busca y qué se devuelve. Se trocea dos veces —trozos grandes, y dentro de cada uno trozos pequeños—, se indexan solo los pequeños, y cuando uno de ellos casa con la consulta se entrega el grande del que forma parte.
parent ─── 2000 caracteres ──────────────────────────────
├─ child 1 (400) ← se indexa y se busca
├─ child 2 (400) ← casa con la consulta
└─ child 3 (400)
recupera → el PARENT completo, no el child
Resuelve exactamente el compromiso que hacía elegir tamaño de chunk: los trozos pequeños dan precisión al buscar —un fragmento corto es semánticamente nítido— y el trozo grande da contexto al responder. Ya no hay que elegir.
Un detalle de implementación que se olvida y produce resultados repetidos: varios children del mismo parent pueden casar con la misma consulta, así que hay que deduplicar por padre y recuperar de más para compensar. Si no, los tres huecos del top-K se llenan con el mismo texto grande tres veces.
// sin deduplicar por parent, tres aciertos distintos devuelven el mismo documento| Contextual RAG | Parent-Child | |
|---|---|---|
| Coste de indexar | Una llamada al LLM por chunk | Ninguno: solo trocear dos veces |
| Coste por consulta | Normal | Normal |
| Qué resuelve | Referencias ambiguas, pronombres, falta de origen | Contexto insuficiente alrededor del acierto |
| Mejora el encontrar | Sí: el embedding lleva más señal | No: se busca sobre el mismo texto |
| Cuándo no sirve | Chunks ya autocontenidos | El problema es la ambigüedad, no la longitud |
La fila que decide es la penúltima. Si tu problema es que no encuentras el chunk correcto, Parent-Child no te ayuda: busca sobre el mismo texto de siempre. Si tu problema es que lo encuentras y no se entiende, Parent-Child lo arregla gratis y Contextual RAG te cobra por hacer lo mismo con más elegancia.
Coge diez chunks al azar de tu índice y léelos sin mirar de dónde vienen. Marca cuántos podrías explicarle a alguien sin más información — cuántos se sostienen solos.
Si suspenden muchos, mira por qué: si es porque les falta el origen o tienen pronombres sin antecedente, necesitas contexto; si es porque están cortados a media idea, necesitas devolver el padre. Son dos diagnósticos distintos con dos precios muy distintos, y la lectura de cinco minutos te ahorra elegir el caro por defecto.