RAG bien hecho: los 7 errores que arruinan tu buscador de documentos
El RAG 'funciona' pero responde mal? Casi siempre es el retrieval. Los 7 errores más comunes (que sufrimos) y cómo arreglarlos: chunking, embeddings, reranking y prompts.

Complemento avanzado de nuestra receta RAG básica. Si tu RAG “funciona pero responde regular”, el problema casi nunca es el LLM: es el retrieval. Estos son los 7 errores que cometimos (todos) y cómo los arreglamos.
Error 1: Chunks absurdos
Síntoma: respuestas que mezclan información de contextos distintos o se quedan a medias.
Causa: cortar cada 500 caracteres “porque sí” trocea tablas, listas y frases por la mitad.
Arreglo: corta por estructura (párrafos, secciones, encabezados). Nuestra regla:
400-800 caracteres, con solapamiento del 15%, y NUNCA cortes en medio de una tabla. Si
usas Markdown, corta por ##.
Error 2: Embeddings genéricos para tu idioma
Síntoma: encuentra documentos maliciosamente irrelevantes (buscas “presupuesto” y te devuelve lo del cumpleaños de Marta).
Causa: embeddings pequeños entrenados sobre todo en inglés con documentos en español.
Arreglo: usa bge-m3 o multilingual-e5-large (ambos en Ollama o via
sentence-transformers). Para español la diferencia es abismal.
Error 3: No hay metadatos
Síntoma: recuperas “algo” pero no sabes de qué documento ni de qué fecha.
Arreglo: guarda siempre metadatos con cada chunk:
col.add(
ids=[chunk_id],
documents=[texto],
embeddings=[emb],
metadatas=[{"doc": "acta-2025-03.pdf", "pagina": 4, "fecha": "2025-03-12", "tipo": "acta"}],
)
Y filtra por metadatos cuando la pregunta lo pida (“en las actas de marzo…”).
Error 4: Top-3 cuando necesitas top-10
Síntoma: el modelo dice “no tengo información” cuando SÍ está en tus documentos.
Causa: recuperas muy pocos chunks y el relevante no entra.
Arreglo: top 8-10 chunks + reordenar por relevancia. La ventana de contexto de los modelos modernos (32K+) da de sobra para esto.
Error 5: Sin reranking
Síntoma: el chunk correcto está recuperado… en la posición 7, y el modelo le da menos peso.
Arreglo: un reranker (bge-reranker-v2-m3, pequeño y local) reordena los 10 primeros por relevancia real. 200ms extra, precisión del retrieval +30-40%. La mejora más barata de todo el RAG.
Error 6: Prompt sin instrucciones de honestidad
Síntoma: el modelo inventa cosas que no están en los documentos.
Arreglo: system prompt explícito:
Responde SOLO con la información del CONTEXTO. Si la respuesta no está en el contexto,
di exactamente: "No encuentro esa información en los documentos". Cita el documento
(de qué archivo sale cada afirmación) al final de cada párrafo.
La petición de citas además te permite verificar a ojo.
Error 7: No evaluar nunca el retrieval
Síntoma: tocas cosas al azar sin saber si mejoran.
Arreglo: crea 20 preguntas con respuesta conocida, corre tu RAG, y mide: ¿el chunk correcto está en el top-10? ¿La respuesta final es correcta? Es el mini-benchmark (hay receta en el blog) aplicado a RAG. Sin esto, estás reparando a ciegas.
La checklist del RAG decente
□ Chunking por estructura (no por caracteres a ciegas)
□ Embeddings multilingües (bge-m3 o e5)
□ Metadatos en cada chunk (doc, fecha, tipo)
□ Top-10 + reranking
□ System prompt con "solo contexto" + citas
□ Suite de 20 preguntas para evaluar cambios
□ Log de qué contexto se pasó en cada consulta
Con esto, un RAG local con modelos de 7-14B responde mejor que muchos cloud… y tus documentos no salen de casa.