Comparación de modelos de embedding en Ollama
Qué cubre este artículo sobre modelos de embedding
- Qué son los embeddings.
- Qué modelos de embedding ofrece Ollama.
- Diferencias en dimensiones y calidad.
- Cómo usarlos para RAG y búsqueda semántica.
- Recomendaciones según el caso de uso.
Introducción: comparación de modelos de embedding en Ollama
Los embeddings convierten texto en vectores. Estos vectores permiten búsqueda semántica, clasificación y RAG. Ollama ofrece varios modelos de embedding que varían en tamaño, calidad y dimensiones del vector. El modelo correcto depende de la aplicación, el hardware disponible y la precisión deseada.
Este artículo compara los modelos de embedding más comunes en Ollama y ofrece recomendaciones prácticas.
Conceptos clave
- Embedding: Representación vectorial de un texto.
- Dimensión: Longitud del vector.
- RAG: Retrieval Augmented Generation.
- Cosine Similarity: Medida de similitud entre vectores.
- Semantic Search: Búsqueda por significado, no solo por palabras clave.
- Token: Unidad en que se divide el texto.
- Quantization: Reducción de la precisión del modelo.
Modelos de embedding disponibles
| Modelo | Dimensión | Tamaño | Nota |
|---|---|---|---|
| nomic-embed-text | 768 | 137M | Popular, buen equilibrio |
| nomic-embed-text-v1.5 | 768 | 137M | Versión mejorada |
| mxbai-embed-large | 1024 | 335M | Alta calidad |
| snowflake-arctic-embed | 768 | 335M | Optimizado para retrieval |
| all-minilm | 384 | 22M | Muy pequeño, rápido |
| bge-m3 | 1024 | 567M | Multilingüe |
nomic-embed-text
- Buena calidad general.
- 768 dimensiones.
- Relativamente rápido.
- Muy usado en ejemplos de Ollama.
mxbai-embed-large
- 1024 dimensiones.
- Resultados a menudo mejores en RAG.
- Más grande y más lento.
- Útil para sistemas RAG profesionales.
snowflake-arctic-embed
- Optimizado para retrieval de documentos.
- Buen rendimiento en conjuntos de datos amplios.
- 768 o 1024 dimensiones según la variante.
all-minilm
- Muy pequeño y rápido.
- 384 dimensiones.
- Para tareas simples y hardware limitado.
- Menos preciso que modelos más grandes.
bge-m3
- Fortaleza multilingüe.
- Soporta entradas largas.
- Más grande, pero flexible.
Seleccionar el modelo correcto
| Caso de uso | Recomendación |
|---|---|
| Búsqueda simple | all-minilm |
| RAG estándar | nomic-embed-text |
| Alta calidad | mxbai-embed-large |
| Retrieval de documentos | snowflake-arctic-embed |
| Multilingüe | bge-m3 |
Descargar en Ollama
ollama pull nomic-embed-text
ollama pull mxbai-embed-large
Generar embeddings
curl http://localhost:11434/api/embeddings -d '{
"model": "nomic-embed-text",
"prompt": "Docker es una herramienta de contenedores."
}'
Ejemplo en Python
import requests
url = "http://localhost:11434/api/embeddings"
payload = {
"model": "nomic-embed-text",
"prompt": "¿Qué es Ollama?"
}
response = requests.post(url, json=payload)
print(len(response.json()["embedding"]))
Considerar el chunking
Los modelos de embedding tienen limitaciones:
nomic-embed-text: 2048 tokens.mxbai-embed-large: 512 tokens.bge-m3: 8192 tokens.
Los textos más largos deben dividirse en chunks.
Comparar la calidad
La calidad se puede probar así:
- Generar embeddings del mismo texto con diferentes modelos.
- Verificar la similitud con documentos relevantes.
- Evaluar la relevancia de los resultados principales.
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
Memoria y velocidad
| Modelo | Velocidad | RAM/VRAM |
|---|---|---|
| all-minilm | muy rápida | muy poca |
| nomic-embed-text | rápida | poca |
| mxbai-embed-large | media | media |
| bge-m3 | más lenta | más |
Consejos prácticos
- Para RAG con Ollama:
nomic-embed-textomxbai-embed-large. - Ajusta el tamaño del chunk al límite del modelo.
- Usa el mismo modelo para queries y documentos.
- Ejecuta benchmarks en tus propios datos.
- El tamaño de la dimensión afecta el uso de memoria en la base de datos vectorial.
Enlaces y referencias
- BotServ.de Ollama Embeddings
- BotServ.de RAG Local
- BotServ.de Bases de datos vectoriales
- BotServ.de Recomendaciones de modelos Ollama
FAQ: Modelos de embedding en Ollama
¿Cuál es el mejor modelo de embedding?
Para muchos casos, nomic-embed-text. Para máxima calidad, mxbai-embed-large.
¿Necesito un modelo especial para RAG? Sí, el modelo de embedding y el LLM son separados.
¿Cuántas dimensiones tienen sentido? 384-1024 funcionan para la mayoría de aplicaciones.
¿Puedo combinar embeddings? No directamente, solo modelos con la misma dimensión y espacio similar.
¿Qué tamaño de chunk? Depende del límite de tokens del modelo, típicamente 256-1024 tokens.
Fuentes y lecturas adicionales
- Ollama Embeddings: https://ollama.com/blog/embedding-models
- Nomic Embed: https://docs.nomic.ai/reference/nomic-embed-text-v1
- MTEB Leaderboard: https://huggingface.co/spaces/mteb/leaderboard
Resumen: comparación de modelos de embedding en Ollama
Ollama ofrece varios modelos de embedding para requisitos distintos. nomic-embed-text es un buen modelo versátil, mxbai-embed-large proporciona mayor calidad, all-minilm es extremadamente rápido y pequeño. La elección depende de la calidad de RAG, el hardware y la velocidad. Lo importante es ajustar el tamaño del chunk, la dimensión del vector y usar consistentemente el mismo modelo para documentos y consultas. Probar un par de modelos con tus propios datos te llevará a la mejor solución.


