BGE-M3: embeddings que realmente hablan francés
BGE-M3 (BAAI, licencia MIT) es un modelo de embeddings que admite más de 100 idiomas, acepta hasta 8 192 tokens por pasaje y produce tres representaciones en una sola pasada: densa (sentido global), léxica (términos exactos, al estilo de BM25) y multivector (reordenación al estilo de ColBERT). Para un corpus en francés, es una elección más fiable que los modelos para inglés de las clasificaciones públicas. Ocupa 1,2 GB a través de Ollama (bge-m3:567m) y funciona sin tarjeta gráfica.
La mayoría de los modelos de embedding mejor clasificados se entrenan principalmente con textos en inglés. Utilizados con un corpus francés, funcionan sin errores y recuperan información con menor eficacia: el fallo más pernicioso que existe, ya que nada lo indica. BGE-M3, publicado por el laboratorio chino BAAI, es uno de los pocos modelos realmente multilingües y tiene además una particularidad útil: produce tres tipos de representaciones a la vez, sin coste adicional.
#El problema francés
Un modelo de embedding aprende su noción de similitud a partir de su corpus de entrenamiento. Si el 90 % de ese corpus está en inglés, el modelo sitúa correctamente los textos en inglés unos respecto a otros y lo hace con mucha menos precisión con los textos en francés. En la práctica, en un corpus documental en francés, esto se traduce en pasajes pertinentes que no se recuperan y pasajes irrelevantes que sí se recuperan, sin ningún mensaje de error, sin advertencias en los registros y, a menudo, sin que nadie lo advierta hasta que un usuario señale una respuesta que no viene al caso.
Por eso, la respuesta a la pregunta «¿qué modelo de embedding?» varía según el idioma. Las clasificaciones públicas (como MTEB) están dominadas en gran medida por tareas en inglés; no predicen lo que ocurrirá con tus documentos ni con tu vocabulario especializado. Precisamente para este caso, el laboratorio chino BAAI (Beijing Academy of Artificial Intelligence) diseñó BGE-M3: el nombre significa Multi-Functionality, Multi-Linguality, Multi-Granularity —tres funciones de búsqueda, más de 100 idiomas y entradas que van desde frases cortas hasta documentos largos, todo reunido en un solo modelo en lugar de repartido entre varias herramientas—.
#Lo que aporta BGE-M3
Tus documentos, tu IA: un RAG local fiable sobre tus PDF, notas y correos — sin enviar nada a la nube.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
- Multilingüe por diseño
- El modelo soporta más de 100 idiomas de trabajo según su ficha oficial; procesa el francés correctamente y permite también hacer consultas en francés sobre un corpus inglés.
- Contexto largo: 8.192 tokens
- Acepta pasajes mucho más largos que la mayoría de los modelos de embedding (a menudo limitados a 512 tokens), lo que deja libertad en el tamaño de los fragmentos indexados.
- Tres representaciones a la vez
- Densa, léxica y multivectorial, generadas en una sola pasada, sin coste computacional adicional según BAAI.
- Licencia MIT
- Se puede utilizar en empresas sin restricciones particulares; revisa siempre la ficha del modelo al integrarlo, ya que la licencia puede cambiar de una versión a otra.
- Sin instrucción adicional
- A diferencia de otros modelos BGE más antiguos, BGE-M3 ya no requiere añadir una instrucción a las consultas: se utiliza directamente, lo que simplifica la integración.
#Denso, léxico, multivector: ¿para qué sirve?
| Representación | Lo que captura | Lo que aporta |
|---|---|---|
| Dense | Texto reducido a un solo vector que capta su significado global | Búsqueda semántica clásica |
| Léxica (dispersa) | Un peso por término del vocabulario, nulo salvo para las palabras presentes en el texto | Encuentra referencias, siglas y nombres propios que la búsqueda semántica pasa por alto, al estilo de BM25 |
| Multi-vecteur | Varios vectores por texto, como ColBERT | Un reordenamiento más preciso de los mejores candidatos |
La ventaja es poder realizar búsquedas híbridas sin ejecutar dos modelos separados: la ficha oficial recomienda explícitamente combinar la búsqueda híbrida con el reordenamiento, aprovechando los pesos léxicos obtenidos «sin costo adicional» al mismo tiempo que el embedding denso. La parte léxica compensa precisamente los fallos de la parte densa, y la parte multivectorial sirve para reordenar los aproximadamente veinte candidatos seleccionados. No todas las bases vectoriales pueden aprovechar las tres salidas, pero la salida densa por sí sola ya basta para un uso habitual; de hecho, es la configuración más sencilla de implementar para empezar, antes de añadir la capa léxica si la precisión sigue siendo insuficiente.
#Usarlo localmente
La forma más rápida de probar BGE-M3 localmente es Ollama, que distribuye una versión cuantizada del modelo con el nombre bge-m3:567m: 567 millones de parámetros, una descarga de aproximadamente 1,2 GB y una ventana de contexto de 8.000 tokens anunciada en la ficha del modelo. Es un modelo basado en XLM-RoBERTa-large, cuya longitud de contexto se amplió primero a 8.192 tokens mediante un preentrenamiento específico (RetroMAE), antes de un ajuste fino unificado para las tres tareas de recuperación en una sola etapa de entrenamiento, en lugar de tener que mantener tres modelos separados.
Para un pipeline RAG completo, solo la salida densa se puede utilizar directamente en la mayoría de las bases de datos vectoriales estándar (Qdrant, Milvus, pgvector) sin una configuración específica; la salida léxica y la multivectorial requieren un motor capaz de combinarlas, como documentan, por ejemplo, las integraciones de Milvus y Vespa citadas por BAAI.
En una cadena RAG clásica con un LLM local, BGE-M3 reemplaza simplemente el modelo de embeddings predeterminado: se codifica cada fragmento de documento una vez durante la indexación, se codifica la pregunta del usuario en cada consulta, y luego se envían los mejores pasajes encontrados al LLM (Qwen, Mistral, Llama…) cargado en Ollama o LM Studio. La elección del modelo de embeddings y la del modelo de generación son dos decisiones independientes: nada obliga a usar un modelo de la misma familia en ambas etapas, y en la práctica es bastante raro que ocurra.
#Verificar con tus propios documentos
La mención «más de 100 idiomas» en una ficha de producto no garantiza una calidad uniforme: indica la cobertura, no una puntuación por idioma. BAAI evalúa BGE-M3 en MIRACL (búsqueda multilingüe) y en MLDR, un conjunto de datos de recuperación de documentos largos que abarca 13 idiomas y que el laboratorio publicó específicamente para este modelo, con el pipeline de evaluación correspondiente disponible en acceso abierto. Estas evaluaciones muestran una tendencia general, medida en corpus de investigación estandarizados; no sustituyen una prueba con tu propio corpus, en tu propio ámbito, con tu propio vocabulario técnico y tus propias formulaciones de preguntas.
- 01Preparar una pequeña muestra representativaVeinte a treinta documentos reales del corpus objetivo, con su diversidad habitual de longitud y vocabulario, no una selección cuidadosamente escogida.
- 02Escribir preguntas como las harían tus usuariosDiez a veinte preguntas reales, incluyendo preguntas que usan sinónimos o una formulación diferente a la del documento fuente.
- 03Comparar dos o tres modelos con la misma muestraBGE-M3 frente a un modelo reconocido para el inglés y, si es posible, otro modelo multilingüe. Anotar cuántas veces aparece el pasaje correcto entre los tres primeros resultados.
- 04Decidir antes de la importación masivaLa prueba requiere media jornada; cambiar de modelo después de indexar un corpus completo obliga a volver a codificarlo todo, como se recordó más arriba.
#¿Cuánto cuesta?
Es un modelo de embedding más pesado que los pequeños modelos anglófonos de moda: sus 567 millones de parámetros y su descarga de 1,2 GB lo convierten en un modelo de peso medio dentro de la categoría, lejos de los modelos con unas pocas decenas de millones de parámetros que dominan las clasificaciones de velocidad pura. Codifica más lentamente y ocupa más memoria. En la indexación inicial de un gran corpus, esto se nota; en una pregunta aislada, la diferencia es imperceptible frente al tiempo de generación del modelo de lenguaje que viene después.
Otra consecuencia: sus vectores densos tienen una dimensión de 1.024, por lo que el índice ocupa más espacio que el de los modelos con 384 o 768 dimensiones. Con un millón de pasajes, estos cálculos ya no son despreciables, y es el momento de revisar las opciones de compresión de tu base vectorial.
| Modelo | Dimensión | Longitud máxima | Alcance |
|---|---|---|---|
| BAAI/bge-m3 | 1 024 | 8 192 tokens | Multilingüe, tres métodos de recuperación unificados |
| BAAI/bge-large-en-v1.5 | 1 024 | 512 tokens | Solo en inglés |
| BAAI/bge-base-en-v1.5 | 768 | 512 tokens | Solo en inglés, más ligero |
| BAAI/bge-small-en-v1.5 | 384 | 512 tokens | Solo inglés, el más ligero |
El contraste es claro: a igual dimensión (1 024), BGE-M3 acepta dieciséis veces más tokens por fragmento de texto que bge-large-en-v1.5 y cubre más de 100 idiomas, mientras que toda la familia «en» de BAAI se limita al inglés. Es el precio que hay que pagar, en tamaño de descarga y tiempo de codificación, para no tener que elegir un modelo diferente por cada idioma del corpus ni mantener varios índices separados según el idioma de los documentos entrantes.
#Cuándo elegirlo y cuándo prescindir de él
| Situación | Opciones |
|---|---|
| Corpus francés o multilingüe | BGE-M3 u otro modelo realmente multilingüe |
| Preguntas en francés sobre documentos en inglés | Un modelo multilingüe, imprescindible |
| Corpus exclusivamente anglófono, prioridad a la velocidad | Un pequeño modelo anglófono especializado |
| Pasajes largos (más allá de 512 tokens) que no se quieren dividir más | BGE-M3, por su longitud de entrada de 8.192 tokens |
| Máquina con recursos muy limitados | Un modelo más ligero, aunque pierda en pertinencia en francés |
- El panorama de los modelos de embedding para el francés
- Ejecutar un modelo de embedding localmente
- Reclasificar los candidatos para aumentar la precisión
- Almacenar estos vectores en PostgreSQL con pgvector
- Fuente: ficha oficial BGE-M3 en Hugging Face
- Fuente: bge-m3 en la biblioteca Ollama
- Fuente: repositorio y código oficial BGE-M3 (FlagEmbedding)
#FAQ
¿Es bueno BGE-M3 en francés?+
¿Se pueden consultar en francés documentos en inglés?+
¿Se necesita una tarjeta gráfica?+
¿Para qué sirven sus tres salidas?+
¿Cuántos tokens acepta BGE-M3 por fragmento de texto?+
¿Puedo cambiarlo más tarde?+
¿El modelo BGE-M3 es mejor que los modelos de OpenAI para el francés?+
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.