← Todas las recetasReceta · 25 de septiembre de 2025

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.

Dificultadmedia
Tiempo45 min
IngredientesOllama · ChromaDB · BGE-M3 · Python

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.