cat rag-end-to-end.md

RAG de punta a punta: un tutorial práctico

Qué es, cómo funciona cada pieza, cómo se evalúa, un ejemplo en producción sobre Azure y una comparación de Azure · Google Cloud · código abierto

Idea clave: el valor de RAG no está en “enchufar un vector store”: está en leer bien los documentos, buscar de forma híbrida, reordenar (reranking) y, sobre todo, medir el retrieval y las respuestas por separado.

En las pruebas de Anthropic (2024), agregar contexto a los chunks, BM25 y un reranker redujo en 67% las fallas de recuperación. Las herramientas comerciales de RAG legal alucinan el 17–33% de las veces (Stanford, 2024), y en el benchmark CRAG de Meta (2024) los mejores sistemas RAG industriales responden sin alucinar solo el 63% de las veces. Para medir todo esto, un juez LLM coincide con los humanos más del 80% de las veces (Zheng et al., 2023).

Verifiqué casi todo lo que aparece aquí contra la documentación oficial y los papers citados el 23 de septiembre de 2026. Algunos detalles de herramientas marcados con † vienen de la experiencia general y no los volví a comprobar. Las funciones marcadas como (preview) existen, pero el proveedor todavía no las recomienda para producción. Las siglas se explican la primera vez que aparecen y están reunidas en el glosario del final; los papers se citan por su nombre en el texto (SPLADE, ColBERT, RAGAS), con autores, año y enlace en las referencias.

Parte I · Conceptos

1. Qué es RAG, explicado con una biblioteca

RAG (Retrieval-Augmented Generation) significa que, antes de responder, un modelo de lenguaje busca en tus documentos y responde a partir de lo que encontró, citando la fuente.

¿Para qué lo necesitas? Un modelo de lenguaje no conoce los documentos internos de tu empresa, su conocimiento se detiene en una fecha de corte y puede inventar cosas (“alucinar”). Con RAG la respuesta se apoya en documentos concretos que cualquiera puede revisar, y actualizar el conocimiento no obliga a reentrenar el modelo.

La forma más fácil de ver cómo encajan las piezas es pensar en una biblioteca y en alguien que llega al mostrador con una pregunta:

RAG explicado como una biblioteca Un pipeline de izquierda a derecha con siete etapas (documentos, chunks, índice, búsqueda, reranker, modelo y evaluación) asociadas a la metáfora de una biblioteca: los documentos de la biblioteca se cortan en fichas, se catalogan, un bibliotecario los busca, un experto (el reranker) los filtra, un modelo redacta la respuesta y un profesor la califica, con el paso de generación destacado. 1 Biblioteca documentos Tus archivos fuente (PDFs, wikis, políticas) 2 Fichas chunks Documentos cortados en trozos pequeños 3 Catálogo índice Ordena cada ficha por palabra y sentido 4 Bibliotecario búsqueda Trae ~50 fichas candidatas 5 Experto reranker Se queda con las 5 mejores 6 Redactor modelo Escribe la respuesta con citas 7 Profesor evaluación Califica: ¿buscó bien? ¿respondió bien? LEYENDA Recuperación (ingesta → búsqueda → rerank) Generación (paso clave) Paso de datos entre etapas
RAG como una biblioteca: documentos → chunks → índice → búsqueda → reranker → modelo → evaluación
  1. La biblioteca son tus documentos: todo aquello de lo que el sistema puede sacar respuestas, como PDFs, wikis o políticas internas.
  2. Las fichas son los chunks. Nadie relee un libro entero por cada pregunta, así que cada documento se corta en fichas pequeñas, cada una con un trozo de información que se entiende por sí solo.
  3. El catálogo es el índice. Cada ficha se archiva de dos maneras: por las palabras que contiene y por lo que significa. Eso es lo que después permite buscar tanto por palabra clave como por significado.
  4. El bibliotecario es la búsqueda. Cuando llega una pregunta, trae rápido unas 50 fichas que parecen relevantes, sin leerlas a fondo.
  5. El experto es el reranker. Lee la pregunta junto a cada una de esas fichas y se queda con las 5 mejores.
  6. El redactor es el modelo de lenguaje. Solo ahora alguien escribe la respuesta, usando esas 5 fichas y citando la ficha de la que sale cada frase. Si las fichas no contienen la respuesta, lo honesto es decir “no lo sé”.
  7. El profesor es la evaluación. Califica dos cosas por separado: si el bibliotecario trajo las fichas correctas y si la respuesta es fiel a ellas.

El resto del tutorial sigue el mismo orden: preparar los documentos (etapas 1 a 3), búsqueda (4), reranking (5), generación (6) y evaluación (7).

No todos los sistemas RAG tienen las siete etapas. Gao et al. (2023/24) distinguen tres generaciones:

GeneraciónIdea
Naive RAGIndexar → recuperar los k primeros → pegarlos en el prompt
Advanced RAGMejorar lo que pasa antes de buscar (reescribir la pregunta, hacer mejor chunking) y después (rerank, compresión)
Modular RAGPiezas intercambiables; flujos adaptativos, iterativos y agénticos

En términos de la biblioteca, el Naive RAG es un bibliotecario que le pasa las primeras k fichas directamente al redactor, sin el experto de por medio. Este tutorial describe un Advanced RAG, con piezas modulares donde compensan (sección 10).

2. Los tres circuitos de un sistema RAG en producción

Un sistema RAG en producción funciona con tres circuitos. El primero prepara los documentos una sola vez, fuera de línea: fuentes, parsing y chunking, embeddings e índice (etapas 1 a 3 de la biblioteca). El segundo se ejecuta con cada pregunta: búsqueda híbrida, reranker y el modelo que responde con citas (etapas 4 a 6). El tercero evalúa, antes del despliegue con un golden dataset y en producción con muestras del tráfico real, y devuelve mejoras a los otros dos (etapa 7). Las partes II a VI los recorren en ese orden.

Los tres circuitos de un RAG en producción Arquitectura de un RAG con tres circuitos: preparar los documentos (fuentes, parsing y chunking, embeddings, índice), responder cada pregunta (búsqueda híbrida, reranker, modelo con citas) y evaluar con un golden set y muestreo para retroalimentar las mejoras. PREPARAR DOCUMENTOS · OFFLINE RESPONDER · CADA PREGUNTA EVALUAR · ANTES Y EN PRODUCCIÓN CONSULTA TRAZAS MEJORAS Fuentes SharePoint · Blob · Drive Parsing + chunking estructura, títulos, tablas Embeddings texto → vector Índice vectores + BM25 + permisos Usuario pregunta Búsqueda híbrida BM25 + vector · RRF Reranker top 50 → top 5 Modelo con citas respuesta o “no sé” Evaluación golden set · muestreo LEYENDA DESTACADO PROCESO FUENTE ENTRADA FLUJO MEJORA / RETROALIMENTACIÓN
Figura · Los tres circuitos de un RAG en producción

Parte II · Preparar los documentos

3. Leer bien el documento (parsing)

El parsing influye más que cualquier otro paso, y es el que los equipos más descuidan. Si conviertes un PDF a “texto plano”, pierdes los títulos, las tablas se desordenan y cada chunk pierde su contexto.

