Milvus
Zilliz
  • Home
  • Blog
  • Como criámos um modelo de realce semântico para a poda de contexto RAG e a gravação de tokens

Como criámos um modelo de realce semântico para a poda de contexto RAG e a gravação de tokens

  • Engineering
January 19, 2026
Cheney Zhang, Jiang Chen

O problema: Ruído RAG e desperdício de tokens

A pesquisa vetorial é uma base sólida para os sistemas RAG - assistentes empresariais, agentes de IA, bots de apoio ao cliente e muito mais. Ela encontra de forma confiável os documentos que importam. Mas a recuperação por si só não resolve o problema do contexto. Mesmo os índices bem ajustados devolvem pedaços que são amplamente relevantes, enquanto apenas uma pequena fração das frases dentro desses pedaços responde realmente à consulta.

Nos sistemas de produção, esta lacuna aparece imediatamente. Uma única consulta pode obter dezenas de documentos, cada um com milhares de tokens. Apenas um punhado de frases contém o sinal real; o resto é contexto que incha o uso de tokens, atrasa a inferência e muitas vezes distrai o LLM. O problema torna-se ainda mais óbvio nos fluxos de trabalho dos agentes, em que as próprias consultas são o resultado de um raciocínio em várias etapas e correspondem apenas a pequenas partes do texto recuperado.

Isto cria uma necessidade clara de um modelo que possa identificar e realçar as frases úteis e ignorar o resto - essencialmente, filtragem de relevância ao nível da frase, ou aquilo a que muitas equipas se referem como poda de contexto. O objetivo é simples: manter as partes que interessam e eliminar o ruído antes que este chegue ao LLM.

O destaque tradicional baseado em palavras-chave não consegue resolver este problema. Por exemplo, se um utilizador perguntar "Como posso melhorar a eficiência de execução do código Python?", um destacador de palavras-chave irá selecionar "Python" e "eficiência", mas não irá detetar a frase que realmente responde à pergunta - "Usar operações vectorizadas NumPy em vez de loops" - porque não partilha palavras-chave com a consulta. Em vez disso, o que precisamos é de compreensão semântica, e não de correspondência de strings.

Um modelo de realce semântico para filtragem de ruído e poda de contexto do RAG

Para facilitar a tarefa dos criadores de RAG, treinámos e disponibilizámos um modelo de Realce Semântico que identifica e realça as frases dos documentos recuperados que estão mais alinhadas semanticamente com a consulta. Atualmente, o modelo apresenta o desempenho mais avançado em inglês e chinês e foi concebido para se integrar diretamente nos pipelines RAG existentes.

Detalhes do modelo

  • HuggingFace: zilliz/semantic-highlight-bilingual-v1

  • Licença: MIT (comercialmente amigável)

  • Arquitetura: 0.6B modelo só de codificador baseado no BGE-M3 Reranker v2

  • Janela de contexto: 8192 tokens

  • Idiomas suportados: Inglês e chinês

O Semantic Highlighting fornece os sinais de relevância necessários para selecionar apenas as partes úteis de documentos longos recuperados. Na prática, este modelo permite:

  • Melhor interpretabilidade, mostrando que partes de um documento são realmente importantes

  • Redução de 70-80% no custo dos tokens, enviando apenas as frases destacadas para o LLM

  • Melhor qualidade de resposta, uma vez que o modelo vê menos contexto irrelevante

  • Maior facilidade de depuração, porque os engenheiros podem inspecionar diretamente as correspondências ao nível da frase

Resultados da avaliação: Alcançando o desempenho do SOTA

Avaliámos o nosso modelo de Realce Semântico em vários conjuntos de dados em inglês e chinês, em condições dentro e fora do domínio.

Os conjuntos de referência incluem:

  • QA multi-span inglês: multispanqa

  • Wikipedia fora do domínio inglês: wikitext2

  • GQ multi -spanchinês: multispanqa_zh

  • Wikipédiachinesa fora do domínio: wikitext2_zh

Os modelos avaliados incluem:

Nos quatro conjuntos de dados, o nosso modelo alcança a melhor classificação. Mais importante ainda, é o único modelo que tem um desempenho consistentemente bom tanto em inglês como em chinês. Os modelos concorrentes ou se concentram exclusivamente no inglês ou mostram claras quedas de desempenho no texto chinês.

Como criámos este modelo de realce semântico

