Las 5 cosas que tienes que instrumentar si quieres que tu RAG no mienta
Construir un RAG que no miente no es cuestión del modelo. Es cuestión de lo que instrumentas antes de que el modelo siquiera entre en juego.
1. Schema de citación, no retroajustado
Cada chunk lleva identificador estable del documento fuente, rango de páginas, tipo de contenido, hash. Si esto lo diseñas en la versión 1.2, la versión 1.1 del corpus es basura. Se decide una vez y se convive con ello.
2. Versión del embedding
El día que se cambie de modelo — y lo haré — los vectores antiguos dejan de tener sentido. Si no se marca cada vector con el modelo y versión con el que se generó, no se puede filtrar al hacer retrieval y acabas mezclando espacios vectoriales incompatibles. Yo lo codifico directamente dentro del `vector_id` para que no haya forma de meter la pata.
3. Parser que preserva estructura
Aplanar una tabla a texto lineal pierde relaciones entre columnas. "2.500 / 15 / 2025-04-30" sin saber que son precio unitario, cantidad y fecha de entrega no sirve para nada. Tablas son tablas: `chunk_kind='table'`, filas preservadas, markdown si hace falta.
4. Filtros post-retrieval
El vector store solo indexa lo que cabe en su metadata. Todo lo demás se filtra después del hit, con un JOIN contra la base de datos. Si no tienes esa capa, acabas devolviendo chunks correctos del documento equivocado.
5. Idempotencia del chunking
Un mismo documento indexado hoy y dentro de un mes tiene que producir exactamente los mismos chunk_ids. Si no, el reproceso duplica vectores, rompe citas y envenena el corpus. Tests que lo verifican desde el primer día.
Ninguna de estas cinco cosas es un "nice to have". Son la línea que separa un sistema que se puede auditar de uno que no.
El modelo vino después.
# RAG #Python #VectorSearch #DataEngineering #SoftwareEngineering
RAG que no inventa: qué significa tener citas verificables
Hace unos meses comenzamos un proyecto donde el cliente quería un sistema que pudiera contestar preguntas sobre documentación oficial — plazos, criterios, requisitos enterrados en cláusulas de cuarenta páginas — y que cada respuesta fuera defendible. Su condición era sin margen: "si el sistema dice algo, yo tengo que poder abrir el documento y encontrar esa frase".
En jerga técnica, eso se llama RAG. Pero no el RAG de las demos.
Lanzando al sistema una consulta: "cuántos días tienen los licitadores para clarificar documentación desde la notificación".
El retrieval devolvió tres hits en menos de un segundo.
El primero, un chunk de texto narrativo de la cláusula 5 del pliego. El segundo, una tabla con la celda "5 working days from notification". El tercero, una declaración firmada por el propio licitador reconociendo que acepta ese plazo. Tres documentos distintos. Misma convocatoria. Misma respuesta.
Cada hit llevaba su cita: identificador del documento, rango de páginas, tipo de chunk, modelo de embedding usado. Podía abrir cualquiera de los tres PDFs, ir a la página indicada, y leer la frase exacta que el sistema había destacado.
Sin ese nivel de trazabilidad, lo único que el sistema podría haber dicho es "cinco días". Igual que si lo hubiera inventado.
La mayoría de lo que hoy se vende como RAG es un LLM encima de un índice vectorial. Funciona en demos, pero colapsa en producción.
La regla que seguimos es corta y un poco arisca: el LLM no es la fuente de verdad. El parsing determinista lo es. Las identidades canónicas de los documentos lo son. El LLM enriquece, resume y responde con evidencia — pero nunca decide qué entra al sistema.
Los próximos días voy a contar cómo está construido por dentro: arquitectura, flujos asíncronos, cómo se preservan las tablas en los PDFs, y dónde sí y dónde no tiene sentido meter un LLM.
Este era el punto de partida: si el sistema dice algo, se tiene que poder comprobar.
# RAG #Python #LLM #DataEngineering #SoftwareEngineering
¿Interesado en mejorar tu tecnología? ¡Contáctanos y descubre cómo podemos ayudarte!
Contacto
CleverTIC es una empresa del ámbito de las Tecnologías de la Información y de la Comunicación.
Nos dedicamos al desarrollo de aplicaciones web y portales corporativos, software a medida, comercio electrónico, diseño, consultoría y formación.
Llámanos, escríbenos o déjanos un mensaje: