Proyectos / Bilingual Retrieval Evals

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.

Autor: · Python 3.11.13 · Licencia: MIT

Ficha publicada: · Ficha actualizada:

Repositorio · Evidencia original · Release v0.1.0

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

  1. 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.
  2. 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.
  3. 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

Evidencia original ·
MétodoRecall@3NDCG@3MRR@3
BM250.7190.7190.719
BM25 sin acentos0.7190.7190.719
Multilingual MiniLM1.0000.9770.969

NDCG@3 por dirección

Resumen de resultados ·
DirecciónConsultasBM25MiniLM
EN → EN81.0001.000
EN → ES80.6250.954
ES → EN80.3750.954
ES → ES80.8751.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.json

Repetir 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.json

Alcance 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.