Fact-checking con RAG: cuando la evidencia no ayuda
Verificación automática de afirmaciones sobre el dataset FEVER: un baseline zero-shot con Llama-3.2-3B contra un pipeline RAG completo (entidades → Wikipedia → FAISS). El resultado honesto: el RAG no superó al baseline — y entender por qué es la parte más valiosa del trabajo.
El problema
FEVER (Fact Extraction and VERification) es el dataset de referencia para fact-checking automático: afirmaciones generadas desde Wikipedia que deben clasificarse como SUPPORTS o REFUTES según la evidencia. Trabajé con una muestra balanceada de 500 claims (250 por clase): el azar rinde 50% y ninguna métrica se infla por desbalance.
El experimento
Primero un baseline zero-shot: el modelo decide solo con su conocimiento paramétrico, prompt restrictivo y decodificación determinística (temperature 0). Después, el mismo modelo pero alimentado con evidencia real recuperada de Wikipedia vía una base vectorial FAISS. La hipótesis obvia: con evidencia debería mejorar.
El pipeline RAG
Cuatro etapas, un cuello de botella.
Extracción de entidades
Llama-3.2-3B identifica el título de Wikipedia central de cada claim, con fallback por regex de entidades nombradas.
Recuperación de Wikipedia
WikipediaLoader (LangChain) descarga el artículo por entidad, con cache en CSV para no repetir llamadas.
Base vectorial FAISS
Chunking recursivo (700 chars, overlap 80) + embeddings MiniLM-L6-v2 → 4.125 chunks indexados.
Clasificación con evidencia
Top-5 chunks por similitud se inyectan al prompt; el modelo responde solo SUPPORTS o REFUTES, decodificación determinística.
Resultados
La evidencia no alcanzó.
Zero-shot · accuracy
0%
solo conocimiento paramétrico
RAG · accuracy
0%
con evidencia de Wikipedia
Accuracy
Macro F1
Recall SUPPORTS
Recall REFUTES
El RAG no superó al baseline (64.0% vs 65.4%), pero el detalle importa: la evidencia recuperada mejoró la detección de afirmaciones falsas (recall de REFUTES: 0.692 → 0.760) y empeoró la confirmación de las verdaderas (recall de SUPPORTS: 0.616 → 0.520). Cuando el retrieval trae fragmentos parciales o poco alineados, el modelo interpreta la ausencia de evidencia como refutación.
La conclusión de ingeniería: en un sistema RAG, la calidad de la recuperación domina sobre la capacidad generativa del modelo. Chunking, embeddings, top-k y estrategia de consulta son el factor decisivo — no el LLM. Las mejoras con más potencial: recuperar por entidad, re-ranking de evidencia y chunks alineados a oraciones factuales.