Serviços
Contate-nos

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.

Ekrem Sarı
Ekrem Sarı
atualizado em 10 ago. 2026
Loading Chart

NVIDIA Llama-Embed-Nemotron-8B lidera em precisão. Em custo, o EmbeddingGemma-300m do Google roda cerca de 4x mais barato que o Nemotron ao custo de 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 corte 3. Com um documento relevante por consulta, é 1 / log2(posição + 1) quando o documento ouro fica no top 3, 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 nDCG@3 como métrica primária porque os RAG pipelines de produção alimentam os 3 a 5 blocos principais ao LLM, e o viés de primazia faz a posição 1 importar desproporcionalmente.

nDCG@10: Mesma fórmula com corte 10.

Recall@10: Fração de consultas em que o documento ouro aparece no top 10.

MRR@10: Rank recíproco médio no corte 10. O documento ouro na posição 1 pontua 1.000, na posição 2 pontua 0.500 e na posição 10 pontua 0.100. Intenção semelhante ao nDCG@3, mas com penalidade de posição mais acentuada.

Hit Top-1: Fração de consultas em que o documento relevante (ouro) é o único resultado no topo. 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 esconde inversões de domínio. O Harrier vence em CUAD, mas fica em sétimo em TechQA. O SFR-2 fica em segundo em TechQA, mas apenas em quarto em CUAD. O KaLM-12B fica em quinto em MedRAG e em nono em TechQA. nDCG@3 por domínio:

Loading Chart

O BM25 é competitivo em MedRAG (0.7862, superando o PubMedBERT e o Granite multilíngue) e fraco em CUAD (0.5844, onde 11 de 14 modelos densos o superam). Contratos jurídicos contêm linguagem densa de entidades que favorece 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 em 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 em MedRAG no topo e uma sobreposição Harrier-Nemotron em CUAD que o ranking de estimativa pontual achata, são relatados 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 RunPod community cloud a $2.99/h. O tempo de relógio por modelo na passada de 551 consultas e 3 corpora (~46.2M tokens no total) produz as seguintes estimativas de $/1M tokens:

A fórmula:

GPU $/h = $2.99 (a taxa do H100 80GB SXM5 da RunPod community cloud do pod que usamos). wall_seconds = tempo total de relógio de cada modelo na passada de 551 consultas e 3 corpora. total_tokens ≈ 46.22M (soma de 3 corpora + 551 consultas, heurística de contagem de caracteres ÷ 4).