Parsing: texto plano frente a parsing con estructura Una comparación de antes y después del parsing de documentos. A la izquierda, la extracción a texto plano aplana un PDF y pierde sus títulos y la estructura de la tabla. Una flecha rotulada modelo de layout apunta al panel derecho, donde el parsing que respeta la estructura conserva la jerarquía de títulos como Markdown y mantiene la tabla. modelo de layout EXTRACCIÓN A TEXTO PLANO PDF original, aplanado POLÍTICA DE TELETRABAJO 3. Elegibilidad Cargo Días País Ger 2 ES 3 Vie opcional... • títulos perdidos • la tabla queda en una línea • cada chunk pierde su contexto CON ESTRUCTURA → MARKDOWN Títulos y tabla preservados # Política de teletrabajo ← h1 ## 3. Elegibilidad por país ← h2 ### 3.2 España ← h3 | Cargo | Días/semana | | Gerente | 2 | la tabla sigue siendo tabla → el chunk conserva su ruta de títulos
Parsing: la extracción a texto plano pierde la estructura; el parsing que respeta la estructura conserva títulos y tablas

Los estudios coinciden en esto:

  • Los autores de ColPali (ICLR 2025) “suelen encontrar que optimizar el pipeline de ingesta da mejoras mucho mayores que optimizar el modelo de embeddings”. ColPali mismo se salta la extracción de texto y el chunking, e indexa directamente imágenes de las páginas; en el benchmark ViDoRe obtuvo 81.3 nDCG@5 frente a ~65–67 de los pipelines basados en parsing.
  • En el estudio de Unstructured sobre FinanceBench (2024), hacer chunking por elementos del documento (títulos, tablas) alcanzó 53.2% de exactitud frente a 48.2% con chunks fijos de 512 tokens, y usó la mitad de chunks.
  • Un estudio en turco (2026) encontró que el chunking que tiene en cuenta el layout ayuda mucho más en documentos con tablas que en documentos que solo tienen texto.

Las herramientas habituales son el Document Layout skill (Azure), Document AI Layout Parser (Google) y Docling (IBM, código abierto). La sección 22 las compara.

4. Chunking

El chunking divide cada documento en pedazos pequeños (chunks) que se indexan por separado.

4.1 Las estrategias

EstrategiaCómo divideCosto
Tamaño fijoCada N tokens, con solapamiento opcionalMínimo
RecursivoIntenta dividir por párrafo, luego por línea, luego por oración…Mínimo
Por estructura / páginaPor las secciones, títulos o páginas del documentoBajo (requiere buen parsing)
SemánticoCorta donde cambia el significado entre oraciones, medido con embeddingsMedio
Basado en LLM (“agéntico”)Un modelo decide dónde cortarAlto
ProposicionesUn modelo reescribe el texto como hechos atómicosAlto

4.2 Lo que dice la evidencia: el chunking semántico está sobrevalorado

  • Vectara (2024) se preguntó “Is Semantic Chunking Worth the Computational Cost?” y concluyó que “los costos computacionales del chunking semántico no se justifican con mejoras de rendimiento consistentes”. El chunking de tamaño fijo ganó en los 4 datasets de documentos reales (en HotpotQA, por ejemplo, F1@5 fue 90.59 con fijo vs 87.37 con semántico). El modelo de embeddings importó más que el chunking.
  • Chroma (2024) encontró que la estrategia de chunking mueve el recall hasta un 9%. Su chunker semántico por defecto quedó un poco por debajo del promedio (83.6% de recall), mientras que un chunker recursivo de 200 tokens sin solapamiento llegó a 88.1%. El mejor resultado (91.9%) usó un modelo de lenguaje y costó mucho más.
  • NVIDIA (junio de 2025) obtuvo la mejor exactitud promedio (0.648) y la menor varianza entre datasets con chunking por página.
  • En biomedicina (2026), el chunking semántico ganó +8.4 puntos de F1 en un dataset, pero en los demás el chunking de tamaño fijo “sigue siendo competitivo o mejor”. Depende del dominio.

4.3 Lo que sí funciona: agregar contexto a cada chunk

Chunk sin contexto Chunk con contexto
"| Manager | 2 |"
→ ¿2 qué? ¿dónde?
"Remote Work Policy > 3. Eligibility > 3.2 Spain | Manager | 2 days/week |"
→ se entiende por sí solo

La Contextual Retrieval de Anthropic (sep. 2024) pone a un modelo a escribir 50–100 tokens de contexto y los antepone a cada chunk. Medido como la tasa de fallas de recuperación dentro de los 20 primeros resultados, partiendo de una línea base de 5.7%:

  • contexto solo en los vectores: 3.7% (−35%)
  • contexto en los vectores y en BM25: 2.9% (−49%)
  • todo lo anterior más un reranker: 1.9% (−67%)

El costo, que se paga una sola vez, es de ~$1.02 por millón de tokens de documento con prompt caching. Ten cuidado al citar estas cifras: los tres porcentajes son reducciones respecto a la línea base de 5.7%, así que el aporte propio del reranker es el paso de 2.9% a 1.9%.

El late chunking (Jina, 2024) calcula primero el embedding del documento completo y solo después lo divide, así que cada vector “sabe” de qué documento viene. Mejora nDCG@10 entre +2.7% y +3.6% sin reentrenar.

4.4 Tamaños para empezar

Bhat et al. (2025) sugieren 64–128 tokens para preguntas factuales cortas y 512–1024 tokens para preguntas que necesitan un contexto amplio. Azure recomienda empezar con 512 tokens y 25% de solapamiento, y agregar el título del documento a los chunks intermedios.

Un punto de partida razonable: empieza con chunking recursivo o por sección/página de 256–512 tokens, no partas las tablas, agrega contexto y ajusta midiendo (Parte VI).

5. Convertir el texto en vectores (embeddings)

Un embedding es una lista de números que representa el significado de un texto. Los textos con significados parecidos quedan cerca unos de otros:

Los embeddings acercan los significados parecidos Un espacio vectorial conceptual. Los puntos de laptop barata y notebook económica quedan juntos porque significan casi lo mismo, mientras que política de vacaciones queda lejos porque no tiene relación. La distancia en el espacio representa la diferencia de significado, no las palabras compartidas. ESPACIO DE EMBEDDINGS · DISTANCIA = DIFERENCIA DE SENTIDO cerca "laptop barata" "notebook económica" lejos "política de vacaciones" Significado parecido, vecinos cercanos Sin relación, lejos, aunque comparta palabras
Los embeddings acercan los significados parecidos y alejan los textos que no tienen relación
TipoQué esEjemplos
DensoCientos o miles de números, todos con valortext-embedding-3 (OpenAI/Azure), gemini-embedding-001, Qwen3-Embedding, BGE-M3
Disperso aprendidoLista de términos (casi todos en cero) con pesos, ampliada con términos relacionadosSPLADE, ELSER (Elastic), modo sparse de BGE-M3
MultivectorUn vector por token; se compara token a tokenColBERT, ColPali

Mide con tus propios datos. Los leaderboards públicos (como MTEB) cambian cada mes y no siempre reflejan tu dominio. Y fija la versión del modelo: si mezclas vectores de modelos distintos, las búsquedas dejan de tener sentido.

6. Índice y permisos

El índice guarda cada chunk con su texto, su vector y sus metadatos:

Campo(s) en el índicePara qué sirve
id, content, content_vectorel texto del chunk y su embedding
title, section, page, source_urlde dónde viene
allowed_groupsgrupos que pueden verlo
last_modifiedvigencia

