nikolas.cantillo
Caso · NLPMagíster en Ciencia de Datos — UC Chile · FEVER · 500 claims

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.

Llama-3.2-3BLangChainFAISSTransformersWikipedia

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.

01

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.

02

Recuperación de Wikipedia

WikipediaLoader (LangChain) descarga el artículo por entidad, con cache en CSV para no repetir llamadas.

03

Base vectorial FAISS

Chunking recursivo (700 chars, overlap 80) + embeddings MiniLM-L6-v2 → 4.125 chunks indexados.

04

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

Zero-shotRAG

Accuracy

0.654
0.64

Macro F1

0.653
0.638

Recall SUPPORTS

0.616
0.52

Recall REFUTES

0.692
0.76

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.

← Volver a proyectosArtículo relacionado: ciencia de datos responsable