Responder con fuentes, y cuándo no usar RAG
Páginas de este taller
En esta página
Ya tenemos los fragmentos. Esta página trata de cómo se le pasan al modelo, cuánto contexto conviene darle, qué tiene que decir cuando no está la respuesta y en qué casos RAG no es la herramienta adecuada.
1. La instrucción
El modelo recibe la pregunta y los fragmentos, delimitados y con una instrucción explícita:
Responde solo con la información de los documentos siguientes.
Cita entre corchetes el artículo de cada afirmación.
Si la respuesta no está en los documentos, di que no la encuentras.
<documentos>
[Artículo 1. Plazo] Puedes devolver cualquier producto en un plazo de 30 días…
[Artículo 2. Excepciones] El derecho de devolución no se aplica a los productos personalizados…
</documentos>
Pregunta: ¿Puedo devolver una camiseta con mi nombre bordado?
Cada línea tiene una función:
- «Responde solo con…» evita que mezcle lo que recuerda de su entrenamiento, que puede ser la política de otra tienda.
- «Cita…» hace comprobable cada afirmación. Por eso importaba el encabezado del fragmento.
- «Si no está, dilo» es la más importante. Sin ella, cuando falta la información, el modelo tiende a responder de todos modos.
- Los delimitadores separan lo que hay que hacer de lo que hay que leer. Si un documento recuperado contiene frases como «ignora las instrucciones anteriores», quedan del lado de los datos (inyección de instrucciones).
Cómo redactar bien esta instrucción se explica en Escribir buenos prompts.
2. Cuánto contexto y en qué orden
Los modelos actuales admiten contextos enormes, y la tentación es pasarles todo lo recuperado. No conviene, por tres motivos:
- Ruido. Cada fragmento de más es una ocasión de mezclar o de contestar con el artículo equivocado.
- Posición. En los experimentos de Liu et al. (2024), los modelos aprovechaban mucho mejor la información situada al principio o al final del contexto que la del medio. Los modelos han mejorado desde entonces, pero la recomendación sigue en pie: pocos fragmentos y los mejores, primero.
- Coste y tiempo. Se paga por token, y la respuesta tarda más.
3. Qué decir cuando no hay respuesta
Ya vimos que la búsqueda siempre devuelve algo y que la similitud no avisa:
Así que la decisión recae en el modelo que redacta, que tiene los fragmentos delante. Y un asistente tiene que distinguir dos situaciones que para la persona son muy distintas:
| Situación | Respuesta adecuada |
|---|---|
| La búsqueda funcionó y la información no está en los documentos | «No encuentro información sobre envíos a Canarias en la política de devoluciones. Puedes consultarlo con el equipo de atención.» |
| La búsqueda falló (el índice no responde, un error técnico) | «Ahora mismo no puedo consultar la política. Inténtalo de nuevo en unos minutos o escribe al equipo de atención.» |
Confundirlas tiene consecuencias: decir «no existe» cuando no se pudo buscar deja a la persona con una información falsa. El taller de diseño conversacional trata este y otros fallos.
4. Dónde falla un RAG: un mapa para diagnosticar
Barnett et al. (2024) reunieron en siete puntos los fallos que encontraron en tres sistemas RAG de investigación, educación y biomedicina. Sirven de lista de comprobación, porque cada uno señala una pieza distinta:
| Fallo | Qué pasa | Dónde mirar |
|---|---|---|
| Falta el contenido | La respuesta no está en los documentos y el sistema responde igualmente | La instrucción y la evaluación con preguntas sin respuesta |
| No llega a los primeros puestos | El fragmento existe, pero queda por debajo del corte | Troceado, búsqueda, reescritura (las zapatillas) |
| Se pierde por el camino | Se recuperó, pero no entró en el contexto final | Cuántos fragmentos se pasan y cómo se combinan |
| No se extrae | Estaba en el contexto y el modelo no lo usó | Ruido y fragmentos contradictorios |
| Formato equivocado | Se pidió una tabla o una lista y no la dio | La instrucción |
| Especificidad incorrecta | Responde demasiado en general o demasiado en concreto | La pregunta y la instrucción |
| Incompleta | Correcta, pero deja fuera algo que estaba en los fragmentos | Ruido y posición en el contexto |
Los tres primeros ocurren antes de que el modelo escriba una palabra.
5. Variantes
Grafos de conocimiento (GraphRAG). Algunas preguntas exigen conectar información dispersa: «¿qué proyectos comparten proveedor con este?». La respuesta no está en ningún fragmento concreto, así que buscar fragmentos parecidos no basta. Una alternativa es extraer de los documentos un grafo de entidades y relaciones y recorrerlo para reunir el contexto (Edge et al., 2024). Es más caro de construir y de mantener, y compensa cuando las relaciones son el núcleo de las preguntas. La competencia de ingeniería del conocimiento y grafos explica cómo se construyen.
Búsqueda decidida por un agente. En los sistemas más recientes, buscar no es un paso fijo antes de responder. Un agente decide si busca, qué busca, reformula si el primer resultado no sirve y combina varias fuentes. Las piezas son las de esta pieza; lo que cambia es quién decide cuándo usarlas, y con ello hay más pasos donde equivocarse.
6. Cuándo no usar RAG
RAG es la respuesta habitual, no la única. Conviene descartar antes estas alternativas:
| Si el problema es… | Probablemente basta con… |
|---|---|
| Unos pocos documentos cortos que caben en el contexto | Pasarlos enteros: sin búsqueda no hay fallos de búsqueda |
| Datos estructurados (precios, existencias, horarios) | Consultar la base de datos directamente; un fragmento de texto es una mala forma de guardar una tabla |
| Que el modelo escriba con un estilo o un formato fijo | Instrucciones y ejemplos, o un ajuste fino (fine-tuning), que enseña a escribir de una manera, no hechos nuevos |
| Información que cambia cada minuto | Una herramienta que la consulte en el momento |
Para seguir
- Evaluar un sistema RAG: cómo medir cada pieza, con las mismas diez preguntas.
- Pregunta-respuesta: la tarea de PLN que RAG resuelve, sin tecnicismos.
- Escribir buenos prompts: la instrucción que recibe el modelo.
- Preprocesar, tokenizar y representar: de dónde vienen los vectores y el TF-IDF.
Referencias
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS.
- Robertson, S. y Zaragoza, H. (2009). The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in Information Retrieval.
- Cormack, G. V., Clarke, C. L. A. y Büttcher, S. (2009). Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods. SIGIR.
- Wang, L. et al. (2024). Multilingual E5 Text Embeddings: A Technical Report. arXiv. Modelo: intfloat/multilingual-e5-large.
- Chen, J. et al. (2024). BGE M3-Embedding. arXiv. Modelo: BAAI/bge-m3.
- Nogueira, R. y Cho, K. (2019). Passage Re-ranking with BERT. arXiv.
- Bonifacio, L. et al. (2021). mMARCO: A Multilingual Version of the MS MARCO Passage Ranking Dataset. arXiv. Reordenador: cross-encoder/mmarco-mMiniLMv2-L12-H384-v1.
- Anthropic (2024). Introducing Contextual Retrieval.
- Gao, L. et al. (2023). Precise Zero-Shot Dense Retrieval without Relevance Labels. ACL.
- Liu, N. F. et al. (2024). Lost in the Middle: How Language Models Use Long Contexts. TACL.
- Barnett, S. et al. (2024). Seven Failure Points When Engineering a Retrieval Augmented Generation System. arXiv.
- Edge, D. et al. (2024). From Local to Global: A Graph RAG Approach to Query-Focused Summarization. arXiv.
- Cifras del ejemplo: elaboración propia con los modelos citados, BM25 (k1 = 1,5; b = 0,75) y RRF (k = 60).