Sin allowed_groups y un filtro de seguridad en cada búsqueda, un pasante podría recibir chunks de documentos del comité ejecutivo.

Parte III · Recuperación

7. BM25: búsqueda por palabras clave

BM25 es el algoritmo clásico de búsqueda por palabras clave (léxica) y el que viene por defecto en Elasticsearch, OpenSearch y Azure AI Search. Funciona sobre un índice invertido, que se parece al índice alfabético al final de un libro:

TérminoDocumentos donde aparece (postings)
"remote work"doc3, doc7, doc12
"manager"doc7, doc9
"spain"doc7, doc12, doc15

El puntaje tiene tres partes:

IngredienteIdeaEjemplo
Frecuencia del términoMás apariciones = más puntos, pero con saturación (parámetro k1, 1.2 por defecto en Elasticsearch †)3 veces > 1 vez, pero 20 veces ≈ 10 veces
Rareza del términoLas palabras raras valen más“ORA-00942” vale mucho; “de” casi nada
Largo del documentoUn texto corto que contiene la palabra puntúa más que uno largo (parámetro b, 0.75 por defecto †)Un párrafo específico le gana a un manual entero

BM25 es rápido, no necesita modelo, se puede explicar y es excelente para términos exactos como códigos, siglas y nombres propios. Su debilidad son los sinónimos: “laptop barata” no encuentra “notebook económica”.

8. Búsqueda semántica: por significado

8.1 Vectores densos (búsqueda de vecinos más cercanos)

Aquí la pregunta se convierte en un vector y recuperas los chunks más cercanos. Hacerlo rápido sobre millones de vectores requiere un índice aproximado, normalmente HNSW (un grafo de vecinos).

La búsqueda densa entiende sinónimos, paráfrasis e idiomas distintos. En cambio, es una caja negra (no puedes explicar por qué algo coincidió), puede confundir códigos casi idénticos (ORA-00942 vs ORA-00943) y usa más memoria. La cuantización reduce la memoria comprimiendo los números, por ejemplo a 8 bits o a binario.

8.2 Disperso aprendido (SPLADE, ELSER)

El disperso aprendido (learned sparse) queda entre los dos. Un modelo amplía el texto con términos relacionados y sus pesos, y luego la búsqueda corre sobre un índice invertido, como con BM25:

"cheap laptop" → { laptop: 2.1, notebook: 1.8, computer: 1.2, cheap: 1.9, budget: 1.5, price: 0.9 }

Es más fácil de explicar que los vectores densos y aun así encuentra sinónimos. El problema es que depende del idioma del modelo (ELSER se recomienda solo para inglés) y tiene un límite de tokens (ELSER codifica los primeros 512 tokens de cada campo).

8.3 Cuál gana

ConsultaBM25DensoDisperso aprendido
“laptop barata” → doc con “notebook económica”NoSíSí
“error ORA-00942” → doc con ese códigoSíPoco confiableSí
“¿puedo trabajar desde casa?” → doc con “teletrabajo”NoSíSí, si el idioma está soportado
Explicar por qué coincidióSíNoEn parte
CostoMínimoModelo + memoriaModelo

Ninguno gana siempre, y por eso se combinan.

9. Búsqueda híbrida y RRF

Búsqueda híbrida: dos búsquedas, una fusión RRF y un reranker La pregunta se busca en paralelo con BM25 y con vectores; RRF fusiona por posición el top 50 de cada lista, un reranker los reordena y los 5 mejores chunks llegan al modelo. TOP 50 TOP 50 FUSIONA REORDENA RRF solo usa posiciones: premia el acuerdo entre las dos listas. Pregunta BM25 palabras exactas índice invertido Vector significado HNSW RRF 1/(60 + posición) Reranker lee pregunta + chunk Top 5 al modelo LEYENDA Entrada Paso de búsqueda Fusión
Figura · Búsqueda híbrida: dos búsquedas, una fusión RRF y un reranker

9.1 El problema

Las dos búsquedas devuelven puntajes en escalas incompatibles:

PosiciónBM25 (sin límite superior)Vector (coseno 0.33–1 en Azure)
1doc_B → 12.4doc_A → 0.89
2doc_A → 9.1doc_C → 0.87
3doc_D → 3.2doc_B → 0.81

Sumar 12.4 + 0.81 tiene tanto sentido como sumar euros y kilos.

9.2 La solución: RRF (Reciprocal Rank Fusion)

RRF ignora los puntajes y usa solo la posición de cada documento en cada lista:

RRF(doc) = Σ  1 / (k + position of doc in that list)      with k = 60 typically
       over each list

Tomemos los mismos rankings de arriba:

PosiciónBM25Vector
1doc_Bdoc_A
2doc_Adoc_C
3doc_Ddoc_B
DocAporte de BM25Aporte del vectorTotalFinal
doc_A1/62 = 0.016131/61 = 0.016390.032521
doc_B1/61 = 0.016391/63 = 0.015870.032262
doc_C01/62 = 0.016130.016133
doc_D1/63 = 0.0158700.015874
Ejemplo de RRF con k = 60: puntaje por documento Puntaje RRF final de cuatro documentos: doc_A 0.03252 y doc_B 0.03226 aparecen en ambas listas y superan con claridad a doc_C 0.01613, solo vectorial, y a doc_D 0.01587, solo BM25. 0.000 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040 PUNTAJE RRF = Σ 1/(60 + POSICIÓN) doc_A 0.03252 alto en ambas listas doc_B 0.03226 doc_C 0.01613 solo vectorial doc_D 0.01587 solo BM25 Posiciones, BM25: B, A, D · Vector: A, C, B LEYENDA Ganador: consenso entre listas Otros documentos
Figura · Ejemplo de RRF con k = 60: puntaje por documento

doc_A gana porque está arriba en las dos listas. RRF premia el acuerdo entre los dos métodos.

9.3 ¿Por qué k = 60?

Posición 1Posición 2Diferencia
k = 01.0000.500el doble: ser 1.º en una sola lista domina
k = 600.01640.0161casi igual: lo que cuenta es quedar bien en varias listas

El valor viene del paper original (Cormack, Clarke y Büttcher, SIGIR 2009), donde se eligió de forma empírica, y Azure AI Search documenta que funciona mejor con valores pequeños como 60.

9.4 Ventajas, límites y variantes

RRF no necesita calibrar escalas ni entrenar nada, y acepta N listas (BM25, varios vectores, varias reformulaciones de la pregunta). Tiene dos debilidades. Ignora la magnitud, así que ser primero “por mucho” vale lo mismo que ser primero “por poco”. Y una lista mala cuenta igual: si la búsqueda vectorial devuelve basura, esa basura también suma puntos.

Hay dos variantes comunes:

  • El RRF ponderado le da más peso a una de las listas (por ejemplo, la vectorial ×2). Está disponible en Azure (vector weighting), en el EnsembleRetriever de LangChain † y en Google Vector Search con rrf_ranking_alpha.
  • La combinación lineal normaliza los puntajes y los suma con pesos. Aprovecha la magnitud, pero hay que calibrarla con datos. Ejemplos son el retriever linear de Elasticsearch y DBSF en Qdrant †.

Ten en cuenta que RRF no es un reranker. Solo fusiona listas, y el reranker viene después.

10. Estrategias avanzadas de recuperación

