Benchmark de Modelos de Embedding de Código Aberto para RAG
We benchmarked 14 open-source embedding models, across 500+ manually curated retrieval queries spanning legal contracts, customer support tech notes, and medical abstracts.
NVIDIA Llama-Embed-Nemotron-8B lidera em precisão. Em custo, o EmbeddingGemma-300m do Google tem custo cerca de 4x menor que o Nemotron, com uma pequena perda de precisão.
Resultados do benchmark de modelos de embedding de código aberto
Métricas explicadas
nDCG@3: Ganho cumulativo descontado normalizado no ponto de corte 3. Com um documento relevante por consulta, é 1 / log2(posição + 1) quando o documento gold aparece entre os 3 primeiros, e 0 caso contrário. A posição 1 pontua 1.000, a posição 2 pontua 0.631 e a posição 3 pontua 0.500. Usamos o nDCG@3 como a métrica principal porque os pipelines de RAG em produção alimentam os 3 a 5 principais trechos ao LLM, e o viés de primazia faz com que a posição 1 tenha peso desproporcional.
nDCG@10: Mesma fórmula com ponto de corte 10.
Recall@10: Fração de consultas em que o documento gold aparece entre os 10 primeiros.
MRR@10: Ranking recíproco médio no ponto de corte 10. O gold na posição 1 pontua 1.000, a posição 2 pontua 0.500 e a posição 10 pontua 0.100. Intenção semelhante ao nDCG@3, mas com penalidade de posição mais acentuada.
Acerto no Top-1: Fração de consultas em que o documento relevante gold é o único resultado principal. A métrica mais rigorosa e a mais próxima de um fluxo de trabalho de consulta sem LLM.
Resultados de nDCG@3 por domínio
O ranking AVG oculta inversões de domínio. O Harrier vence no CUAD, mas fica em sétimo no TechQA. O SFR-2 fica em segundo no TechQA, mas apenas em quarto no CUAD. O KaLM-12B fica em quinto no MedRAG e nono no TechQA. nDCG@3 por domínio:
O BM25 é competitivo no MedRAG (0.7862, superando o PubMedBERT e o Granite multilíngue) e fraco no CUAD (0.5844, onde 11 de 14 modelos densos o superam). Contratos jurídicos contêm linguagem densa de entidades que favorece a correspondência lexical. Em resumos médicos, os principais modelos densos (Nemotron 0.9629, SFR-2 0.9620, jina-v5 0.9523) superam o BM25 por 0.17 a 0.18 pontos absolutos de nDCG@3.
Os intervalos de confiança bootstrap de 95% por célula (modelo, domínio), incluindo um empate quádruplo no topo do MedRAG e uma sobreposição Harrier-Nemotron no CUAD que a classificação por estimativa pontual achata, estão reportados na seção de metodologia do benchmark.
Custo por milhão de tokens
O custo auto-hospedado é amortizado pela GPU: a taxa horária dividida pelos tokens processados por hora. O pod que usamos foi um H100 80GB SXM5 da nuvem comunitária RunPod a $2,99/hr. O tempo de execução por modelo na passagem de 551 consultas e 3 corpora (~46.2M tokens no total) produz as seguintes estimativas de $/1M tokens:
A fórmula:
GPU $/hr = $2,99 (a taxa RunPod community H100 80GB SXM5 do pod que usamos). wall_seconds = tempo de execução total de cada modelo na passagem de 551 consultas e 3 corpora. total_tokens ≈ 46.22M (soma de 3 corpora + 551 consultas, heurística de contagem de caracteres ÷ 4).
Exemplo prático, Nemotron-8B: ($2,99 / 3600) × (1247.8 × 1.000.000 / 46.220.000) = $0,0224 por 1M tokens.
Cinco modelos lideram sua faixa de custo (nenhuma outra linha custa menos e pontua mais ao mesmo tempo): Granite-278m-multilingual na base da escala de custo, depois Granite-small-r2, EmbeddingGemma-300m, jina-v5-text-small e Nemotron-8B no topo da escala de qualidade. Os extremos variam 13x em custo (de $0,0017/M a $0,0224/M) e 0.23 nDCG@3 absolutos (de 0.6952 a 0.9249).
Especialistas de domínio vs generalistas
O PubMedBERT, fine-tuned em pares título-resumo do PubMed, é a óbvia “ferramenta certa” para recuperação de RAG médica no PubMed. Ele pontua nDCG@3 = 0.7084 no MedRAG, o que está abaixo da linha de base lexical BM25 (0.7862) no mesmo corpus. Generalistas modernos de código aberto o superam por 0.22 a 0.25 pontos absolutos em seu domínio de dados de treinamento:
A razão de o especialista ter desempenho inferior é idade e receita. O PubMedBERT é um BERT de 110M parâmetros de 2022, com mean pooling simétrico e sem prefixo de instrução. Os generalistas de 2024 a 2026 são construídos sobre backbones maiores, prefixos assimétricos de consulta e documento e objetivos de recuperação ajustados por instrução. A diferença arquitetural importa mais do que a correspondência de domínio: um fine-tune de 4 anos não consegue acompanhar um recuperador atual ajustado por instrução, mesmo no próprio corpus de treinamento do fine-tune.
A regra para o comprador é testar um especialista de domínio contra um generalista moderno em consultas representativas antes de implantá-lo. A suposição de que “o especialista vencerá em seu domínio” já não é segura para modelos de embedding de código aberto em 2026.
Descobertas do benchmark de embedding de código aberto
A liderança do Nemotron-8B no TechQA está estatisticamente separada do segundo lugar
AVG nDCG@3 do Nemotron-8B = 0.9249. Por domínio, ele fica em 0.8602 no CUAD, 0.9515 no TechQA e 0.9629 no MedRAG. O resultado no TechQA (0.9515 0.923, 0.977) não se sobrepõe ao segundo colocado SFR-Embedding-2_R (0.9109 0.869, 0.949). Os ICs de bootstrap são claramente separáveis. A base 8B Llama-3.1, ajustada por instrução para recuperação com prefixo do lado da consulta Instruct: …\nQuery: … e prefixo simétrico do lado do documento, gera uma vantagem absoluta de 0.04 em nDCG@3 sobre a linha seguinte em cargas de trabalho de suporte a documentos longos.
Os dois domínios em que o Nemotron vence de forma absoluta (TechQA, MedRAG) são os corpora de documentos longos onde a assimetria de prefixo de instrução mais importa. O CUAD é o único domínio em que ele não lidera: o Harrier-oss-v1-0.6b da Microsoft (0.8720) supera o Nemotron (0.8602) em contratos jurídicos apesar de ser 13x menor, embora os ICs se sobreponham e a liderança não esteja estatisticamente separada neste tamanho de amostra.
Um modelo Harrier de 0.6B da Microsoft supera todos os modelos abertos com menos de 7B parâmetros
O Microsoft Harrier-oss-v1-0.6b (lançado em 2026-04 com base Qwen3-0.6B e licença MIT) fica com AVG nDCG@3 = 0.8911, quarto no geral. Ele supera o KaLM-Gemma3 de 12B da Tencent (0.8057, licença comunitária Tencent), o SFR-Embedding-2_R de 7B da Salesforce no CUAD (0.8421 vs Harrier 0.8720) e o EmbeddingGemma-300m do Google (0.8706). Em uma comparação de mesma arquitetura, o Harrier-0.6b (0.8911) fica 0.074 nDCG@3 acima do Qwen3-Embedding-0.6B (0.8168), construído sobre a base Qwen3-0.6B idêntica. O corpus de treinamento e a receita de instrução geraram a diferença, não a contagem de parâmetros.
Para compradores, o Harrier é a linha de código aberto mais bem classificada que é fornecida com uma licença adequada para uso comercial sem restrições. O SFR-2 (CC-BY-NC), o Nemotron (NSCL-v1) e o jina-v5 (CC-BY-NC) o superam na escala AVG, mas os três são somente para pesquisa ou não comerciais.
Um embedder especializado em medicina perde para o BM25
O PubMedBERT-base-embeddings da NeuML foi fine-tuned em pares título-resumo do PubMed. É a óbvia “ferramenta certa” para um benchmark de RAG médico no PubMed. Pontua nDCG@3 = 0.7084 no MedRAG, o que está 0.078 absoluto abaixo da linha de base lexical BM25 (0.7862) no mesmo corpus. Os principais generalistas de código aberto no MedRAG ficam bem acima 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 é a inversão que deveria mudar como um comprador escolhe um especialista de domínio. O PubMedBERT é um BERT de 110M parâmetros de 2022, com mean pooling simétrico e sem prefixo de instrução. O campo generalista de 2024 a 2026 é construído sobre backbones maiores, prefixos assimétricos de consulta e documento e objetivos de recuperação ajustados por instrução. Em consultas do MedRAG que já incluem vocabulário médico, a correspondência lexical do BM25 é naturalmente forte, e a especialização do PubMedBERT não acrescenta nada além disso.
A conclusão prática é não escolher um embedder especialista apenas pelo nome. Avalie-o em suas próprias consultas antes de se comprometer.
O Snowflake Arctic oscila 0.32 nDCG@3 entre domínios
O snowflake-arctic-embed-l-v2.0 da Snowflake (568M, Apache-2.0, derivado do bge-m3-retromae, multilíngue) pontua nDCG@3 = 0.5846 em contratos jurídicos do CUAD e 0.9053 em resumos médicos do MedRAG. O mesmo modelo, a mesma receita, o mesmo formato de consulta, com uma oscilação de 0.32 ponto entre dois domínios. Outros modelos na lista oscilam menos: o SFR-2 varia de 0.8421 a 0.9620 (diferença 0.12), o Nemotron varia de 0.8602 a 0.9629 (diferença 0.10), o Harrier varia de 0.8408 a 0.9605 (diferença 0.12).
O mecanismo é a composição dos dados de treinamento. O Arctic foi ajustado em BEIR, MIRACL e CLEF; contratos jurídicos não estão representados. Para uma carga de trabalho de recuperação vertical, os dados de treinamento do domínio importam mais do que a contagem de parâmetros ou o comprimento do contexto.
Como funciona a inferência de embedding de código aberto
Modelos de embedding de código aberto rodam em dois backends neste benchmark: sentence-transformers (12 modelos) e vLLM (4 modelos). A divisão não tem a ver com qualidade; tem a ver com eficiência em tempo de execução em modelos de 8B ou maiores, onde o loop de inferência Python padrão do sentence-transformers é lento demais para ser viável.
A receita por modelo importa mais do que a escolha do backend. Modelos de recuperação modernos usam prefixos assimétricos: o lado da consulta é envolvido em um prompt no estilo Instruct (Instruct: Given a question, retrieve passages...\nQuery: <text>) enquanto o lado do documento fica simples. O tipo de pooling varia: modelos derivados de BERT usam CLS pooling; modelos derivados de LLM (Llama, Mistral, Qwen3, base Gemma3) usam pooling do último token; modelos multilíngues frequentemente usam mean pooling. O cartão HuggingFace de cada modelo é a fonte da verdade sobre qual combinação de prefixo e pooling é correta.
Camada de backend:
- vLLM: Nemotron-8B, KaLM-Gemma3-12B, jina-v5-text-small
- sentence-transformers: Qwen3-0.6B, EmbeddingGemma-300m, trio Granite, SFR-2, Conan-v1, PubMedBERT, GIST, Snowflake Arctic, Microsoft Harrier
Padrões de prefixo assimétrico observados:
- Instruct + Query/Document: SFR-2, KaLM-Gemma3, Nemotron-8B, Qwen3-Embedding
- Built-in encode_query / encode_document: EmbeddingGemma, KaLM-Gemma3, Nemotron-8B
- task / prompt_name (parâmetro do sentence-transformers): jina-v5, Snowflake Arctic, Harrier
- Sem prefixo (simétrico): trio Granite, Conan, PubMedBERT, GIST
Tipo de pooling por arquitetura base:
- CLS pooling: trio Granite r2, Snowflake Arctic
- Pooling do último token: Nemotron, KaLM-Gemma3, SFR-2, jina-v5, Qwen3-Embedding, Harrier
- Pooling médio: EmbeddingGemma, Granite-multilingual, Conan, PubMedBERT, GIST
Usar a receita errada degrada silenciosamente a qualidade da recuperação sem gerar falhas. Qualquer benchmark de embedders de código aberto deve incluir um piso de sanidade (Recall@10 abaixo de 0.5 em todos os domínios para qualquer modelo é um sinal de alerta de má configuração, não um resultado).
Metodologia do benchmark de modelos de embedding de código aberto
Três domínios de recuperação foram avaliados: contratos jurídicos do CUAD (246 consultas, 509 contratos), notas técnicas de suporte ao cliente do TechQA (151 consultas, 28000 notas técnicas IBM), resumos de saúde do MedRAG-PubMed (154 consultas, 50000 resumos). Total de 551 consultas.
A metodologia de construção do dataset é compartilhada com nosso benchmark de modelos de embedding em inglês: geração de consultas por consenso de 3-LLM do Protocolo A (pool rotativo de redatores, avaliador fixo, dois validadores não redatores por tentativa), fixação do corpus por hash SHA-256, whitelists de tokens de entidades banidas por domínio para evitar atalhos lexicais do BM25, concordância interavaliadores κ de Cohen relatada por par de validadores, classificações de linha de base BM25 sintetizadas a partir do campo bm25_rank_at_target já presente em cada JSON de consulta (equivalente ao Pyserini). Métrica primária nDCG@3 (realista para RAG, o que os sistemas de RAG em produção consomem); métricas secundárias nDCG@10, Recall@10, Recall@100, MRR@10, Top-1 hit.
Especificações específicas de código aberto:
- GPU: 1 x NVIDIA H100 80GB SXM5 via nuvem comunitária RunPod
- Modelo 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: caminho primário do cartão HF. ST para 12 modelos, vLLM para Nemotron-8B, KaLM-Gemma3-12B, jina-v5-text-small.
- Segmentação por modelo: truncamento em nível de caractere em
max_seq_length x 4caracteres por token; depois o tokenizador do modelo trunca até seu comprimento máximo real de sequência. - Recuperação assimétrica: todo modelo que a suporta recebe o prefixo de consulta e documento documentado no cartão HF. Sem prefixo é o padrão documentado para alguns.
- Normalização L2: aplicada uniformemente após o pooling. Alguns modelos fazem isso internamente. Nós renormalizamos para garantir paridade em toda a lista.
- Chave de cache de embedding: inclui prefixo + tarefa + prompt_name + max_seq + backend, para que uma troca de prefixo durante a execução não possa carregar embeddings obsoletos silenciosamente.
- Protocolo estatístico: 10K reamostragens bootstrap por célula (modelo, domínio, métrica), IC percentil de 95%, seed=2026.
Modelos testados
Ordenado pela classificação AVG nDCG@3. Coluna de backend: ST = sentence-transformers, vLLM = vLLM 0.19.
Resultados dos intervalos de confiança bootstrap de 95%
O leaderboard completo acima é de execução única por célula (modelo, domínio). A variância de inicialização do modelo entre sessões não é medida. Para capturar a variância no nível de consulta dentro da execução, reamostramos o vetor de classificação por consulta para cada célula (modelo, domínio) 10.000 vezes com reposição (método percentil, seed=2026, tamanhos amostrais CUAD n=246, TechQA n=151, MedRAG n=154). IC bootstrap de 95% por domínio no nDCG@3:
Os ICs mudam quais inversões os dados suportam. No CUAD, o Harrier (0.8720, [0.836, 0.906]) e o Nemotron (0.8602, [0.821, 0.897]) se sobrepõem, portanto a liderança do Harrier no CUAD não é claramente separável neste tamanho de amostra. No TechQA, o Nemotron (0.9515, [0.923, 0.977]) e o SFR-2 (0.9109, [0.869, 0.949]) não se sobrepõem, portanto a liderança do Nemotron no TechQA está estatisticamente separada. No MedRAG, os quatro primeiros (Nemotron 0.9629, SFR-2 0.9620, Harrier 0.9605, jina-v5 0.9523) estão dentro dos ICs uns dos outros e formam um empate estatístico quádruplo. A inversão PubMedBERT-abaixo-do-BM25 no MedRAG (0.7084 [0.641, 0.772] vs BM25 0.7862) está na margem de sobreposição. A tendência central coloca claramente o especialista abaixo do BM25, mas uma passagem de 3 execuções entre sessões é necessária para resolvê-la como separada em vez de sobreposta.
Limitações
Execução única por célula (modelo, domínio). A tabela de IC bootstrap acima captura a variância no nível de consulta dentro da execução (10K reamostragens, método percentil, seed=2026), mas a variância de inicialização do modelo entre sessões não é medida. Uma passagem de 3 execuções ao longo de sessões diferentes está planejada para a v2.1. Os empates mais próximos revelados pela tabela de IC (por exemplo, o empate quádruplo no topo do MedRAG, a sobreposição Harrier-Nemotron no CUAD, a inversão marginal PubMedBERT vs BM25) se beneficiariam mais da passagem com múltiplas execuções.
Confusão do comprimento de contexto por modelo. Modelos com janelas de contexto de 512 tokens (Granite-278m-multilíngue, PubMedBERT, Conan, GIST) veem apenas os primeiros ~2K caracteres de cada documento. Modelos com contexto de 8K ou 32K (Nemotron, KaLM-12B, jina-v5, Harrier, Granite r2 english) veem o documento completo. Isso favorece modelos de contexto longo no TechQA (notas técnicas longas) e no MedRAG (resumos longos).
Risco de contaminação por dados de treinamento no MedRAG. Vários dos modelos avaliados foram treinados em dados derivados do PubMed (PubMedBERT por definição, possivelmente Granite-278m-multilíngue, possivelmente base Qwen3). Parte do ganho de nDCG@3 no MedRAG pode refletir sobreposição de dados de treinamento, e não qualidade de recuperação.
O Conan-v1 é treinado em chinês. Incluí-lo em domínios somente em inglês é um ponto de dados instrutivo sobre incompatibilidade de idioma, em vez de uma comparação justa sobre qualidade de recuperação em inglês. Esperamos desempenho inferior em relação a pares treinados em inglês, e é isso que os dados mostram.
Conclusão
NVIDIA Llama-Embed-Nemotron-8B lidera com AVG nDCG@3 = 0.9249 e vitórias estatisticamente separadas no TechQA e no MedRAG. A escolha de código aberto mais bem classificada sob uma licença irrestrita (MIT) é o Microsoft Harrier-oss-v1-0.6b com AVG 0.8911. O Google EmbeddingGemma-300m roda com custo aproximadamente 4x menor, com uma pequena perda de precisão.
Leitura adicional
Explore outros benchmarks de RAG, como:
- Top 10 Modelos de Embedding Multilíngues para RAG
- Modelos de Embedding: OpenAI vs Gemini vs Voyage
- Melhor banco de dados vetorial para RAG: Qdrant vs Weaviate vs Pinecone
- Benchmark de Rerankers: Top 8 Modelos Comparados
- Modelos de Embedding Multimodais: Apple vs Meta vs OpenAI
Cite este benchmark
Escolha o formato adequado ao local onde você vai publicar. Colar a versão com link no seu CMS preserva o backlink.
@misc{sari2026,
author = {Sarı, Ekrem},
title = {{Benchmark de Modelos de Embedding de Código Aberto para RAG}},
year = {2026},
month = aug,
howpublished = {\url{https://aimultiple.com/open-source-embedding-models}},
note = {AIMultiple. Acessado em 10 Agosto 2026}
}Resultados e carimbos de data/hora de 44 pontos de dados. Baixe os dados utilizados neste artigo como um arquivo ZIP contendo 3 arquivos CSV e um README.
Registro de alterações
4 atualizações- 2026
O benchmark Top-K de 16 modelos sobre avaliações da Amazon foi substituído por um de 14 modelos com nDCG@3 e custos em CUAD, TechQA e MedRAG.
Adicionada Licença e uso comercial à visão geral dos modelos de incorporação de código aberto.
O benchmark foi expandido para incluir cinco modelos adicionais de código aberto.
Hardware, tamanho do lote e precisão atualizados na configuração de avaliação.
Seja o primeiro a comentar
Seu endereço de e-mail não será publicado. Todos os campos são obrigatórios. Os comentários são deixados em seu idioma original.