← Todas las recetasReceta · 25 de septiembre de 2025

RAG bien hecho: los 7 errores que arruinan tu buscador de documentos

¿Tu RAG funciona pero responde mal? Revisa chunking, embeddings, metadatos, reranking, prompts y evaluación antes de culpar al LLM.

Portada de la receta: RAG bien hecho: los 7 errores que arruinan tu buscador de documentos
Dificultadmedia
Tiempo45 min
IngredientesOllama · ChromaDB · BGE-M3 · Python

Complemento avanzado de nuestra receta RAG básica. Si tu RAG «funciona pero responde regular», inspecciona primero el retrieval y la trazabilidad. Estos son siete fallos frecuentes y formas de comprobarlos.

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). Empieza con un tamaño razonable y un solapamiento pequeño, pero ajusta con un conjunto de preguntas de prueba. Nunca cortes una tabla sin conservar sus encabezados. Si usas Markdown, respeta los encabezados de nivel 2.

Error 2: Embeddings genéricos para tu idioma

Síntoma: encuentra documentos clamorosamente 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: prueba un embedding multilingüe como bge-m3 o multilingual-e5-large (en Ollama o vía sentence-transformers) y compáralo con tus documentos. No hay un ganador universal: mide recuperación y coste.

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: prueba distintos valores de top-k y reordena por relevancia. Más chunks no siempre es mejor: la ventana de contexto, el ruido y la tarea también cuentan.

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 local como bge-reranker-v2-m3 puede reordenar los candidatos, pero añade latencia y memoria. Mide si mejora recall y respuestas frente a una línea base; no asumas un porcentaje de mejora.

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 casero 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 tendrás un RAG más trazable y una comparación que puedes repetir. La calidad no está garantizada por ser local: comprueba respuestas, citas, permisos y el comportamiento con documentos adversariales.