TécnicaQué haceEvidencia clave
Reescritura con historialConvierte “¿y cuántos días?” en una pregunta completa usando el chat anteriorPráctica estándar
HyDEUn modelo escribe una respuesta hipotética y se busca con ellaCompite con retrievers entrenados, sin necesitar etiquetas (Gao et al., 2022)
Multi-query / RAG-FusionVarias reformulaciones de la pregunta, fusionadas con RRFMás cobertura; riesgo de desviarse del tema
Step-backPrimero pregunta algo más general+27% en TimeQA, +7% en MuSiQue (Google DeepMind)
DescomposiciónDivide una pregunta compleja en subpreguntasBase de la búsqueda agéntica
RAPTOR / documento padreResúmenes jerárquicos; busca por chunk pequeño y devuelve el grandeRAPTOR + GPT-4: +20% absoluto en QuALITY
GraphRAGGrafo de entidades + resúmenes por comunidadMejora las preguntas globales (“¿qué temas se repiten?”). LazyGraphRAG indexa al 0.1% del costo y consulta >700× más barato. No siempre gana: en búsquedas puntuales el RAG clásico suele igualarlo o superarlo (Han et al., 2025/26; HippoRAG 2)
Adaptativo (Self-RAG, Corrective RAG, Adaptive-RAG)Decide cuándo buscar y cuánto, y corrige si la búsqueda salió malAdaptive-RAG enruta según la complejidad de la pregunta
Agéntico / “Deep Research”Búsqueda iterativa entrenada con aprendizaje por refuerzoSearch-R1: +41% (7B) sobre el RAG de base; OpenAI Deep Research tarda de 5 a 30 minutos por tarea
Contexto largo vs RAG¿Meter todo en el prompt?Los modelos rinden peor cuando la información está en medio del contexto (“Lost in the Middle”); recuperar demasiado empeora la respuesta; lo eficiente es enrutar cada consulta (Self-Route), y ninguna opción gana siempre (LaRA)

11. Caso de estudio: Elasticsearch

Elasticsearch tiene cuatro piezas “semánticas” distintas, y es fácil confundirlas:

Elasticsearch: tres enfoques de recuperación sobre un tipo de campo Tres enfoques lado a lado en Elasticsearch, A vectores densos kNN, B disperso aprendido con ELSER y C reranking semántico, se apoyan en un tipo de campo compartido, D semantic_text, que divide el texto en chunks, genera los embeddings automáticamente y alimenta los enfoques denso y de reranking semántico. A Denso (kNN) campo dense_vector consulta knn (HNSW) B Disperso aprendido ELSER · campo sparse_vector expande términos, no sinónimos C Reranking semántico text_similarity_reranker / RERANK en ES|QL D tipo de campo semantic_text hace el chunking y genera los embeddings solo, la opción por defecto más sencilla, que alimenta A y C LEYENDA Enfoque de recuperación Tipo de campo compartido que los alimenta
Elasticsearch: tres enfoques de recuperación (A·B·C) sobre el campo compartido semantic_text (D)
  • A. Denso: dense_vector + consulta knn, con cuantización int8, int4 y BBQ. Puedes usar E5 (multilingüe), Jina (a través del Elastic Inference Service) o modelos externos (OpenAI, Azure OpenAI, Cohere, Bedrock, Vertex AI, Hugging Face).
  • B. ELSER expande términos. Lo que aporta son asociaciones aprendidas, no sinónimos. En el benchmark BEIR de la propia Elastic mejora nDCG@10 sobre BM25 en un 18% en promedio (10 victorias, 1 empate, 1 derrota). Se recomienda para inglés, lee 512 tokens por campo y requiere una suscripción de pago.
  • C. Reranker: el retriever text_similarity_reranker o el comando RERANK en ES|QL.
  • D. semantic_text (GA desde la versión 9.0). Si no fijas inference_id, los índices nuevos pueden usar otro modelo después de actualizar de versión, así que fija siempre el modelo en producción.
Elasticsearch: árbol de retrievers para búsqueda híbrida con reranker Tres niveles anidados: el retriever externo text_similarity_reranker reordena el top 50 con un modelo de rerank; dentro, rrf fusiona dos retrievers standard: match con BM25 sobre content y semantic sobre un campo semantic_text. RETRIEVER EXTERNO · RERANK text_similarity_reranker reordena el top 50 con un modelo de rerank · inference_id FUSIÓN rrf rank_window_size 50 · rank_constant 60 RETRIEVER HOJA standard · match BM25 sobre el campo content RETRIEVER HOJA standard · semantic Denso o ELSER campo semantic_text Alternativa a rrf: el retriever linear (minmax / l2_norm)
Figura · Elasticsearch: árbol de retrievers para búsqueda híbrida con reranker

Así se ve una búsqueda híbrida con reranker en una sola llamada:

{
  "retriever": {
    "text_similarity_reranker": {
      "retriever": {
        "rrf": {
          "retrievers": [
            { "standard": { "query": { "match":    { "content": "remote work days manager Spain" } } } },
            { "standard": { "query": { "semantic": { "field": "content_semantic",
                                                     "query": "remote work days manager Spain" } } } }
          ],
          "rank_window_size": 50,
          "rank_constant": 60
        }
      },
      "field": "content",
      "inference_id": "my-rerank-endpoint",
      "inference_text": "remote work days manager Spain",
      "rank_window_size": 50
    }
  }
}

También puedes fusionar con el retriever linear (normalizadores minmax o l2_norm) o, en ES|QL, con FORK + FUSE (RRF o LINEAR) + RERANK. En el formato multi-field, Elastic normaliza los campos léxicos y los semánticos para que cada grupo aporte el 50%.

Ojo con el vocabulario. En Elastic, “semantic search” significa buscar con embeddings; en Azure, el “semantic ranker” es un reranker.

Parte IV · Reranking

12. Reranking

12.1 Qué es

Un reranker toma los ~50–150 candidatos de la búsqueda y los reordena leyendo juntos la pregunta y cada chunk. Eso es más preciso que comparar vectores, pero más lento, así que solo se aplica a unos pocos candidatos.

Embeddings (bi-encoder) vs. reranker (cross-encoder) El bi-encoder convierte la pregunta y el chunk en vectores por separado y compara su distancia, rápido para millones de chunks; el cross-encoder lee juntos la pregunta y el chunk y da un puntaje de relevancia preciso para 50–150 candidatos. BI-ENCODER · BÚSQUEDA CROSS-ENCODER · RERANKER EMBEDDING EMBEDDING PUNTAJES Pregunta Chunk Vector de pregunta Vector del chunk precalculado Distancia entre vectores Pregunta + chunk juntos Modelo reranker cross-encoder Relevancia Rápido Precalculable Millones de chunks Preciso Se calcula por par Solo 50–150 candidatos LEYENDA Entrada Cálculo Precalculado Reranker
Figura · Embeddings (bi-encoder) vs. reranker (cross-encoder)

La arquitectura típica tiene dos etapas: una búsqueda híbrida (que prioriza la cobertura), luego un reranker sobre 100–150 candidatos y, al final, entre 10 y 20 chunks que pasan al modelo que escribe la respuesta.

12.2 Tipos

