Modelos de Embedding en Comparativa
Qué cubre este artículo
- Qué son los modelos de embedding y cómo funcionan.
- nomic-embed-text, multilingual-e5, bge-m3 y otros en comparativa.
- Qué modelo para cada idioma y caso de uso.
- Requisitos de hardware y velocidad.
- Ejemplos prácticos para RAG y búsqueda semántica.
Introducción: Modelos de embedding explicados
Los modelos de embedding convierten texto en números (vectores). Textos similares producen vectores similares. Esto permite la búsqueda semántica: en lugar de hacer coincidir palabras clave, el sistema encuentra textos con significado parecido. Los embeddings son la base para RAG, búsqueda semántica y clustering de documentos.
Este artículo va dirigido a usuarios que quieren elegir modelos de embedding para RAG o búsqueda. Los fundamentos los encuentras en Embeddings y RAG Local.
¿Por qué necesito modelos de embedding?
Imagina que buscas “solicitud de vacaciones” y quieres encontrar también documentos que contengan “pedir vacaciones” o “solicitud de permiso”, aunque las palabras sean diferentes. Los embeddings entienden el significado, no solo las palabras. Esta es la base para RAG y la búsqueda inteligente.
Modelos de embedding en comparativa breve
Los modelos de embedding convierten texto en vectores (por ejemplo, 768 números). Textos similares tienen vectores similares. nomic-embed-text es un buen todoterreno, multilingual-e5 para multilingüismo, bge-m3 para documentos largos.
La idea central es: Texto → Números → Encontrar similitud.
A quién va dirigido este artículo
- Desarrolladores RAG, que necesitan embeddings para búsqueda de documentos.
- Constructores de motores de búsqueda, que implementan búsqueda semántica.
- Analistas de datos, que agrupan y clasifican textos.
- Usuarios autohospedados, que crean embeddings localmente.
Conocimientos previos en RAG son útiles.
Términos importantes
- Embedding - Texto a vector. Cuándo útil: para búsqueda semántica.
- RAG - Retrieval-Augmented Generation. Cuándo útil: la aplicación principal.
- Base de datos vectorial - Almacenamiento de embeddings. Cuándo útil: para búsqueda.
- Búsqueda semántica - Significado en lugar de palabras clave. Cuándo útil: para resultados mejores.
- Ollama - Servidor de modelos. Cuándo útil: para embeddings.
- Cosine Similarity - Medida de similitud. Cuándo útil: para comparaciones.
Cómo funcionan los embeddings
Texto: "Der Hund spielt im Garten"
│
▼
Embedding-Modell
│
▼
Vector: [0.23, -0.45, 0.78, ..., 0.12] (768 Dimensionen)
Texto similar: "Ein Hund spielt draußen"
│
▼
Vector: [0.21, -0.43, 0.81, ..., 0.15] (¡similar!)
Texto diferente: "Die Katze schläft auf dem Sofa"
│
▼
Vector: [-0.67, 0.89, -0.23, ..., 0.45] (diferente)
Los modelos en comparativa
| Modelo | Desarrollador | Dimensiones | Idiomas | Longitud máx. | Mejor para |
|---|---|---|---|---|---|
| nomic-embed-text | Nomic AI | 768 | Inglés | 8K | RAG general |
| multilingual-e5 | Microsoft | 1024 | 100+ | 512 | RAG multilingüe |
| bge-m3 | BAAI | 1024 | 100+ | 8K | Documentos largos |
| bge-large-en | BAAI | 1024 | Inglés | 512 | Textos en inglés |
| gte-Qwen2 | Alibaba | 1536 | Multilingüe | 32K | Documentos muy largos |
| mxbai-embed-large | Mixedbread | 1024 | Inglés | 512 | RAG en inglés |
Comparativa detallada
1. nomic-embed-text (Nomic AI)
Fortalezas:
- Embedding estándar en Ollama
- Buena calidad para textos en inglés
- Rápido y eficiente
- Bien documentado
Debilidades:
- Solo inglés (subóptimo para alemán)
- 768 dimensiones (menos que otros)
Recomendación: Usa nomic-embed-text para documentos en inglés.
2. multilingual-e5 (Microsoft)
Fortalezas:
- Más de 100 idiomas incluyendo alemán
- Muy buena calidad
- Estándar para aplicaciones multilingües
- multilingual-e5-large: mejor versión
Debilidades:
- Solo 512 tokens de contexto (textos cortos)
- Más grande que nomic
Recomendación: Usa multilingual-e5 para documentos en alemán o multilingües.
3. bge-m3 (BAAI)
Fortalezas:
- Multilingüe (más de 100 idiomas)
- Contexto de 8K (documentos largos)
- Muy buena calidad
- Híbrido: Dense + Sparse + Multi-Vector
Debilidades:
- Más grande y lento
- Más complejo (3 modos)
Recomendación: Usa bge-m3 para documentos largos y multilingües.
4. gte-Qwen2 (Alibaba)
Fortalezas:
- Contexto de 32K (documentos muy largos)
- Multilingüe
- Muy buena calidad
- Basado en Qwen
Debilidades:
- 1536 dimensiones (más memoria)
- Menos extendido
Recomendación: Usa gte-qwen2 para documentos muy largos.
Comparativa por idiomas
| Modelo | Alemán | Inglés | Multilingüe | Nota |
|---|---|---|---|---|
| nomic-embed-text | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | Solo inglés |
| multilingual-e5 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 100+ idiomas |
| bge-m3 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 100+ idiomas |
| gte-Qwen2 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Multilingüe |
Comparativa de longitud de contexto
| Modelo | Tokens máx. | Para qué |
|---|---|---|
| multilingual-e5 | 512 | Textos cortos, oraciones |
| bge-large-en | 512 | Textos cortos |
| nomic-embed-text | 8K | Documentos de longitud media |
| bge-m3 | 8K | Documentos largos |
| gte-Qwen2 | 32K | Documentos muy largos |
Ejemplo práctico: Embeddings con Ollama
import requests
# Crear embedding
def get_embedding(text, model="nomic-embed-text"):
response = requests.post(
"http://ollama:11434/api/embeddings",
json={
"model": model,
"prompt": text
}
)
return response.json()["embedding"]
# Ejemplo
text = "Der Hund spielt im Garten"
embedding = get_embedding(text)
print(f"Dimensiones: {len(embedding)}")
# Output: Dimensiones: 768
Ejemplo práctico: Pipeline RAG
import chromadb
import requests
# 1. Embeddar documentos y guardarlos
chroma = chromadb.HttpClient(host="chromadb", port=8000)
collection = chroma.get_or_create_collection("dokumente")
documents = [
"Der Hund spielt im Garten.",
"Katzen schlafen gerne auf dem Sofa.",
"Vögel fliegen am Himmel."
]
for i, doc in enumerate(documents):
embedding = get_embedding(doc)
collection.add(
ids=[f"doc_{i}"],
documents=[doc],
embeddings=[embedding]
)
# 2. Búsqueda semántica
query = "Welches Tier spielt draußen?"
query_embedding = get_embedding(query)
results = collection.query(
query_embeddings=[query_embedding],
n_results=1
)
print(results["documents"][0])
# Output: ["Der Hund spielt im Garten."]
Ejemplo práctico: Documentos en alemán
# multilingual-e5 para documentos en alemán
def get_german_embedding(text):
response = requests.post(
"http://ollama:11434/api/embeddings",
json={
"model": "multilingual-e5",
"prompt": text
}
)
return response.json()["embedding"]
# Documentos en alemán
docs = [
"Der Mitarbeiter beantragt Urlaub.",
"Die Rechnung ist fällig.",
"Das Meeting findet morgen statt."
]
for doc in docs:
emb = get_german_embedding(doc)
# Guardar en base de datos vectorial
Notas de seguridad
- Los embeddings no son reversibles: No puedes reconstruir el texto original a partir del vector. Pero pueden contener información sensible.
- Embeddings locales: Con Ollama todos los embeddings se quedan localmente. Con APIs en la nube los textos se envían.
- Sesgo: Los modelos de embedding tienen sesgos. Para aplicaciones críticas, prueba a fondo.
- Dimensiones: Más dimensiones = más memoria, pero no siempre mejor.
Errores comunes
- Modelo incorrecto para el idioma: nomic-embed-text para documentos en alemán es subóptimo. Usa multilingual-e5.
- Contexto demasiado corto: Los documentos largos deben dividirse en fragmentos. bge-m3 o gte-Qwen2 para textos extensos.
- Modelo de embedding para generación: Los modelos de embedding no generan texto. Solo crean vectores.
- Comparación sin normalización: Cosine Similarity requiere vectores normalizados.
- Demasiadas dimensiones: 1536 dimensiones consumen más memoria y no siempre mejoran la calidad.
Enlaces relacionados
- Embeddings - Conceptos fundamentales.
- Modelos de embedding - Para RAG.
- RAG local - Pipeline de RAG.
- Bases de datos vectoriales - Almacenamiento.
- Ollama - Servidor de modelos.
- Chunking - División de texto.
- Búsqueda híbrida - Búsqueda combinada.
Puntos clave:
- Los embeddings convierten texto en vectores para búsqueda semántica.
- nomic-embed-text = estándar para inglés.
- multilingual-e5 = mejor para alemán y multilingüe.
- bge-m3 = mejor para documentos largos.
- gte-Qwen2 = para documentos muy largos (32K).
- Para RAG en alemán: multilingual-e5 o bge-m3.
Preguntas frecuentes
¿Qué es un modelo de embedding?
¿Qué modelo de embedding para alemán?
¿Qué significan las dimensiones?
¿Cuán largo puede ser el texto?
¿Modelo de embedding o LLM?
¿Puedo crear embeddings con Ollama?
¿Qué es búsqueda híbrida?
¿Cuánto cuesta hacer embeddings?
Referencias y lecturas recomendadas
- nomic-embed-text - Modelo de Ollama.
- multilingual-e5 - Modelo de Microsoft.
- bge-m3 - Modelo de BAAI.
- Ollama Embeddings - API de embeddings.
- MTEB Leaderboard - Benchmarks de embeddings.