Treinar um modelo para esta tarefa não é a parte mais difícil; treinar um bom modelo que lide com os problemas anteriores e ofereça um desempenho próximo do SOTA é onde o verdadeiro trabalho acontece. A nossa abordagem centrou-se em duas coisas:

  • Arquitetura do modelo: utilizar um design apenas de codificador para uma inferência rápida.

  • Dados de treino: gerar rótulos de relevância de alta qualidade utilizando LLMs com capacidade de raciocínio e escalar a geração de dados com estruturas de inferência local.

Arquitetura do modelo

Construímos o modelo como uma rede leve apenas de codificador que trata a poda de contexto como uma tarefa de pontuação de relevância ao nível do token. Este design é inspirado por Provence, uma abordagem de poda de contexto introduzida por Naver no ICLR 2025, que reformula a poda de "escolher o pedaço certo" para "pontuar cada token". Esse enquadramento alinha-se naturalmente com o realce semântico, em que os sinais finos são essenciais.

Os modelos apenas de codificador não são a arquitetura mais recente, mas continuam a ser extremamente práticos neste caso: são rápidos, fáceis de escalar e podem produzir pontuações de relevância para todas as posições de token em paralelo. Para um sistema RAG de produção, essa vantagem de velocidade é muito mais importante do que usar um modelo de descodificador maior.

Depois de calcularmos as pontuações de relevância ao nível dos tokens, agregamo-las em pontuações ao nível das frases. Este passo transforma sinais de tokens ruidosos numa métrica de relevância estável e interpretável. As frases acima de um limiar configurável são destacadas; tudo o resto é filtrado. Isto produz um mecanismo simples e fiável para selecionar as frases que realmente interessam à consulta.

Processo de inferência

Em tempo de execução, o nosso modelo de realce semântico segue um processo simples:

  1. Entrada - O processo começa com uma consulta do utilizador. Os documentos recuperados são tratados como contexto candidato para avaliação da relevância.

  2. Processamento do modelo - A consulta e o contexto são concatenados numa única sequência: [BOS] + Consulta + Contexto

  3. Pontuação de tokens - A cada token no contexto é atribuída uma pontuação de relevância entre 0 e 1, reflectindo a sua forte relação com a consulta.

  4. Agregação de frases - As pontuações dos tokens são agregadas ao nível da frase, normalmente através de uma média, para produzir uma pontuação de relevância para cada frase.

  5. Filtragem de limiar - As frases com pontuações acima de um limiar configurável são destacadas e retidas, enquanto as frases com pontuações baixas são filtradas antes de serem passadas para o LLM a jusante.

Modelo de base: BGE-M3 Reranker v2

Selecionámos o BGE-M3 Reranker v2 como modelo de base por várias razões:

  1. Utiliza uma arquitetura de codificador adequada para a pontuação de tokens e frases

  2. Suporta vários idiomas com otimização para inglês e chinês

  3. Fornece uma janela de contexto de 8192 tokens apropriada para documentos RAG mais longos

  4. Mantém parâmetros de 0,6B - suficientemente fortes sem serem computacionalmente pesados

  5. Assegura um conhecimento do mundo suficiente no modelo de base

  6. Treinado para a reclassificação, que se aproxima das tarefas de avaliação da relevância

Dados de treino: Anotação LLM com raciocínio

Uma vez finalizada a arquitetura do modelo, o desafio seguinte foi construir um conjunto de dados que permitisse treinar um modelo fiável. Começámos por ver como a Open Provence lida com isto. A sua abordagem utiliza conjuntos de dados públicos de QA e um pequeno LLM para identificar as frases que são relevantes. É bem escalável e fácil de automatizar, o que a tornou uma boa base de referência para nós.

Mas rapidamente nos deparámos com o mesmo problema que eles descrevem: se pedirmos a um LLM para produzir diretamente etiquetas ao nível das frases, os resultados nem sempre são estáveis. Algumas etiquetas estão corretas, outras são questionáveis, e é difícil limpar as coisas depois. A anotação totalmente manual também não era uma opção - precisávamos de muito mais dados do que poderíamos rotular à mão.