TipoEjemplosNota
Cross-encoder clásicomonoBERT, bge-reranker-v2-m3monoBERT: +27% en MRR@10 en MS MARCO (2019)
Modelo de lenguaje como rerankerRankGPT, RankZephyr (código abierto), SetwiseRankZephyr iguala o supera a GPT-4
Reranker con razonamiento (2025–26)Rank1, Rank-R1, ReasonRankEn BRIGHT (búsqueda que requiere razonamiento), el mejor modelo de MTEB cae de 59.0 a 18.3; razonar sobre la pregunta suma hasta +12.2
Interacción tardíaColBERTPunto intermedio: ~100× más rápido que un reranker BERT

12.3 Modelos destacados (verificados)

ModeloOrganización / fechaLicenciaDato
Rerank 4 Pro / FastCohere, dic. 2025Servicio de pago#2 en el leaderboard independiente de Agentset (1627 puntos Elo vs ~1457 de v3.5)
zerank-2ZeroEntropyPesos abiertos#1 en Agentset
rerank-2.5Voyage (MongoDB), ago. 2025Servicio de pagoContexto de 32K, sigue instrucciones
Qwen3-Reranker 0.6/4/8BAlibaba, jun. 2025Apache 2.069.76 en MTEB-R (4B) vs 57.03 de bge-v2-m3
jina-reranker-v3.5Jina, jul. 2026No comercial63.20 en BEIR con 0.6B parámetros
mxbai-rerank-large-v2Mixedbread, mar. 2025Apache 2.057.49 en BEIR
Semantic rankerMicrosoft (Azure AI Search)Servicio administradoReordena el top 50, puntaje de 0 a 4
Ranking APIGoogleServicio administradoHasta 1000 chunks por llamada, puntaje de 0 a 1

12.4 Reglas prácticas

Un reranker es la mejora más barata y más probada que puedes hacer. En las cifras de Anthropic, agregar solo eso lleva la tasa de fallas de 2.9% a 1.9%.

Pero el reranker solo reordena lo que la búsqueda encontró. Si el documento correcto no está entre los candidatos, no te puede salvar, y por eso primero se mide la cobertura de la recuperación (recall).

Lo que hoy distingue a unos rerankers de otros es que siguen instrucciones: les puedes dar reglas de negocio como “prioriza el contenido reciente”. Cada proveedor dice ser el mejor, así que mide con tus propios datos.

Algunos complementos valen la pena. MMR elimina chunks redundantes. La compresión con LongLLMLingua da +21.4% de calidad con ~4× menos tokens. Y la posición en el prompt importa: pon lo más relevante al principio o al final (“Lost in the Middle”).

Parte V · Generación y guardrails

13. Generación con citas y guardrails

El prompt se ve así:

System:   Answer ONLY from the context. Cite every claim as [n].
          If the context does not contain the answer, say "I don't know".
Context:  [1] Remote Work Policy §3.2 Spain, p. 4: "Manager: 2 days/week..."
          [2] 2026 Annex, p. 1: "...starting January 2026, 3 days for..."
Question: remote work days for a manager in Spain

Los guardrails actúan antes, durante y después de la generación:

  1. Antes, detectar intentos de manipular el modelo (“jailbreak” o prompt injection).
  2. Durante, si el reranker no deja ningún chunk por encima del umbral, responder “No encontré esa información” en vez de inventar algo.
  3. Después, verificar que cada oración de la respuesta esté respaldada por los chunks. Si la verificación falla, regenerar o responder con cautela.

Parte VI · Evaluación

14. Dos pruebas separadas

Dos pruebas: ¿recuperó bien? ¿respondió bien? Matriz de 2×2 que cruza si la recuperación encontró los documentos correctos con si la respuesta fue buena, y nombra la acción para cada caso; la prioridad es arreglar primero la recuperación cuando las dos fallan. 01 · RECUPERACIÓN NO / RESPUESTA SÍ Suerte El modelo lo sabía de memoria. Peligroso. 02 · RECUPERACIÓN SÍ / RESPUESTA SÍ Todo bien Mantenlo y monitorea. 03 · RECUPERACIÓN NO / RESPUESTA NO Arregla primero la recuperación Chunking, híbrida, reranker, número de resultados. 04 · RECUPERACIÓN SÍ / RESPUESTA NO Arregla el prompt o el modelo Alucina o ignora el contexto. SÍ Respuesta: ¿respondió bien? NO NO SÍ Recuperación: ¿encontró los documentos correctos? LEYENDA Prioridad: empieza aquí Otros casos
Figura · Dos pruebas: ¿recuperó bien? ¿respondió bien?

Si solo miras la respuesta final, no sabes qué arreglar. Microsoft llama process evaluation a la evaluación del paso de recuperación y system evaluation a la evaluación de la respuesta.

15. El golden dataset (la “clave de respuestas”)

El golden dataset es un conjunto de 100 a 300 preguntas, cada una con su respuesta correcta y los documentos que deberían aparecer:

{"query": "Remote work days, manager, Spain?",
 "ground_truth": "2 days per week; 3 from January 2026 according to the annex",
 "relevant_docs": [{"document_id": "teletrabajo_p4", "query_relevance_label": 4},
                   {"document_id": "anexo2026_p1",  "query_relevance_label": 3}]}
De dónde salen las preguntasPor qué
Logs de preguntas realesEs lo que la gente pregunta de verdad
Expertos del negocio (recursos humanos, legal)Casos difíciles y trampas
Generación sintética (RAGAS, simuladores de los proveedores de nube)Cobertura rápida, pero siempre con revisión humana
Preguntas sin respuesta en los documentosComprueban que el sistema diga “no sé” en vez de inventar

16. Métricas de recuperación, con números

Digamos que para una pregunta los documentos correctos son A y C, y el buscador devolvió [B, A, D, C, E].

Posición12345
DevueltoBADCE
¿Correcto?✗✓✗✓✗
MétricaPregunta que respondeCálculoValor
Recall@3 (cobertura)¿Cuántos de los correctos aparecen en el top 3?1 de 20.50
Recall@5¿Y en el top 5?2 de 21.00
Precision@5 (precisión)De lo que traje, ¿cuánto sirve?2 de 50.40
MRR (posición del primer acierto)¿Qué tan arriba está el primero correcto?1/20.50
nDCG@5 (calidad del ranking)¿Están los correctos lo más arriba posible?Real = 1/log₂3 + 1/log₂5 = 1.06; ideal = 1 + 1/log₂3 = 1.630.65

Estos números te dicen dónde buscar. Si Recall@50 es bajo, el problema está en la recuperación (chunking, embeddings, falta de BM25), y el reranker no lo va a arreglar. Si Recall@50 es alto pero nDCG@5 es bajo, el problema está en el reranker.

17. Métricas de respuesta, con números

Supón que el sistema responde: “Tienes 2 días por semana [1], 3 a partir de enero de 2026 [2], y puedes elegir los viernes.”

Afirmación en la respuesta¿La respaldan los chunks?
"2 days/week"✓
"3 from January 2026"✓
"you can choose Fridays"✗ (inventado)
MétricaPreguntaResultado
Groundedness / Faithfulness (el lado de la precisión)¿Todo lo que dijo está en los chunks?2/3 = 0.67 ✗ alucinación
Completeness / Answer correctness (el lado de la cobertura)¿Dijo todo lo que dice la respuesta correcta?2/2 = 1.0 ✓
Relevance¿Responde lo que se preguntó?✓
Citas correctas¿Cada [n] respalda su oración?✓

Microsoft lo plantea igual: la fidelidad al contexto es el lado de la precisión (no agregar nada) y la completitud es el lado de la cobertura (no dejar fuera nada crítico).

