EstevezAlvarez
Ingeniería de RAG

RAG 3: contexto útil, búsqueda híbrida y reranking

Qué tomaría de Contextual Retrieval para combinar búsquedas y reordenar resultados, y qué revisaría antes de usarlo en producción.

En este artículo

Una frase como “el valor aumentó respecto al año anterior” pierde utilidad cuando se separa de su entidad, periodo y tabla. El método contextual de Anthropic añade una explicación específica del fragmento antes de indexarlo. La idea es razonable, pero mi primera pregunta sería si esos datos ya existen como encabezados y metadatos verificables. No pagaría por generar lo que puedo extraer de forma fiable.

Tres representaciones para una comparación justa

Compararía el texto original, el texto con contexto extraído y el texto con contexto generado. En la tercera variante guardaría por separado la explicación, el modelo, el prompt, la versión del documento y su estado de revisión. El generador solo recibiría el contenido necesario del documento autorizado; no las respuestas del conjunto de prueba. Una explicación inventada puede mejorar una coincidencia aparente y empeorar la fidelidad.

search_text = verified_heading + "\n" + original_text
# Optional experimental variant:
contextual_search_text = generated_context + "\n" + original_text
# Citations always resolve to the original source.
cache_key = hash(document_version, chunk_id, model_version, prompt_hash)

Este es pseudocódigo de diseño. El prefijo ayuda a buscar; no adquiere autoridad documental. Al responder, la cita debe resolver al pasaje original y su localización. Si el contexto generado afirma un periodo o una entidad que la fuente no respalda, marco el enriquecimiento como inválido y conservo la posibilidad de recuperar sin ese prefijo.

Combinar señales sin sumar escalas incompatibles

Mantendría BM25 como referencia para identificadores y términos exactos, junto con búsqueda densa para similitud semántica. Compararía cada recuperador por separado antes de fusionarlos. RRF combina posiciones; una suma de puntuaciones necesita calibración. Después eliminaría duplicados y probaría reranking sobre un conjunto limitado de candidatos. El presupuesto de tokens y la latencia forman parte de la comparación.

No fijaría veinte pasajes como regla universal. Más candidatos pueden aumentar la recuperación y también incorporar ruido, versiones incompatibles y coste. Ajustaría estos parámetros en desarrollo y congelaría la elección antes del test. Para preguntas que requieren varias evidencias, mediría si llegó el conjunto necesario, no solo algún fragmento relacionado.

Lo que revisaría en el notebook

El cookbook describe nueve bases de código y 248 consultas. Su función llamada pass_at_n calcula la fracción de chunks de referencia recuperados por consulta y luego la media: con varias referencias no es un éxito binario. Además, compara texto exacto y mantiene en el denominador consultas cuyas referencias no pudo localizar. En mi implementación validaría primero las anotaciones y usaría identificadores estables.

Las reducciones de fallo divulgadas en el artículo son relativas, dependen de su evaluación y no equivalen a exactitud de respuestas. Tampoco tomaría precios o nombres de modelos de una página de 2024 como contrato actual. El criterio para adoptar contexto generado sería un beneficio local útil sobre el contexto extraído, sin degradar citas, permisos o coste acordado.

Artículo de ingeniería de Anthropic

Cookbook: implementación y evaluación

Descargar scripts, manifiesto y documentación de la revisión

Volver al índice del blog