Para melhorar a estabilidade sem sacrificar a escalabilidade, fizemos uma alteração: o LLM deve fornecer um pequeno trecho de raciocínio para cada rótulo que produz. Cada exemplo de treino inclui a consulta, o documento, os intervalos de frases e uma breve explicação do motivo pelo qual uma frase é relevante ou irrelevante. Este pequeno ajuste tornou as anotações muito mais consistentes e deu-nos algo concreto para referenciar quando validamos ou depuramos o conjunto de dados.

A inclusão do raciocínio revelou-se surpreendentemente valiosa:

  • Maior qualidade das anotações: Escrever o raciocínio funciona como uma auto-verificação, o que reduz as etiquetas aleatórias ou inconsistentes.

  • Melhor observabilidade: Podemos ver porque é que uma frase foi selecionada em vez de tratar a etiqueta como uma caixa negra.

  • Depuração mais fácil: Quando algo parece estar errado, o raciocínio torna mais fácil identificar se o problema é o pedido, o domínio ou a lógica de anotação.

  • Dados reutilizáveis: Mesmo que mudemos para um modelo de etiquetagem diferente no futuro, os traços de raciocínio continuam a ser úteis para uma nova etiquetagem ou auditoria.

O fluxo de trabalho de anotação tem o seguinte aspeto:

Qwen3 8B para anotação

Para a anotação, escolhemos o Qwen3 8B porque suporta nativamente um "modo de pensamento" através de saídas, tornando muito mais fácil extrair traços de raciocínio consistentes. Modelos menores não nos davam rótulos estáveis, e modelos maiores eram mais lentos e desnecessariamente caros para este tipo de pipeline. O Qwen3 8B atingiu o equilíbrio certo entre qualidade, velocidade e custo.

Executamos todas as anotações usando um serviço vLLM local em vez de APIs na nuvem. Isso nos deu alta taxa de transferência, desempenho previsível e custo muito menor - essencialmente trocando tempo de GPU por taxas de token de API, que é o melhor negócio ao gerar milhões de amostras.

Escala do conjunto de dados

No total, criámos mais de 5 milhões de amostras de formação bilingues, divididas aproximadamente de forma igual entre inglês e chinês.

  • Fontes em inglês: MS MARCO, Natural Questions, GooAQ

  • Fontes chinesas: DuReader, Wikipédia chinesa, mmarco_chinese

Parte do conjunto de dados provém da reanotação de dados existentes utilizados por projectos como o Open Provence. O resto foi gerado a partir de corpora em bruto, criando primeiro pares consulta-contexto e depois rotulando-os com o nosso pipeline baseado no raciocínio.

Todos os dados de treino anotados estão também disponíveis no HuggingFace para desenvolvimento da comunidade e referência de treino: Conjuntos de dados Zilliz

Método de treino

Quando a arquitetura do modelo e o conjunto de dados estavam prontos, treinámos o modelo em 8× GPUs A100 para três épocas, o que demorou cerca de 9 horas de ponta a ponta.

Nota: O treino visou apenas a Cabeça de Poda, que é responsável pela tarefa de realce semântico. Não treinámos a Cabeça de Rerank, uma vez que a concentração apenas no objetivo de poda produziu melhores resultados para a pontuação de relevância ao nível da frase.

Estudo de caso do mundo real

Os benchmarks só contam parte da história, por isso aqui está um exemplo real que mostra como o modelo se comporta num caso comum: quando o texto recuperado contém tanto a resposta correta como um distrativo muito tentador.

Consulta: Quem escreveu The Killing of a Sacred Deer?

Contexto (5 frases):

1\. The Killing of a Sacred Deer is a 2017 psychological horror film directed by Yorgos Lanthimos,

with a screenplay by Lanthimos and Efthymis Filippou.

2. The film stars Colin Farrell, Nicole Kidman, Barry Keoghan, Raffey Cassidy,

Sunny Suljic, Alicia Silverstone, and Bill Camp.

3. The story is based on the ancient Greek playwright Euripides’ play Iphigenia in Aulis.

4. The film tells the story of a cardiac surgeon (Farrell) who secretly

befriends a teenager (Keoghan) connected to his past.

5. He introduces the boy to his family, who then mysteriously fall ill.

Resposta correta: Frase 1 (diz explicitamente "argumento de Lanthimos e Efthymis Filippou")

Este exemplo tem uma armadilha: a frase 3 menciona que "Eurípides" escreveu a peça original. Mas a pergunta é "quem escreveu o filme The Killing of a Sacred Deer", e a resposta deveria ser os argumentistas do filme, não o dramaturgo grego de há milhares de anos.