Otra opción es la evaluación por “nuggets” (TREC 2024): defines los hechos atómicos que debe contener una buena respuesta y cuentas cuántos aparecen.

18. El LLM como juez

Nadie revisa 10,000 respuestas a mano, así que otro modelo hace de profesor. Ese juez tiene sesgos conocidos. Prefiere la primera opción que ve (posición), prefiere las respuestas largas (verbosidad) y prefiere el texto de su propia familia de modelos (autopreferencia).

Para montar un juez, apóyate en esto:

  1. Una persona etiqueta 50–100 casos.
  2. Mide el acuerdo entre juez y humano (kappa de Cohen, exactitud, F1).
  3. El juez debe ser de una familia de modelos distinta a la del generador.
  4. El juez debe explicar su puntaje.
  5. Puntuar afirmación por afirmación (RAGChecker) o por nuggets es mejor que dar un solo puntaje global.

¿Cuánto puedes confiar en él? GPT-4 como juez alcanza más del 80% de acuerdo con humanos, el mismo nivel que entre dos humanos (Zheng et al., 2023). En TREC 2024, el acuerdo perfecto entre humanos y GPT-4o fue de 56%, y de 72% cuando el humano corregía la etiqueta del modelo. Así que el juez LLM es confiable para comparar sistemas y menos confiable pregunta por pregunta. ARES combina unos cientos de etiquetas humanas con el juez automático para producir intervalos de confianza estadísticamente válidos.

19. Evaluación antes del despliegue y en producción

El ciclo de evaluación continua Ciclo de seis pasos en sentido horario: golden dataset, evaluación offline, quality gate, despliegue, evaluación continua y fallas reales con votos de pulgar abajo, que vuelven a alimentar el golden dataset; en el centro, las métricas de recuperación y de respuesta. MÉTRICAS MUESTRAS NÚCLEO COMÚN Métricas de retrieval y de respuesta Golden dataset 100–300 preguntas + respuestas + documentos Evaluación offline recall@k · nDCG · faithfulness Quality gate integración continua bloquea si hay regresión Despliegue Evaluación continua muestra de tráfico real sin respuesta esperada Fallas reales y pulgares abajo LEYENDA Paso del ciclo Escribe en las métricas Quality gate
Figura · El ciclo de evaluación continua

Un quality gate en integración continua podría exigir que Recall@10 no baje más de 2 puntos, que faithfulness se mantenga ≥ 95% y que las respuestas “no sé” correctas se mantengan ≥ 90%. Esos umbrales son solo ejemplos; los reales los fija el negocio. En producción se muestrea un porcentaje del tráfico real y se evalúa sin respuesta de referencia (faithfulness, answer relevance, context relevance), junto con los votos de pulgar arriba/abajo, la latencia y el costo.

Microsoft recomienda un barrido de parámetros: probar combinaciones y medir cuál gana. Los números de abajo son ilustrativos, no resultados reales:

ConfiguraciónRecall@10nDCG@5FaithfulnessLatencia
solo vector0.710.580.900.8 s
híbrida0.840.660.920.9 s
híbrida + rerank ← elegida0.840.790.951.3 s
+ agéntico (solo preguntas complejas)0.880.810.953.5 s

DeepEval sugiere no pasar de unas 5 métricas por aplicación. MLflow / Databricks recomiendan usar los mismos evaluadores en desarrollo y en producción. Y en producción solo puedes usar métricas que no necesiten una respuesta correcta.

20. Por qué importa: la alucinación en sistemas reales

EstudioResultado
Stanford (2024): herramientas legales comerciales con RAGAlucinan entre 17% y 33% de las veces
CRAG (Meta, 2024)Modelo solo: ≤34% de exactitud; RAG simple: 44%; los mejores sistemas RAG industriales responden sin alucinar solo el 63% de las veces
FinanceBench (2023)GPT-4-Turbo con recuperación falló o se negó a responder en el 81% de los casos
ALCE (2023)Incluso los mejores modelos no tienen respaldo completo para sus citas el 50% de las veces
Vectara (leaderboard del 2026-09-22, tarea de resumen)Tasas de alucinación entre 1.8% y 24.2% según el modelo (GPT-4o 9.6%, Gemini 2.5 Pro 7.0%, Claude Sonnet 4.5 12.0%)
FaithBench (2024)Los mejores detectores de alucinación rondan el 50% de exactitud en los casos difíciles

Varias de estas cifras son de 2023–2024 y vienen de modelos más viejos, así que cítalas siempre con año y modelo.

Parte VII · Un ejemplo en producción sobre Azure

21. Copiloto de políticas internas, paso a paso

El caso es una empresa de 20,000 empleados, con documentos de recursos humanos, legal y compras en SharePoint y Blob Storage. Necesita permisos por usuario, citas en cada respuesta y un “no sé” cuando no hay información.

21.1 Arquitectura

Copiloto de políticas internas en Azure Arquitectura en Azure de un copiloto de políticas: la ingesta toma los documentos de SharePoint o Blob mediante un indexador con un skillset y los lleva a Azure AI Search; la app responde al usuario con búsqueda, Azure OpenAI y Content Safety; Application Insights y Foundry evalúan y observan. INGESTA CONSULTA EVALUACIÓN Y OBSERVABILIDAD DOCUMENTOS INDEXA PREGUNTA GENERA BUSCA EMBEDDINGS VERIFICA TRAZAS MUESTRAS SharePoint / Blob Storage PDF · DOCX · PPTX Indexador + skillset Document Layout skill chunking · embeddings Azure AI Search BM25 + vector · RRF semantic ranker · allowed_groups Usuario login con Entra ID App Container Apps / App Service Azure OpenAI GPT · text-embedding-3 Content Safety detección de manipulación † fidelidad (groundedness) Application Insights trazas OpenTelemetry Evaluación en Foundry evaluadores evaluación continua LEYENDA CLAVE SERVICIO EXTERNO ALMACÉN ENTRADA FLUJO LLAMADA AL MODELO
Figura · Copiloto de políticas internas en Azure

Si conoces el stack LangChain + Chroma/Qdrant, las piezas se corresponden así:

Stack de código abiertoEn Azure
Loaders de LangChain + text splitterIndexador + Document Layout skill + chunking
Chroma / QdrantAzure AI Search (vectores + BM25 + filtros en un solo servicio)
Reranking con un modelo de lenguajeSemantic ranker (y opcionalmente un modelo de lenguaje detrás)
Tu propia reescritura de consultasReescritura de consultas del semantic ranker (preview) o agentic retrieval
GraphRAGMicrosoft GraphRAG como índice aparte, solo para preguntas globales

21.2 Una pregunta, de punta a punta

Ana, gerente en Madrid, preguntó antes en el chat por su contrato. Ahora escribe “entonces, ¿cuántos días puedo teletrabajar?”

