Como criámos um modelo de realce semântico para a poda de contexto RAG e a gravação de tokens
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:
Série Open Provence
Série Provence/XProvence da Naver
Marcador semântico do OpenSearch
O nosso modelo bilingue treinado: zilliz/semantic-highlight-bilingual-v1
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:
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.
Processamento do modelo - A consulta e o contexto são concatenados numa única sequência: [BOS] + Consulta + Contexto
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.
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.
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:
Utiliza uma arquitetura de codificador adequada para a pontuação de tokens e frases
Suporta vários idiomas com otimização para inglês e chinês
Fornece uma janela de contexto de 8192 tokens apropriada para documentos RAG mais longos
Mantém parâmetros de 0,6B - suficientemente fortes sem serem computacionalmente pesados
Assegura um conhecimento do mundo suficiente no modelo de base
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
| Modelo | Encontra a resposta correta? | Previsão |
|---|---|---|
| O nosso modelo | ✓ | Frases selecionadas 1 (correta) e 3 |
| XProvence v1 | ✗ | Só selecionou a frase 3, falhou a resposta correta |
| XProvence v2 | ✗ | Apenas selecionou a frase 3, falhou a resposta correta |
Comparação da pontuação da frase-chave:
| Frase | O nosso modelo | XProvence v1 | XProvence v2 |
|---|---|---|---|
| Frase 1 (argumento de filme, resposta correta) | 0.915 | 0.133 | 0.081 |
| Frase 3 (peça de teatro original, distração) | 0.719 | 0.947 | 0.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.
Descarregar do HuggingFace: zilliz/semantic-highlight-bilingual-v1
Todos os dados de treino anotados: https://huggingface.co/zilliz/datasets
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 StartedLike the article? Spread the word



