Bilingual Retrieval Evals
Evaluación de recuperación EN/ES con BM25 y MiniLM multilingüe. Separa idiomas, direcciones, acentos y expresiones culturales, con rankings y evidencia reproducible.
Problema y utilidad para agentes
Un promedio de recuperación puede esconder que el buscador funciona en inglés y falla al cruzar idiomas. Traducir consultas tampoco elimina la ambigüedad cultural ni los distractores léxicos.
El proyecto expone qué documentos recupera cada método para consultas paralelas en español e inglés. Permite inspeccionar errores que un Recall@3 perfecto todavía puede ocultar.
Arquitectura
- Corpus y juicios explícitos. 32 documentos ficticios, 68 variantes de consulta y etiquetas por candidato con pasajes de apoyo. Las familias de desarrollo y evaluación permanecen separadas.
- Recuperación por dirección. Cada consulta busca entre 16 documentos del idioma objetivo. Compara BM25, BM25 con normalización de acentos y un encoder MiniLM multilingüe fijado por revisión.
- Desgloses y replay. Guarda vectores, rankings completos, métricas por grupo, contrastes pareados e intervalos por familia. El replay recalcula los resultados sin descargar el modelo.
Qué demuestra
- Evaluación multilingüe que conserva denominadores y separa las cuatro direcciones de búsqueda.
- Diseño de consultas culturales, distractores y contrastes de acentos con trazabilidad de relevancia.
- Inspección de errores de ranking y de incertidumbre sin contar variantes correlacionadas como observaciones independientes.
Resultados publicados
Medición local en Intel Xeon W-3223 con dos hilos. Las tablas principales usan 32 consultas originales de ocho familias de evaluación; excluyen las variantes sin acentos para no dar más peso al español.
Cutoff 3, BM25 k1=1.2 y b=0.75, embeddings limitados a 128 tokens. El informe completo incluye 46 variantes de evaluación. Los intervalos usan 2.000 remuestreos por familia y un estimador distinto del promedio de consultas originales.
Recuperación sobre 32 consultas originales
| Método | Recall@3 | NDCG@3 | MRR@3 |
|---|---|---|---|
| BM25 | 0.719 | 0.719 | 0.719 |
| BM25 sin acentos | 0.719 | 0.719 | 0.719 |
| Multilingual MiniLM | 1.000 | 0.977 | 0.969 |
NDCG@3 por dirección
| Dirección | Consultas | BM25 | MiniLM |
|---|---|---|---|
| EN → EN | 8 | 1.000 | 1.000 |
| EN → ES | 8 | 0.625 | 0.954 |
| ES → EN | 8 | 0.375 | 0.954 |
| ES → ES | 8 | 0.875 | 1.000 |
MiniLM logró Recall@3 de 1,000, pero ubicó un distractor sobre el documento relevante en una consulta cultural y otra de paquetería. Encontrar el documento entre los tres primeros no equivale a ordenar correctamente.
Los intervalos por familia, las diferencias por entidades y los siete pares de acentos por idioma objetivo están publicados con sus denominadores. Resumen de resultados.
Reproducir
Python 3.11 o posterior. Validación y replay usan la biblioteca estándar. La medición neural necesita las dependencias fijadas y la descarga explícita del encoder público.
Los comandos usan una shell POSIX y directorios nuevos. Ejecutá una medición por vez. El lock corresponde al entorno Intel macOS medido; otros sistemas pueden necesitar una distribución compatible de PyTorch.
Revisar la evidencia guardada
git clone https://github.com/lucioduran/bilingual-retrieval-evals.git
cd bilingual-retrieval-evals
git checkout 8cc64e903e89ef399db5c4648b23cee52038b83b
python -m bilingual_retrieval validate
python -m bilingual_retrieval verify --report results/dev/report.json
python -m bilingual_retrieval verify --report results/eval/report.jsonRepetir la medición local
python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-local.lock
python -m bilingual_retrieval download
OMP_NUM_THREADS=2 MKL_NUM_THREADS=2 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 TOKENIZERS_PARALLELISM=false python -m bilingual_retrieval run --split dev --output build/dev
OMP_NUM_THREADS=2 MKL_NUM_THREADS=2 HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 TOKENIZERS_PARALLELISM=false python -m bilingual_retrieval run --split eval --output build/eval
python -m bilingual_retrieval verify --report build/dev/report.json
python -m bilingual_retrieval verify --report build/eval/report.jsonAlcance y límites
- Corpus sintético conocido por el autor. Las etiquetas todavía no tienen revisión humana bilingüe independiente; no representan dialectos ni tráfico real.
- Ocho familias dan intervalos de incertidumbre débiles. Los grupos por entidad o idioma no son tratamientos causales.
- Los tiempos son una única pasada por lotes, no percentiles de latencia. El replay comprueba coherencia interna, no autenticidad de los embeddings o de las mediciones.
Fuentes y revisión
Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.
- Revisión consultada:
8cc64e903e89ef399db5c4648b23cee52038b83b - Revisión registrada por el experimento:
d89585a8e53aa43a0fa8bc6fe50d43635172c5de - Fecha del informe (UTC):
- Release publicada: v0.1.0 ·