Una pregunta de punta a punta: “entonces, ¿cuántos días puedo teletrabajar?” Secuencia en la que la app reescribe la pregunta de Ana con Azure OpenAI, recupera chunks con búsqueda híbrida y el semantic ranker en Azure AI Search, genera una respuesta con citas y la verifica con Content Safety antes de responder con citas o “no sé”. pregunta + historial reescribir la pregunta «días teletrabajo gerente España» búsqueda híbrida + permisos RRF (k=60) + semantic ranker top 50 → score 0–4 5–10 chunks con score ≥ 2 generar con citas [n] borrador con citas verificar fidelidad al contexto respaldada / no respaldada respuesta citada o «no sé» Ana usuaria App Azure OpenAI Azure AI Search Content Safety LEYENDA LLAMADA RETORNO PASO CLAVE: VERIFICAR FIDELIDAD
Figura · Una pregunta de punta a punta: “entonces, ¿cuántos días puedo teletrabajar?”
  1. El modelo reescribe la pregunta usando el historial del chat: “días de teletrabajo permitidos para un gerente en España”.

  2. BM25 y la búsqueda vectorial corren en paralelo y se fusionan con RRF (k=60). Antes de puntuar, el filtro de seguridad elimina lo que Ana no tiene permiso de ver.

  3. El semantic ranker toma solo el top 50 y los puntúa de 0 a 4:

    PuntajeSignificado
    4Responde por completo
    3Relevante pero incompleto
    2Parcial
    1Relacionado, responde muy poco
    0Irrelevante

    Los chunks con puntaje < 2 se descartan. Si no queda ninguno, la respuesta es “No encontré esa información”. Microsoft advierte que la distribución de puntajes puede variar un poco, así que los umbrales no deberían ser demasiado finos.

  4. El modelo genera la respuesta con citas, usando la estructura de prompt de la sección 13.

  5. Una verificación de fidelidad comprueba que cada oración esté respaldada por los chunks. Si falla, la respuesta se regenera o se da con cautela.

Una pregunta compleja (“compara el teletrabajo en España vs México y dime cuál aplica si me mudo”) va al agentic retrieval de Azure AI Search, que la divide en subconsultas, las ejecuta en paralelo, reordena cada una con el semantic ranker y combina los resultados. La planificación de consultas y la síntesis de respuestas basadas en LLM todavía están en preview.

Una pregunta global (“¿qué temas se repiten en todas las políticas de 2026?”) es donde GraphRAG vale la pena.

21.3 Evaluación en Azure (Microsoft Foundry)

EvaluadorTipoNecesita respuesta correctaEstado
Document RetrievalRecuperación: NDCG, XDCG, Fidelity, Max Relevance, HolesSí (etiquetas de relevancia)GA
RetrievalRecuperación, juzgada por un modelo de lenguaje (escala 1–5)NoGA
GroundednessRespuesta: fidelidad al contextoNoGA
Groundedness ProFidelidad estricta con Content Safety (true/false)No(preview)
RelevanceRespuesta: ¿responde la pregunta?NoGA
Response CompletenessRespuesta: ¿deja fuera algo crítico?Sí(preview)

Los puntajes usan una escala de 1 a 5 y aprueban con 3 por defecto. La evaluación continua corre sobre muestras de tráfico real (porcentaje configurable, hasta 1000 solicitudes por hora) y envía los resultados a Application Insights, vinculados a las trazas.

Parte VIII · Comparación: Azure vs Google Cloud vs código abierto

22. Azure vs Google Cloud vs código abierto

Algunos productos cambiaron de nombre hace poco (verificado el 2026-09-23):

  • En Google, Vertex AI ahora aparece como Gemini Enterprise Agent Platform, Vertex AI Search se está renombrando a Agent Search y Vector Search 2.0 ahora se llama Agent Retrieval.
  • En Microsoft, Azure AI Foundry ahora es Microsoft Foundry.

Fase 1: Preparar los documentos

EtapaQué haceAzureGoogle CloudCódigo abierto
1. FuentesDónde viven los documentosBlob Storage, SharePointCloud Storage, Google DriveSistema de archivos, almacenamiento compatible con S3 (MinIO) †
2. Lectura (parsing)PDF/Word → texto con estructuraDocument Layout skill, que usa el modelo de layout de Document Intelligence y devuelve Markdown por secciónDocument AI Layout Parser: versión estable desde 2024; versiones con Gemini en preview; descripciones de figuras y tablas con Gemini en previewDocling (IBM, MIT), Unstructured, MinerU †, Marker †
3. ChunkingChunks con contextoDocument Layout skill (por sección, o tamaño fijo con solapamiento) y Text Split skillEl Layout Parser hace chunking por estructura y agrega los títulos superiores. RAG Engine permite fijar el tamaño y el solapamientoText splitters de LangChain y LlamaIndex; chunking de Docling †
4. EmbeddingsTexto → númerosAzure OpenAI text-embedding-3-large / -smallgemini-embedding-001 (hasta 3072 dimensiones, 2048 tokens por texto), text-embedding-005 (inglés y código), text-multilingual-embedding-002BGE-M3 (denso + disperso + multivector, más de 100 idiomas), Qwen3-Embedding (Apache 2.0), multilingual-E5
5. ÍndiceBase de datos donde buscarAzure AI Search: vectores, palabras clave y filtros en un solo servicioVector Search / Agent Retrieval, RAG Engine (base de datos administrada, Pinecone o Weaviate) o Agent Search (totalmente administrado)Qdrant, Chroma, Weaviate, Milvus, pgvector, Elasticsearch / OpenSearch †
6. PermisosCada usuario ve solo lo suyoEntra ID + filtro por grupo en el índiceControl de acceso de Google (IAM) + control de acceso por fuente de datos en Agent SearchFiltros de metadatos en la base de datos vectorial †

Fase 2: Responder una pregunta

EtapaQué haceAzureGoogle CloudCódigo abierto
7. ReescrituraPregunta autónoma; dividir las preguntas complejasReescritura de consultas del semantic ranker (preview); búsqueda agéntica con planificación (preview)Agent Search: preguntas de seguimiento y respuestas con búsqueda agénticaMultiQueryRetriever de LangChain, HyDE, transformaciones de consultas de LlamaIndex †
8. Palabras clave (BM25)Coincidencia exactaBM25 integrado en AI SearchVector Search: tú generas el vector disperso (BM25, TF-IDF o SPLADE) y lo subes. Agent Search: administradoBM25 de Elasticsearch/OpenSearch; vectores dispersos en Qdrant; SPLADE
9. SignificadoVecinos más cercanosVectores en AI SearchVector Search / Agent Retrieval (milisegundos incluso con miles de millones de elementos, según Google)Qdrant, Chroma, Weaviate, Milvus, pgvector †
10. FusiónCombinar listasRRF automático (k=60), con un peso configurable para los vectoresRRF con rrf_ranking_alphaRRF en Qdrant †, búsqueda híbrida de Weaviate †, EnsembleRetriever de LangChain †
11. RerankerReordenar leyendo juntos la pregunta y el chunkSemantic ranker: el top 50, puntaje 0–4Ranking API: semantic-ranker-default-004 / -fast-004 (1024 tokens, 25 idiomas, puntaje 0–1, hasta 1000 chunks por llamada). La versión 005 está en preview desde el 1 de septiembre de 2026 y será la predeterminada a más tardar el 1 de octubre de 2026bge-reranker-v2-m3, Qwen3-Reranker (Apache 2.0), mxbai-rerank-v2 (Apache 2.0), ColBERTv2; o un modelo de lenguaje como reranker
12. AgenteBúsquedas encadenadasBúsqueda agéntica / Foundry IQ (la parte del modelo de lenguaje en preview)Agent Development Kit (ADK) + Agent Runtime; agente Gemini Deep ResearchLangGraph, agentes de LlamaIndex †
13. GraphRAGGrafo para preguntas globalesMicrosoft GraphRAG (código abierto) desplegado en Azure; LazyGraphRAG en Microsoft DiscoveryNo se encontró un equivalente administrado (al 2026-09-23)GraphRAG (Microsoft), LightRAG, HippoRAG 2

