compañero de Enterprise Document Intelligence, la serie cuya filosofía se establece en Amplify the Expert. Se acerca al ladrillo 3 (recuperación) de la arquitectura de cuatro ladrillos y muestra las lecciones que se saltan la mayoría de los tutoriales.
La historia principal tiene recuperación al insertar la pregunta, devolver top-k por coseno y, opcionalmente, reclasificar. No estamos de acuerdo con casi todos sus aspectos. La recuperación consiste en filtrar tablas estructuradas, no en buscar texto libre. Las incrustaciones son el recurso opcional, no la base. El ancla y el contexto son dos granularidades, no una. Cada una de ellas es una posición que podemos defender, con consecuencias que se pueden medir.
📓 Los cuadernos complementarios ejecutables están en GitHub: doc-intel/notebooks-vol1.
La ingenua línea de base que este artículo rechaza
El canal ingenuo fragmenta el documento, incrusta cada fragmento, incrusta la pregunta, clasifica por coseno. Esa única señal es opaca y desecha la estructura del documento. Mantenemos el documento como line_df + toc_df y ejecutamos tres señales de recuperación en paralelo (palabra clave en líneas, razonamiento TOC, incrustación de coseno), luego dejamos que un árbitro de LLM clasifique una vez al final con los tres conjuntos de aciertos a la vista.
A continuación se muestran las seis lecciones no enseñadas de este ladrillo.
Lección 1: La recuperación es filtrar, no buscar
Una vez realizado el análisis, la recuperación es un problema de filtrado similar a SQL sobre line_df y toc_df, lo contrario del marco de fragment-embed-cosine-top-k. El cambio es sencillo de expresar: la pregunta tiene columnas, el documento tiene columnas y la recuperación es la unión.
Por qué es importante. Buscar y filtrar no son sinónimos, las dos operaciones tienen mecánicas diferentes. La búsqueda califica a cada candidato según una similitud continua (coseno, BM25), fuerza un límite superior k y siempre devuelve algo, incluso cuando la respuesta no está en el documento. El filtro aplica una condición booleana (line.contains(“X”) , toc.title en […]), retiene todas las filas que coinciden y ninguna más, y puede devolver cero filas cuando el documento no contiene la respuesta. La consecuencia de la auditoría es la mayor parte de la brecha: la condición de un filtro es una línea de código inspeccionable que se ejecuta de la misma manera en seis meses; La clasificación de una búsqueda depende de qué dimensiones de la incorporación importaron, y no se puede reproducir ese juicio sin volver a ejecutar el modelo.
Contraste concreto. El usuario pregunta “¿Qué codificación posicional utiliza el papel?”. Naive RAG incorpora la pregunta, obtiene más de 300 puntos y devuelve el top 5. La serie RAG filtra line_df donde la línea contiene “codificación posicional” (4 resultados), filtra toc_df donde el título de la sección contiene “posicional” (1 sección, 3.5 Codificación posicional) y el árbitro ve ambos, ancla: la línea; alcance: la sección. No se necesita coseno.
→ Artículo 7A: La recuperación es un filtrado, no una búsqueda, establece el modelo mental.
Lección 2 – Ancla y contexto, separados
Te anclas en la única línea que menciona “premium” (preciso) pero pasas toda la sección circundante a la generación (contexto suficiente); combinarlos rompe la precisión y la cobertura en un solo movimiento. Top-k te obliga a elegir: los fragmentos pequeños pierden contexto, los fragmentos enormes pierden precisión. Obtenemos ambos manteniéndolos separados.
Contraste concreto. Para una pregunta de definición, el ancla es una línea (“el deducible es la cantidad que el asegurado paga antes de que comience la cobertura”), el alcance es el párrafo que la rodea (tres oraciones de contexto que el LLM necesita para expresar la respuesta). Naive top-k devuelve la línea (sin contexto) o el párrafo (ancla poco clara). La recuperación de series devuelve anclaje + alcance como un par escrito.
→ Artículo 7A: La recuperación es un filtrado, no la búsqueda, que traza la línea entre el ancla y el contexto.
Lección 3: Las incrustaciones son lo último, no lo primero
Las palabras clave siempre se ejecutan (baratas, deterministas); el TOC del propio documento es un método de recuperación de primera clase; Las incrustaciones son la señal final opcional, solo cuando se espera una discrepancia de vocabulario. El reflejo de la era 2024 comienza con las incrustaciones; los dejamos para los casos en los que fallaron las señales más baratas.
Contraste concreto. Una búsqueda objetiva sobre pólizas de seguro: “¿fecha de entrada en vigor?”. Naive RAG se incrusta y devuelve 5 fragmentos. La serie ejecuta la palabra clave en “efectivo” y “fecha” → 1 línea encontrada → listo. Las incrustaciones nunca se ejecutaron. Costo: un pase de expresión regular sobre line_df; unos milisegundos. La búsqueda del coseno de 2 centavos no se realizó.
→ Artículo 7B: Encontrar los anclajes adecuados construye el canal de tres señales.
Lección 4 – Las palabras clave prueban la ausencia; las incrustaciones no pueden
Un cero en la búsqueda de palabras clave significa que la respuesta realmente no está ahí; un cero en la similitud de incrustaciones podría ser ausencia o simplemente palabras diferentes, por lo que las incrustaciones son un refinamiento, no una puerta de decisión. Esta asimetría es el caso de las palabras clave como señal principal en el RAG empresarial.
Contraste concreto. El usuario pregunta “¿este contrato cubre los daños por terremoto?” sobre una política exclusivamente contra inundaciones. La búsqueda de palabras clave “terremoto” no devuelve ninguna coincidencia en line_df. La canalización puede enviarse answer_found = False con confianza. La incrustación de coseno devuelve 5 fragmentos (las líneas temáticas más cercanas sobre desastres naturales) y el LLM, al verlos, puede inferir un sí incorrecto. Las palabras clave salvaron el día.
→ Artículo 7B: Encontrar los anclajes adecuados explica la disciplina de dar prioridad a las palabras clave.
Lección 5: La coocurrencia supera a BM25 en corpus estrechos
BM25 se clasifica por frecuencia de términos, pero la forma de respuesta empresarial es una mención de un tema junto a un valor específico, por lo que los aumentos de coocurrencia y los anclajes de expresiones regulares de alto valor superan a las estadísticas IDF en corpus estrechos. Las suposiciones de las FDI se rompen en un corpus de 20 documentos donde cada término es “raro” según los estándares de Wikipedia.
Contraste concreto. La pregunta es “¿cuál es el monto del deducible?”. BM25 se clasifica según la frecuencia del “deducible”; la línea que aparece 12 veces en una sección del glosario ocupa el primer lugar. La búsqueda de coocurrencia clasifica las líneas que contienen tanto “deducible” como un número; la línea de póliza real (“el deducible es $1000”) ocupa el primer lugar porque coincide con $1000, y el LLM puede extraer el valor limpiamente.
→ Artículo 7B: Encontrar los anclajes adecuados para la coexistencia de medidas contra BM25.
Lección 6: un pase de LLM sobre el TOC
Entregar el toc_df de 20 a 100 filas a un modelo pequeño y preguntar qué secciones responden a la pregunta cuesta una llamada en caché y detecta las paráfrasis (“salir temprano” ≈ “Terminación”) que fallan en la coincidencia de palabras clave.
El razonamiento TOC es una de las señales de recuperación menos utilizadas en la producción de RAG.
Contraste concreto. El usuario pregunta “¿cuándo puedo salir anticipadamente de la póliza?”. La coincidencia de subcadenas al “abandonar” devuelve cero entradas TOC. Una llamada de LLM en el TOC completo (28 filas, cabe en un solo mensaje pequeño) devuelve la sección “Terminación y cancelación”, la paráfrasis correcta. Una llamada LLM en caché, determinista después, y el ancla correcta.
→ El artículo 7B razona sobre el TOC, y el artículo 7C: un LLM como árbitro agrega al árbitro.
Las seis lecciones comparten un movimiento: rechazar el reflejo de coseno integrado y, en su lugar, tratar la recuperación como un filtrado en tablas estructuradas. Las palabras clave siempre aparecen porque demuestran ausencia; el TOC es una señal de primera clase porque el documento ya declaró su estructura; Las incrustaciones son el refinamiento opcional, no la base. Las inmersiones profundas (7A, 7B, 7C, 7bis) incluyen código ejecutable en documentos reales; esta pieza es el catálogo que apunta a ellos.
En todos los sectores y profesiones
El mismo patrón de recuperación de tres señales (palabra clave en line_df + razonamiento en toc_df + incrustación alternativa) se aplica en todos los dominios. El vocabulario y la profundidad del TOC difieren; la jerarquía de señales no. Cinco sectores debajo, un patrón de recuperación, un seguimiento de auditoría por llamada.
Las incrustaciones se activan sólo en la fila médica, donde el vocabulario del usuario (“taquicardia”) difiere del del documento (“frecuencia cardíaca rápida”). Las otras cuatro filas se resuelven completamente en palabra clave + TOC. Las palabras clave demuestran su ausencia (Lección 4), el TOC capta las paráfrasis (Lección 6) y la división ancla/alcance mantiene la precisión y el contexto separados (Lección 2) en cada fila. El gradiente de costos es real: las cuatro filas resueltas por palabras clave se ejecutan en milisegundos sin tokens LLM; la fila médica paga por un pase de incrustación y una llamada del árbitro.
Fuentes y lecturas adicionales
La literatura convencional sobre recuperación está determinada por búsquedas a escala web y corpus de consumidores más cortos. La postura de la serie supone un corpus de pequeña empresa donde la estructura es conocida y el vocabulario es el activo.
La recuperación es un filtrado, no una búsqueda (Artículo 7A). El artículo publicado sobre modelo mental: recuperación como filtrado en tablas estructuradas. Las incrustaciones no son mágicas (artículo 2). El catálogo de modos de falla publicado para incorporar similitudes. Los rerankers tampoco son mágicos (Artículo 2bis). Cuándo el codificador cruzado da sus frutos y cuándo no.