Evaluamos 14 modelos de incrustación de código abierto, autoalojados en una sola H100, a través de más de 500 consultas de recuperación curadas manualmente que abarcan contratos legales, notas técnicas de soporte al cliente y resúmenes médicos. NVIDIA Llama-Embed-Nemotron-8B lidera en precisión. En cuanto al costo, EmbeddingGemma-300m de Google funciona aproximadamente 4 veces más barato que Nemotron, con un pequeño sacrificio de precisión.
Resultados de la comparativa de modelos de incrustación de código abierto
Explicación de las métricas
nDCG@3: Ganancia acumulada descontada normalizada en el corte 3. Con un documento relevante por consulta, es 1 / log2(rango + 1) cuando el documento dorado cae en el top 3, y 0 en caso contrario. El rango 1 obtiene 1.000, el rango 2 obtiene 0.631 y el rango 3 obtiene 0.500. Usamos nDCG@3 como la métrica principal porque las pipelines de producción RAG alimentan los 3 a 5 fragmentos superiores al LLM, y el sesgo de primacía hace que el rango 1 importe desproporcionadamente.
nDCG@10: Misma fórmula con corte 10.
Recall@10: Fracción de consultas donde el documento dorado aparece en el top 10.
MRR@10: Rango recíproco medio en el corte 10. El dorado en el rango 1 obtiene 1.000, el rango 2 obtiene 0.500 y el rango 10 obtiene 0.100. Intención similar a nDCG@3 pero con una penalización de rango más pronunciada.
Acierto Top-1: Fracción de consultas donde el documento relevante dorado es el único resultado superior. La métrica más estricta y la más cercana a un flujo de trabajo de búsqueda sin LLM.
Resultados de nDCG@3 por dominio
La clasificación AVG oculta inversiones de dominio. Harrier gana en CUAD pero queda séptimo en TechQA. SFR-2 se clasifica segundo en TechQA pero solo cuarto en CUAD. KaLM-12B es quinto en MedRAG y noveno en TechQA. nDCG@3 por dominio:
BM25 es competitivo en MedRAG (0.7862, superando a PubMedBERT y al Granite multilingüe) y débil en CUAD (0.5844, donde 11 de los 14 modelos densos lo superan). Los contratos legales contienen un lenguaje de entidades denso que recompensa la coincidencia léxica. En los resúmenes médicos, los modelos densos superiores (Nemotron 0.9629, SFR-2 0.9620, jina-v5 0.9523) superan a BM25 por 0.17 a 0.18 puntos absolutos de nDCG@3.
Los intervalos de confianza bootstrap del 95% por celda (modelo, dominio), incluyendo un empate de cuatro vías en la parte superior de MedRAG y una superposición Harrier-Nemotron en CUAD que la clasificación de estimación puntual aplanó, se reportan en la sección de metodología de la comparativa.
Costo por millón de tokens
El costo autoalojado está amortizado por GPU: la tarifa por hora dividida por los tokens procesados por hora. El pod que usamos fue un RunPod community-cloud H100 80GB SXM5 a $2.99/hr. El tiempo de reloj por modelo a través del pase de 551 consultas y 3 corpus (~46.2M tokens en total) arroja las siguientes estimaciones de $/1M tokens:
La fórmula:
GPU $/hr = $2.99 (la tarifa de RunPod community H100 80GB SXM5 del pod que usamos). wall_seconds = tiempo total de reloj de cada modelo a través del pase de 551 consultas y 3 corpus. total_tokens ≈ 46.22M (suma de 3 corpus + 551 consultas, heurística de conteo de caracteres ÷ 4).
Ejemplo resuelto, Nemotron-8B: ($2.99 / 3600) × (1247.8 × 1,000,000 / 46,220,000) = $0.0224 por 1M tokens.
Cinco modelos lideran su nivel de costo (ninguna otra fila cuesta menos y obtiene una puntuación más alta): Granite-278m-multilingual en la parte inferior de la escalera de costos, luego Granite-small-r2, EmbeddingGemma-300m, jina-v5-text-small y Nemotron-8B en la parte superior de la escalera de calidad. Los endpoints abarcan 13x en costo ($0.0017/M a $0.0224/M) y 0.23 nDCG@3 absoluto (0.6952 a 0.9249).
Especialistas de dominio vs generalistas
PubMedBERT, ajustado finamente en pares de título-resumen de PubMed, es la "herramienta correcta" obvia para la recuperación de RAG médica en PubMed. Obtiene una puntuación de nDCG@3 = 0.7084 en MedRAG, que está por debajo de la línea base léxica de BM25 (0.7862) en el mismo corpus. Los generalistas modernos de código abierto lo superan por 0.22 a 0.25 puntos absolutos en su dominio de datos de entrenamiento:
La razón por la que el especialista tiene un rendimiento inferior es la antigüedad y la receta. PubMedBERT es un BERT de 110M de parámetros de 2022 con agrupación media simétrica y sin prefijo de instrucción. Los generalistas de 2024-2026 se construyen sobre bases más grandes, prefijos de consulta y documento asimétricos y objetivos de recuperación ajustados con instrucciones. La brecha arquitectónica importa más que la coincidencia de dominio: un ajuste fino de 4 años no puede mantenerse al día con un recuperador ajustado con instrucciones de última generación, incluso en el corpus de entrenamiento del ajuste fino.
La regla del comprador es probar un especialista de dominio contra un generalista moderno en consultas representativas antes de implementarlo. La suposición de que "el especialista ganará en su dominio" ya no es segura para los modelos de incrustación de código abierto en 2026.
Hallazgos de la comparativa de incrustación de código abierto
El liderazgo de Nemotron-8B en TechQA está estadísticamente separado del segundo lugar
Nemotron-8B AVG nDCG@3 = 0.9249. Por dominio, queda en 0.8602 en CUAD, 0.9515 en TechQA y 0.9629 en MedRAG. El resultado de TechQA (0.9515 0.923, 0.977) no se superpone con el segundo lugar SFR-Embedding-2_R (0.9109 0.869, 0.949). Los IC de bootstrap están limpios y separados. La base Llama-3.1 de 8B, ajustada finamente para recuperación con un prefijo del lado de la consulta Instruct: …\nQuery: … y un prefijo simétrico del lado del documento, impulsa un liderazgo absoluto de 0.04 nDCG@3 sobre la siguiente fila en cargas de trabajo de soporte de documentos largos.
Los dos dominios donde Nemotron gana directamente (TechQA, MedRAG) son los corpus de documentos largos donde la asimetría del prefijo de instrucción importa más. CUAD es el único dominio donde no lidera: Microsoft’s Harrier-oss-v1-0.6b (0.8720) supera a Nemotron (0.8602) en contratos legales a pesar de ser 13 veces más pequeño, aunque los IC se superponen y el liderazgo no está estadísticamente separado con este tamaño de muestra.
Un modelo de Microsoft Harrier de 0.6B supera a todos los modelos abiertos con menos de 7B de parámetros
Microsoft Harrier-oss-v1-0.6b (lanzado en 2026-04 con una base Qwen3-0.6B y una licencia MIT) queda en AVG nDCG@3 = 0.8911, cuarto en general. Supera al 12B Tencent KaLM-Gemma3 (0.8057, licencia comunitaria de Tencent), al 7B Salesforce SFR-Embedding-2_R en CUAD (0.8421 vs Harrier 0.8720) y a EmbeddingGemma-300m de Google (0.8706). En una comparación de la misma arquitectura, Harrier-0.6b (0.8911) se sitúa 0.074 nDCG@3 por encima de Qwen3-Embedding-0.6B (0.8168), construido sobre la misma base Qwen3-0.6B. El corpus de entrenamiento y la receta de instrucción impulsaron la brecha, no la cantidad de parámetros.
Para los compradores, Harrier es la fila de código abierto mejor clasificada que se envía con una licencia adecuada para uso comercial sin restricciones. SFR-2 (CC-BY-NC), Nemotron (NSCL-v1) y jina-v5 (CC-BY-NC) lo superan en la escalera AVG, pero los tres son solo para investigación o no comerciales.
Un incrustador especialista médico pierde ante BM25
NeuML’s PubMedBERT-base-embeddings fue ajustado finamente en pares de título-resumen de PubMed. Es la "herramienta correcta" obvia para una comparativa de RAG médica en PubMed. Obtiene una puntuación de nDCG@3 = 0.7084 en MedRAG, que es 0.078 absoluto por debajo de la línea base léxica de BM25 (0.7862) en el mismo corpus. Los generalistas de código abierto superiores en MedRAG caen muy por encima de ambos: Nemotron-8B 0.9629, SFR-Embedding-2_R 0.9620, Harrier-oss 0.9605, jina-v5 0.9523, KaLM-Gemma3-12B 0.9453.
Esta es la inversión que debería cambiar cómo un comprador elige un especialista de dominio. PubMedBERT es un BERT de 110M de parámetros de 2022, con agrupación media simétrica y sin prefijo de instrucción. El campo generalista de 2024 a 2026 se construye sobre bases más grandes, prefijos de consulta y documento asimétricos y objetivos de recuperación ajustados con instrucciones. En las consultas de MedRAG que ya incluyen vocabulario médico, la coincidencia léxica de BM25 es naturalmente fuerte, y la especialización de PubMedBERT no añade nada sobre ella.
La conclusión práctica no es elegir un incrustador especialista solo por nombre. Evalúelo en sus propias consultas antes de comprometerse.
Snowflake Arctic oscila 0.32 nDCG@3 a través de dominios
El snowflake-arctic-embed-l-v2.0 de Snowflake (568M, Apache-2.0, derivado de bge-m3-retromae, multilingüe) obtiene una puntuación de nDCG@3 = 0.5846 en contratos legales de CUAD y 0.9053 en resúmenes médicos de MedRAG. El mismo modelo, la misma receta, el mismo formato de consulta, con un cambio de 0.32 puntos en dos dominios. Otros modelos en la lista oscilan menos: SFR-2 abarca de 0.8421 a 0.9620 (brecha 0.12), Nemotron abarca de 0.8602 a 0.9629 (brecha 0.10), Harrier abarca de 0.8408 a 0.9605 (brecha 0.12).
El mecanismo es la composición de los datos de entrenamiento. Arctic fue ajustado en BEIR, MIRACL y CLEF; los contratos legales no están representados. Para una carga de trabajo de recuperación vertical, los datos de entrenamiento del dominio importan más que la cantidad de parámetros o la longitud del contexto.
Cómo funciona la inferencia de incrustación de código abierto
Los modelos de incrustación de código abierto se ejecutan en dos backends en esta comparativa: sentence-transformers (12 modelos) y vLLM (4 modelos). La división no se trata de calidad; se trata de eficiencia de tiempo de ejecución en modelos de 8B y superiores, donde el bucle de inferencia de Python predeterminado de sentence-transformers es demasiado lento para ser viable.
La receta por modelo importa más que la elección del backend. Los modelos de recuperación modernos usan prefijos asimétricos: el lado de la consulta está envuelto en un prompt estilo Instruct (Instruct: Given a question, retrieve passages...\nQuery: <text>) mientras que el lado del documento es plano. El tipo de agrupación varía: los modelos derivados de BERT usan agrupación CLS; los modelos derivados de LLM (Llama, Mistral, Qwen3, Gemma3 base) usan agrupación de último token; los modelos multilingües a menudo usan agrupación media. La tarjeta de HuggingFace para cada modelo es la fuente de verdad para qué combinación de prefijo y agrupación es correcta.
Nivel de backend:
- vLLM: Nemotron-8B, KaLM-Gemma3-12B, jina-v5-text-small
- sentence-transformers: Qwen3-0.6B, EmbeddingGemma-300m, trío de Granite, SFR-2, Conan-v1, PubMedBERT, GIST, Snowflake Arctic, Microsoft Harrier
Patrones de prefijo asimétrico observados:
- Instruct + Consulta/Documento: SFR-2, KaLM-Gemma3, Nemotron-8B, Qwen3-Embedding
- encode_query / encode_document integrado: EmbeddingGemma, KaLM-Gemma3, Nemotron-8B
- task / prompt_name (parámetro de sentence-transformers): jina-v5, Snowflake Arctic, Harrier
- Sin prefijo (simétrico): trío de Granite, Conan, PubMedBERT, GIST
Tipo de agrupación por arquitectura base:
- Agrupación CLS: trío de Granite r2, Snowflake Arctic
- Agrupación de último token: Nemotron, KaLM-Gemma3, SFR-2, jina-v5, Qwen3-Embedding, Harrier
- Agrupación media: EmbeddingGemma, Granite-multilingual, Conan, PubMedBERT, GIST
Usar la receta incorrecta degrada silenciosamente la calidad de recuperación sin bloquear. Cualquier comparativa de incrustadores de código abierto debe incluir un piso de sanidad (Recall@10 por debajo de 0.5 en todos los dominios para cualquier modelo es una señal de alerta de una mala configuración, no un resultado).
Metodología de la comparativa de modelos de incrustación de código abierto
Se evaluaron tres dominios de recuperación: contratos legales de CUAD (246 consultas, 509 contratos), notas técnicas de soporte al cliente de TechQA (151 consultas, 28000 notas técnicas de IBM), resúmenes de salud de MedRAG-PubMed (154 consultas, 50000 resúmenes). Total 551 consultas.
La metodología de construcción del conjunto de datos se comparte con nuestra anterior comparativa de modelos de incrustación en inglés: Generación de consultas por consenso de 3 LLM (Protocolo-A, pool de redactores rotativo, calificador fijo, dos validadores no redactores por intento), fijación de corpus por hash SHA-256, listas blancas de tokens prohibidos por entidad por dominio para evitar atajos léxicos de BM25, acuerdo inter-evaluador de Cohen’s κ reportado por par de validadores, rangos de línea base de BM25 sintetizados del campo bm25_rank_at_target ya presente en cada JSON de consulta (equivalente a Pyserini). Métrica principal nDCG@3 (realista para RAG, lo que consumen los sistemas de producción RAG); métricas secundarias nDCG@10, Recall@10, Recall@100, MRR@10, Acierto Top-1.
Especificaciones específicas de código abierto:
- GPU: 1 x NVIDIA H100 80GB SXM5 a través de la nube comunitaria de RunPod
- Plantilla de pod:
runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404
- Stack: PyTorch 2.10.0+cu128, vLLM 0.19.1, transformers 5.6.2, sentence-transformers 5.4.1
- Despacho por modelo: ruta principal de la tarjeta de modelo de HF. ST para 12 modelos, vLLM para Nemotron-8B, KaLM-Gemma3-12B, jina-v5-text-small.
- Fragmentación por modelo: truncamiento a nivel de caracteres en
max_seq_length x 4caracteres por token, luego el tokenizador del modelo trunca a su longitud de secuencia máxima real.
- Recuperación asimétrica: cada modelo que lo admite recibe el prefijo de consulta y documento documentado en la tarjeta de HF. Sin prefijo es el valor predeterminado documentado para algunos.
- Normalización L2: aplicada uniformemente después de la agrupación. Algunos modelos lo hacen internamente. Volvemos a normalizar para garantizar la paridad en toda la lista.
- Clave de caché de incrustación: incluye prefijo + tarea + prompt_name + max_seq + backend, para que un intercambio de prefijo a mitad de ejecución no pueda cargar silenciosamente incrustaciones obsoletas.
- Protocolo estadístico: 10K remuestreos bootstrap por celda (modelo, dominio, métrica), percentil 95% IC, semilla=2026.
Modelos probados
Ordenado por rango AVG nDCG@3. Columna de backend: ST = sentence-transformers, vLLM = vLLM 0.19.
Resultados de los intervalos de confianza bootstrap del 95%
La tabla de clasificación completa anterior es de una sola ejecución por celda (modelo, dominio). La varianza de inicialización del modelo entre sesiones no se mide. Para capturar la varianza a nivel de consulta dentro de la ejecución, remuestreamos el vector de rango por consulta para cada celda (modelo, dominio) 10,000 veces con reemplazo (método de percentil, semilla=2026, tamaños de muestra CUAD n=246, TechQA n=151, MedRAG n=154). IC bootstrap del 95% por dominio en nDCG@3:
Los IC cambian qué inversiones respalda los datos. En CUAD, Harrier (0.8720, [0.836, 0.906]) y Nemotron (0.8602, [0.821, 0.897]) se superponen, por lo que el liderazgo de Harrier en CUAD no está limpio y separado con este tamaño de muestra. En TechQA, Nemotron (0.9515, [0.923, 0.977]) y SFR-2 (0.9109, [0.869, 0.949]) no se superponen, por lo que el liderazgo de Nemotron en TechQA está estadísticamente separado. En MedRAG, los cuatro primeros (Nemotron 0.9629, SFR-2 0.9620, Harrier 0.9605, jina-v5 0.9523) están dentro de los IC de los demás y forman un empate estadístico de cuatro vías. La inversión PubMedBERT por debajo de BM25 en MedRAG (0.7084 [0.641, 0.772] vs BM25 0.7862) está en el margen de superposición. La tendencia central coloca claramente al especialista por debajo de BM25, pero se necesita un pase de 3 ejecuciones entre sesiones para resolverlo como separado en lugar de superpuesto.
Limitaciones
Una sola ejecución por celda (modelo, dominio). La tabla de IC bootstrap anterior captura la varianza a nivel de consulta dentro de la ejecución (10K remuestreos, método de percentil, semilla=2026), pero la varianza de inicialización del modelo entre sesiones no se mide. Se planea un pase de 3 ejecuciones entre medianoche para v2.1. Los lazos más cercanos revelados por la tabla de IC (por ejemplo, el empate de cuatro vías en la parte superior de MedRAG, la superposición Harrier-Nemotron en CUAD, la inversión marginal PubMedBERT-vs-BM25) se beneficiarían más del pase de múltiples ejecuciones.
Confusión de longitud de contexto por modelo. Los modelos con ventanas de contexto de 512 tokens (Granite-278m-multilingual, PubMedBERT, Conan, GIST) solo ven los primeros ~2K caracteres de cada documento. Los modelos con 8K o 32K de contexto (Nemotron, KaLM-12B, jina-v5, Harrier, Granite r2 english) ven el documento completo. Esto favorece a los modelos de contexto largo en TechQA (notas técnicas largas) y MedRAG (resúmenes largos).
Riesgo de contaminación de datos de entrenamiento de MedRAG. Varios de los modelos evaluados fueron entrenados con datos derivados de PubMed (PubMedBERT por definición, posiblemente Granite-278m-multilingual, posiblemente Qwen3 base). Algunos aumentos de nDCG@3 en MedRAG pueden reflejar superposición de datos de entrenamiento en lugar de calidad de recuperación.
Conan-v1 está entrenado en chino. Incluirlo en dominios solo en inglés es un dato instructivo sobre la falta de coincidencia de idiomas en lugar de una comparación justa de la calidad de recuperación en inglés. Esperamos un rendimiento inferior frente a pares entrenados en inglés y eso es lo que muestran los datos.
Conclusión
NVIDIA Llama-Embed-Nemotron-8B lidera con AVG nDCG@3 = 0.9249 con victorias estadísticamente separadas en TechQA y MedRAG. La opción de código abierto mejor clasificada bajo una licencia sin restricciones (MIT) es Microsoft Harrier-oss-v1-0.6b con un AVG de 0.8911. Google EmbeddingGemma-300m funciona a un costo aproximadamente 4 veces menor por un pequeño golpe de precisión.
Lectura adicional
Explora otras comparativas de RAG, como:
- Top 10 Modelos de Incrustación Multilingüe para RAG
- Modelos de Incrustación: OpenAI vs Gemini vs Voyage
- Top Base de Datos Vectorial para RAG: Qdrant vs Weaviate vs Pinecone
- Comparativa de Reranker: Top 8 Modelos Comparados
- Modelos de Incrustación Multimodal: Apple vs Meta vs OpenAI
- RAG Híbrido: Aumentando la Precisión de RAG
- RAG Gráfico vs RAG Vectorial
Cita este benchmark
Elige el formato que se ajuste al lugar donde vas a publicar. Pegar la versión con enlace en tu CMS conserva el enlace de retroceso.
@misc{sar2026,
author = {Sarı, Ekrem},
title = {{Comparativa de modelos de incrustación de código abierto para RAG}},
year = {2026},
month = jul,
howpublished = {\url{https://aimultiple.com/open-source-embedding-models}},
note = {AIMultiple. Recuperado el 3 de Julio de 2026}
}
Sé el primero en comentar
Tu dirección de correo electrónico no será publicada. Todos los campos son obligatorios. Los comentarios se dejan en su idioma original.