Fase 3: Generación y guardrails

EtapaQué haceAzureGoogle CloudCódigo abierto
14. Modelo redactorResponder con citasModelos GPT en Azure OpenAI / Microsoft Foundry (también otros modelos en Foundry †)Gemini (familia 3.x); también Claude, Llama, Qwen y otros en Model GardenLlama, Qwen, Mistral, gpt-oss servidos con vLLM u Ollama †
15. Protección de la entradaBloquear intentos de manipulaciónContent Safety – Prompt Shields †Model ArmorNeMo Guardrails, Llama Guard †
16. Fidelidad a los documentos¿Cada oración está respaldada?Evaluador Groundedness; Groundedness Pro (preview)Check Grounding API: puntaje 0–1 por afirmación + citas, en menos de 500 msHHEM-2.1-Open (Vectara), MiniCheck

Fase 4: Evaluación y monitoreo

EtapaQué haceAzureGoogle CloudCódigo abierto
17. Evaluar la recuperación¿Encontró lo correcto?Document Retrieval (NDCG, XDCG, Fidelity, Holes; necesita etiquetas) y Retrieval (juez, sin etiquetas)Evaluación de la calidad de búsqueda en Agent Search; servicio de evaluación de Agent PlatformRAGAS, DeepEval, RAGChecker, Open RAG Eval (UMBRELA)
18. Evaluar la respuesta¿Fiel, relevante y completa?Groundedness, Relevance, Response Completeness (preview); escala 1–5, aprueba con 3Servicio de evaluación con métricas basadas en rúbricas, un juez configurable y la opción de evaluar al propio juezRAGAS, DeepEval, TruLens (“RAG triad”), ARES (intervalos de confianza)
19. Evaluación continuaEvaluar muestras de tráfico realEvaluación continua de Foundry: muestreo configurable, hasta 1000/hora, resultados en Application InsightsOnline Monitors: cada ~10 min, porcentaje y tope configurables, resultados en Cloud Logging y Cloud MonitoringLangfuse †, Arize Phoenix, MLflow
20. TrazasVer qué pasó en cada pasoApplication Insights / Azure Monitor + OpenTelemetryCloud Trace, Cloud Logging, Cloud Monitoring + OpenTelemetry (atributos gen_ai.)OpenTelemetry + Phoenix / Langfuse †
21. DespliegueDónde corre la appContainer Apps, App Service, AKS (Kubernetes) †Cloud Run, GKE (Kubernetes), Agent RuntimeDocker + Kubernetes, FastAPI †

Resumen en una imagen

EtapaAzureGoogle CloudCódigo abierto
Leer documentosDocument Layout skillDocument AI Layout ParserDocling / Unstructured
Vectorestext-embedding-3gemini-embedding-001BGE-M3 / Qwen3-Embedding
ÍndiceAzure AI SearchVector Search / Agent SearchQdrant / Chroma / Weaviate
FusiónRRF automático (k=60)RRF (rrf_ranking_alpha)RRF (Qdrant, LangChain)
RerankerSemantic ranker (top 50)Ranking API (hasta 1000)reranker bge / Qwen3 / mxbai
ModeloGPT (Azure OpenAI)GeminiLlama / Qwen / gpt-oss + vLLM
VerificaciónGroundedness (Pro en preview)Check Grounding APIHHEM-Open / MiniCheck
EvaluaciónEvaluadores de FoundryServicio de evaluaciónRAGAS / DeepEval / TruLens
ProducciónEvaluación continuaOnline MonitorsPhoenix / MLflow / Langfuse

Tres diferencias que importan

  1. Búsqueda híbrida: Azure AI Search incluye la búsqueda por palabras clave. En Google Vector Search tienes que generar tú mismo el vector disperso; si quieres que Google lo administre, usa Agent Search. En código abierto depende de la base de datos.
  2. Reranker: el de Azure reordena solo el top 50. La Ranking API de Google acepta hasta 1000 chunks y funciona con cualquier buscador, incluso uno externo. En código abierto controlas el modelo, el costo y la latencia, pero también te toca operarlo.
  3. Evaluación: las dos nubes ya ofrecen evaluación offline y evaluación continua sobre tráfico real, con trazas estándar (OpenTelemetry). En código abierto, RAGAS o DeepEval (offline) más Phoenix, MLflow o Langfuse (producción) cubren lo mismo, pero la integración la haces tú.

Apéndice · Glosario

TérminoSignificado sencillo
Búsqueda agénticaUn agente divide la pregunta y hace varias búsquedas
BM25Algoritmo clásico de búsqueda por palabras clave
ChunkUn pedazo de documento que se indexa por separado
Kappa de CohenUna medida del acuerdo entre dos evaluadores que descuenta el acuerdo por azar
Completitud (completeness)Que la respuesta no deje fuera información importante
Integración continua (CI)Pruebas automáticas que se ejecutan con cada cambio de código
Cross-encoder / bi-encoderLee los dos textos juntos / convierte cada texto en un vector por separado
Denso / disperso (sparse)Un vector con todos los valores activos / un vector de términos con peso, casi todos en cero
Embedding / vectorUna lista de números que representa el significado de un texto
Entra IDEl sistema de identidad y acceso de Microsoft
Golden datasetUn conjunto de preguntas con sus respuestas y documentos correctos
GraphRAGRAG con un grafo de entidades y relaciones
Groundedness / faithfulnessQue la respuesta no diga nada que no esté en los documentos
AlucinaciónCuando el modelo inventa información
HNSWUna estructura en forma de grafo para encontrar rápido los vectores más cercanos
Búsqueda híbridaCombinar la búsqueda por palabras clave y la búsqueda por significado
IAMEl sistema de control de acceso de Google Cloud
Índice invertidoUna tabla “palabra → documentos donde aparece”
kNNEncontrar los k vecinos más cercanos
Modelo de lenguaje (LLM)El modelo que escribe la respuesta (GPT, Gemini, Claude, Llama…)
Juez LLMOtro modelo que califica las respuestas
MMRUna técnica para eliminar resultados redundantes
MRRQué tan arriba aparece el primer resultado correcto
nDCGCalidad del ranking: si los elementos correctos están lo más arriba posible (los evaluadores de Azure lo escriben NDCG)
OpenTelemetryUn estándar abierto para registrar trazas y métricas
ParsingConvertir un archivo (PDF, Word) en texto con estructura
Precision@kQué fracción de los k primeros resultados es correcta
Preview / GAFunción en pruebas / función oficial y estable
CuantizaciónComprimir los números de los vectores para ahorrar memoria
RAGGeneración aumentada por recuperación: buscar en tus documentos antes de responder
Recall@kQué fracción de los elementos correctos aparece en los k primeros resultados
RerankerUn modelo que reordena los candidatos leyendo juntos la pregunta y el chunk
RRFFusión por rango recíproco (reciprocal rank fusion): combinar listas usando solo las posiciones
SPLADE / ELSERModelos que amplían el texto con términos relacionados (disperso aprendido)

Apéndice · Referencias

Documentación oficial (consultada el 2026-09-23)

Microsoft Azure

Google Cloud

Elastic

Papers e informes

Recuperación

Chunking

Reranking

Evaluación