InnovaciónLegal
Herramientas Internas

rag-citation-guard: verificación de citas en RAG legal

por Daniel Arias

TypeScriptRAGLLM

Librería open source que detecta citas inventadas por un LLM en sistemas RAG — verde si la cita está respaldada por un chunk real, rojo si no.

Desde 2023 hay una lista pública y creciente de sanciones judiciales a abogados que presentaron escritos con citas de jurisprudencia inventadas por un modelo de lenguaje. Ya no es un problema de investigación académica — es un incidente de producción con consecuencias legales reales, y sigue pasando porque la mayoría de los sistemas RAG no tienen ningún paso que verifique si una cita que produjo el modelo corresponde realmente a un fragmento que el sistema recuperó.

rag-citation-guard es exactamente ese paso. Es una librería open source (Apache-2.0, sin dependencias runtime, sin llamadas de red) que no sabe nada de derecho — solo compara las citas que produce el modelo contra los chunks que vos le diste. Eso la hace útil para cualquier sistema RAG (legal, soporte, documentación interna, salud, finanzas), no solo legal AI.

El principio de gobernanza, no la feature

Lo interesante de rag-citation-guard no es la funcionalidad en sí — es el principio de gobernanza de IA que ilustra: verificación de output antes de confiar en él. El flujo es simple: antes de generar, se le dice al modelo exactamente qué IDs de chunk tiene disponibles para citar; después de generar, cada cita se valida contra esa lista. Cualquier cita que apunte a un chunk que no existe — o que no cite nada — queda marcada como no verificada.

Es el mismo tipo de capa de seguridad que aplican otros proyectos del ecosistema para defenderse de prompt injection indirecta: no confiar por default en lo que devuelve un modelo, y agregar una verificación explícita en el medio.

Probado en vivo

El testbed legal-rag-playbook es donde se dogfoodea la librería antes de tocar producción: un playground sin backend y sin bundler, donde pegás un documento, hacés una pregunta, y cada cita de la respuesta se marca en verde o rojo en tiempo real según esté o no respaldada por el texto recuperado. La API key que se usa (Anthropic u OpenAI) nunca sale del navegador — se guarda en sessionStorage y se borra al cerrar la pestaña.