Exemplo trabalhado, 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 alto): Granite-278m-multilíngue na base da escada de custo, depois Granite-small-r2, EmbeddingGemma-300m, jina-v5-text-small e Nemotron-8B no topo da escada de qualidade. Os extremos abrangem 13x em custo ($0.0017/M a $0.0224/M) e 0.23 nDCG@3 absoluto (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 médica de RAG no PubMed. Ele pontua nDCG@3 = 0.7084 em MedRAG, o que está abaixo da linha de base lexical BM25 (0.7862) no mesmo corpus. Generalistas modernos de código aberto o superam em 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-2026 são construídos em backbones maiores, prefixos assimétricos de consulta e documento e objetivos de recuperação ajustados por instruções. A lacuna arquitetural importa mais do que a correspondência de domínio: um fine-tune de 4 anos não consegue acompanhar um recuperador da geração atual ajustado por instruções, mesmo no próprio corpus de treinamento do fine-tune.

A regra do 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” não é mais segura para modelos de embedding de código aberto em 2026.

Deixe nossa equipe automatizar um dos seus processos de negócio com agentes de IA, gratuitamente.
Automatizar um processo

Descobertas do benchmark de embedding de código aberto

A liderança do Nemotron-8B em TechQA está estatisticamente separada do segundo lugar

O Nemotron-8B tem AVG nDCG@3 = 0.9249. Por domínio, ele atinge 0.8602 em CUAD, 0.9515 em TechQA e 0.9629 em MedRAG. O resultado em TechQA (0.9515 0.923, 0.977) não se sobrepõe ao segundo lugar SFR-Embedding-2_R (0.9109 0.869, 0.949). Os CIs de bootstrap são claramente separados. A base 8B Llama-3.1, ajustada por instruções para recuperação com um prefixo do lado da consulta Instruct: …\nQuery: … e um prefixo simétrico do lado do documento, impulsiona uma vantagem absoluta de 0.04 nDCG@3 sobre a próxima linha 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. 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 CIs se sobreponham e a liderança não seja estatisticamente separada neste tamanho de amostra.

Um modelo Harrier da Microsoft de 0.6B supera todos os modelos abertos com menos de 7B parâmetros

O Microsoft Harrier-oss-v1-0.6b (lançado em 2026-04 com uma base Qwen3-0.6B e licença MIT) atinge 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 em 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 idêntica Qwen3-0.6B. O corpus de treinamento e a receita de instrução impulsionaram a diferença, não a contagem de parâmetros.

Para compradores, o Harrier é a linha de código aberto mais bem classificada que vem com uma licença adequada para uso comercial sem restrições. SFR-2 (CC-BY-NC), Nemotron (NSCL-v1) e jina-v5 (CC-BY-NC) o superam na escada AVG, mas os três são apenas para pesquisa ou não comerciais.

Um embedder especialista médico 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 médico de RAG no PubMed. Ele pontua nDCG@3 = 0.7084 em MedRAG, o que é 0.078 absoluto abaixo da linha de base lexical BM25 (0.7862) no mesmo corpus. Os principais generalistas de código aberto em MedRAG ficam muito 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 deve 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 em backbones maiores, prefixos assimétricos de consulta e documento e objetivos de recuperação ajustados por instruções. Em consultas 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 em cima disso.

A conclusão prática é não escolher um embedder especialista apenas pelo nome. Faça benchmark com suas próprias consultas antes de se comprometer.

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 CUAD e 0.9053 em resumos médicos MedRAG. O mesmo modelo, mesma receita, mesmo formato de consulta, com uma oscilação de 0.32 ponto entre dois domínios. Outros modelos na lista oscilam menos: SFR-2 abrange 0.8421 a 0.9620 (lacuna 0.12), Nemotron abrange 0.8602 a 0.9629 (lacuna 0.10), Harrier abrange 0.8408 a 0.9605 (lacuna 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 de domínio importam mais do que a contagem de parâmetros ou o comprimento do contexto.

Como funciona a inference 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 é sobre qualidade; é sobre eficiência de tempo de execução em modelos de 8B e maiores, onde o loop de inference Python padrão do sentence-transformers é lento demais para ser tratável.

A receita por modelo importa mais do que a escolha do backend. Modelos modernos de recuperação usam prefixos assimétricos: o lado da consulta é envolvido em um prompt estilo Instruct (Instruct: Given a question, retrieve passages...\nQuery: <text>) enquanto o lado do documento é simples. O tipo de pooling varia: modelos derivados de BERT usam CLS pooling; modelos derivados de LLM (Llama, Mistral, Qwen3, base Gemma3) usam last-token pooling; modelos multilíngues frequentemente usam mean pooling. O card do HuggingFace para cada modelo é a fonte de verdade para 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, Granite trio, SFR-2, Conan-v1, PubMedBERT, GIST, Snowflake Arctic, Microsoft Harrier

Padrões assimétricos de prefixo observados:

  • Instruct + Query/Document: SFR-2, KaLM-Gemma3, Nemotron-8B, Qwen3-Embedding
  • encode_query / encode_document embutidos: EmbeddingGemma, KaLM-Gemma3, Nemotron-8B
  • task / prompt_name (parâmetro do sentence-transformers): jina-v5, Snowflake Arctic, Harrier
  • Sem prefixo (simétrico): Granite trio, Conan, PubMedBERT, GIST

Tipo de pooling por arquitetura base:

  • CLS pooling: Granite r2 trio, Snowflake Arctic
  • Last-token pooling: Nemotron, KaLM-Gemma3, SFR-2, jina-v5, Qwen3-Embedding, Harrier
  • Mean pooling: EmbeddingGemma, Granite-multilingual, Conan, PubMedBERT, GIST

Usar a receita errada degrada silenciosamente a qualidade da recuperação sem travar. 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 para má configuração, não um resultado).

Não perca os nossos benchmarks e insights baseados em dados. O botão abre o Google; selecionar a AIMultiple confirma que deseja ver a AIMultiple com mais frequência nos resultados de pesquisa do Google.
GoogleAdicionar como fonte preferencial

Metodologia do benchmark de modelos de embedding de código aberto

Três domínios de recuperação foram avaliados: contratos jurídicos CUAD (246 consultas, 509 contratos), notas técnicas de suporte ao cliente TechQA (151 consultas, 28000 notas técnicas da IBM), resumos de saúde 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 anterior: geração de consulta por consenso de 3 LLM do Protocolo-A (pool rotativo de escritores, avaliador fixo, dois validadores não escritores por tentativa), fixação de corpus por hash SHA-256, listas de permissão de tokens banidos por entidade por domínio para evitar atalhos lexicais do BM25, concordância interavaliadores Cohen’s κ relatada por par de validadores, ranks da linha de base BM25 sintetizados 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 produção de RAG 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 RunPod community cloud
  • Template 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 card de modelo HF. ST para 12 modelos, vLLM para Nemotron-8B, KaLM-Gemma3-12B, jina-v5-text-small.
  • Chunking por modelo: truncamento em nível de caractere em max_seq_length x 4 caracteres por token, então o tokenizer do modelo trunca para seu comprimento máximo de sequência real.
  • Recuperação assimétrica: todo modelo que suporta isso recebe o prefixo de consulta e documento documentado no card HF. Sem prefixo é o padrão documentado para alguns.
  • Normalização L2: aplicada uniformemente pós-pooling. Alguns modelos fazem isso internamente. Nós renormalizamos para garantir paridade em toda a lista.
  • Chave de cache de embedding: inclui prefixo + task + prompt_name + max_seq + backend, para que uma troca de prefixo no meio da execução não possa carregar silenciosamente embeddings obsoletos.
  • Protocolo estatístico: 10K reamostragens bootstrap por célula (modelo, domínio, métrica), CI percentil 95%, seed=2026.

Modelos testados

Ordenado pelo rank 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 entre sessões não é medida. Para capturar a variância no nível da consulta dentro da execução, reamostramos o vetor de rank por consulta para cada célula (modelo, domínio) 10.000 vezes com reposição (método percentil, seed=2026, tamanhos de amostra CUAD n=246, TechQA n=151, MedRAG n=154). CI bootstrap de 95% por domínio em nDCG@3:

Os CIs mudam quais inversões os dados suportam. Em CUAD, o Harrier (0.8720, [0.836, 0.906]) e o Nemotron (0.8602, [0.821, 0.897]) se sobrepõem, então a liderança do Harrier em CUAD não é claramente separada neste tamanho de amostra. Em TechQA, o Nemotron (0.9515, [0.923, 0.977]) e o SFR-2 (0.9109, [0.869, 0.949]) não se sobrepõem, então a liderança do Nemotron em TechQA é estatisticamente separada. Em MedRAG, os quatro primeiros (Nemotron 0.9629, SFR-2 0.9620, Harrier 0.9605, jina-v5 0.9523) estão dentro dos CIs uns dos outros e formam um empate estatístico quádruplo. A inversão do PubMedBERT abaixo do BM25 em MedRAG (0.7084 [0.641, 0.772] vs BM25 0.7862) está na margem da sobreposição. A tendência central claramente coloca o especialista abaixo do BM25, mas uma passada de 3 execuções entre sessões é necessária para resolvê-lo como separado em vez de sobreposto.

Limitações

Execução única por célula (modelo, domínio). A tabela de CI bootstrap acima captura a variância no nível da consulta dentro da execução (10K reamostragens, método percentil, seed=2026), mas a variância de inicialização entre sessões não é medida. Uma passada de 3 execuções entre meias-noites está planejada para a v2.1. Os empates mais próximos revelados pela tabela de CI (por exemplo, o empate quádruplo em MedRAG no topo, a sobreposição Harrier-Nemotron em CUAD, a inversão marginal PubMedBERT-vs-BM25) se beneficiariam mais da passada de múltiplas execuções.

Fator de confusão de comprimento de contexto por modelo. Modelos com janelas de contexto de 512 tokens (Granite-278m-multilíngue, PubMedBERT, Conan, GIST) só veem 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 em TechQA (notas técnicas longas) e MedRAG (resumos longos).

Risco de contaminação dos dados de treinamento do MedRAG. Vários dos modelos avaliados foram treinados em dados derivados do PubMed (PubMedBERT por definição, possivelmente Granite-278m-multilíngue, possivelmente a base Qwen3). Parte do aumento de nDCG@3 em MedRAG pode refletir sobreposição de dados de treinamento em vez de qualidade de recuperação.

O Conan-v1 é treinado em chinês. Incluí-lo em domínios apenas em inglês é um ponto de dados instrutivo sobre incompatibilidade de idioma, em vez de uma comparação justa da qualidade de recuperação em inglês. Esperamos desempenho inferior em relação aos 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 com vitórias estatisticamente separadas em TechQA e 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 cerca de 4x menor para uma pequena perda de precisão.

Leitura adicional

Explore outros benchmarks de RAG, como:

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.

Ekrem Sarı (2026) - "Benchmark de Modelos de Embedding de Código Aberto para RAG". Publicado on-line em AIMultiple.com. Acessado em 10 Agosto 2026, em: https://aimultiple.com/open-source-embedding-models [Recurso on-line]

Sarı, E. (2026, 10 Agosto). Benchmark de Modelos de Embedding de Código Aberto para RAG. AIMultiple. https://aimultiple.com/open-source-embedding-models

@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}
}
Baixar todos os dados

Resultados e carimbos de data/hora de 15 pontos de dados. Baixe os dados utilizados neste artigo como um arquivo ZIP contendo um arquivo CSV e um README.

Última atualização: 14 Agosto 2026
Baixar
Ekrem Sarı
Ekrem Sarı
Pesquisador de IA
Ekrem é Pesquisador de IA e Analista de Dados na AIMultiple. Ele projeta e executa benchmarks práticos para sistemas de IA e LLM.
Ver perfil completo

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.

0/450