Resultados do modelo

ModeloEncontra a resposta correta?Previsão
O nosso modeloFrases selecionadas 1 (correta) e 3
XProvence v1Só selecionou a frase 3, falhou a resposta correta
XProvence v2Apenas selecionou a frase 3, falhou a resposta correta

Comparação da pontuação da frase-chave:

FraseO nosso modeloXProvence v1XProvence v2
Frase 1 (argumento de filme, resposta correta)0.9150.1330.081
Frase 3 (peça de teatro original, distração)0.7190.9470.802

Modelos XProvence:

  • Atraídos fortemente por "Eurípides" e "peça", atribuindo à frase 3 pontuações quase perfeitas (0,947 e 0,802)

  • Ignora completamente a resposta efectiva (frase 1), atribuindo pontuações extremamente baixas (0,133 e 0,081)

  • Mesmo baixando o limiar de 0,5 para 0,2, continua a não conseguir encontrar a resposta correta

O nosso modelo:

  • Atribui corretamente à frase 1 a pontuação mais elevada (0,915)

  • Continua a atribuir à frase 3 alguma relevância (0,719) porque está relacionada com o fundo

  • Separa claramente as duas com uma margem de ~0,2

Este exemplo mostra a força principal do modelo: compreender a intenção da consulta em vez de corresponder apenas a palavras-chave de nível superficial. Neste contexto, "Quem escreveu The Killing of a Sacred Deer" refere-se ao filme, não à peça grega antiga. O nosso modelo detecta isso, enquanto outros se distraem com pistas lexicais fortes.

Experimente e diga-nos o que pensa

O nosso modelo zilliz/semantic-highlight-bilingual-v1 tem agora o código aberto sob a licença MIT e está pronto para ser utilizado na produção. Pode ligá-lo ao seu pipeline RAG, ajustá-lo ao seu próprio domínio ou construir novas ferramentas em cima dele. Também agradecemos contribuições e feedback da comunidade.

Realce semântico disponível em Milvus e Zilliz Cloud

O realce semântico também está integrado diretamente no Milvus e no Zilliz Cloud (o Milvus totalmente gerido), dando aos utilizadores uma visão clara da razão pela qual cada documento foi recuperado. Em vez de analisar blocos inteiros, vê imediatamente as frases específicas relacionadas com a sua consulta, mesmo quando o texto não corresponde exatamente. Isto torna a recuperação mais fácil de compreender e muito mais rápida de depurar. Para os pipelines RAG, também clarifica aquilo em que se espera que o LLM a jusante se concentre, o que ajuda na conceção rápida e nas verificações de qualidade.

Experimente gratuitamente o Semantic Highlighting num Zilliz Cloud totalmente gerido

Gostaríamos de saber como funciona para si - relatórios de erros, ideias de melhoria ou qualquer coisa que descubra ao integrá-lo no seu fluxo de trabalho.

Se quiser falar sobre qualquer assunto com mais pormenor, junte-se ao nosso canal Discord ou marque uma sessão de 20 minutos no Milvus Office Hours. Temos sempre todo o gosto em conversar com outros construtores e trocar notas.

Agradecimentos

Este trabalho baseia-se em muitas ideias fantásticas e contribuições de código aberto, e queremos destacar os projectos que tornaram este modelo possível.

  • O Provence introduziu um enquadramento limpo e prático para a poda de contexto utilizando modelos de codificadores leves.

  • O Open Provence forneceu uma base de código sólida e bem concebida - pipelines de formação, processamento de dados e cabeças de modelo - sob uma licença permissiva. Deu-nos um ponto de partida sólido para a experimentação.

Para além dessa base, adicionámos várias contribuições próprias:

  • Utilizar o raciocínio LLM para gerar etiquetas de relevância de maior qualidade

  • Criação de quase 5 milhões de amostras de treino bilingue alinhadas com cargas de trabalho reais do RAG

  • Seleção de um modelo de base mais adequado para a pontuação de relevância de contexto longo(BGE-M3 Reranker v2)

  • Treinar apenas o Pruning Head para especializar o modelo para o realce semântico

Estamos gratos às equipas Provence e Open Provence por publicarem o seu trabalho abertamente. As suas contribuições aceleraram significativamente o nosso desenvolvimento e tornaram este projeto possível.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Continue Lendo