Treinámos e disponibilizámos um modelo de realce semântico bilingue para RAG de produção e pesquisa de IA
Quer esteja a criar uma pesquisa de produtos, um pipeline RAG ou um agente de IA, os utilizadores precisam da mesma coisa: uma forma rápida de ver porque é que um resultado é relevante. O destaque ajuda marcando o texto exato que suporta a correspondência, para que os utilizadores não tenham de digitalizar todo o documento.
A maioria dos sistemas ainda depende do destaque baseado em palavras-chave. Se um utilizador pesquisar "desempenho do iPhone", o sistema destaca os tokens exactos "iPhone" e "desempenho". Mas isto deixa de funcionar assim que o texto exprime a mesma ideia utilizando uma redação diferente. Uma descrição como "chip A15 Bionic, mais de um milhão em benchmarks, suave e sem atrasos" aborda claramente o desempenho, mas nada é realçado porque as palavras-chave nunca aparecem.
O realce semântico resolve este problema. Em vez de corresponder a cadeias de caracteres exactas, identifica intervalos de texto que estão semanticamente alinhados com a consulta. Para os sistemas RAG, a pesquisa de IA e os agentes - em que a relevância depende do significado e não da forma superficial - isto produz explicações mais precisas e mais fiáveis sobre o motivo pelo qual um documento foi recuperado.
No entanto, os métodos de realce semântico existentes não foram concebidos para cargas de trabalho de IA de produção. Depois de avaliarmos todas as soluções disponíveis, descobrimos que nenhuma oferecia a precisão, a latência, a cobertura multilingue ou a robustez necessárias para pipelines RAG, sistemas de agentes ou pesquisa na Web em grande escala. Por isso, treinámos o nosso próprio modelo de realce semântico bilingue - e publicámo-lo em código aberto.
O nosso modelo de realce semântico: zilliz/semantic-highlight-bilingual-v1
Diga-nos o que pensa - junte-se ao nosso Discord, siga-nos no LinkedIn ou marque uma sessão de 20 minutos connosco no Milvus Office Hours.
Como funciona o realce baseado em palavras-chave - e porque é que falha nos sistemas de IA modernos
Os sistemas de pesquisa tradicionais implementam o destaque através de uma simples correspondência de palavras-chave. Quando os resultados são devolvidos, o motor localiza as posições exactas dos tokens que correspondem à consulta e envolve-os em marcação (normalmente <em> tags), deixando o frontend renderizar o destaque. Isso funciona bem quando os termos da consulta aparecem literalmente no texto.
O problema é que este modelo assume que a relevância está ligada à sobreposição exacta de palavras-chave. Quando esse pressuposto é quebrado, a fiabilidade diminui rapidamente. Qualquer resultado que expresse a ideia correta com uma redação diferente acaba por não ter qualquer destaque, mesmo que o passo de recuperação esteja correto.
Esta fraqueza torna-se óbvia nas aplicações modernas de IA. Nos pipelines RAG e nos fluxos de trabalho de agentes de IA, as consultas são mais abstractas, os documentos são mais longos e as informações relevantes podem não reutilizar as mesmas palavras. O realce baseado em palavras-chave já não pode mostrar aos programadores - ou aos utilizadores finais - ondeestá realmente a resposta, o que faz com que o sistema geral pareça menos preciso, mesmo quando a recuperação está a funcionar como pretendido.
Suponhamos que um utilizador pergunta: "Como posso melhorar a eficiência de execução do código Python?" O sistema recupera um documento técnico de uma base de dados vetorial. O realce tradicional só pode marcar correspondências literais como "Python", "código", "execução" e "eficiência".
No entanto, as partes mais úteis do documento podem ser:
Usar operações vectorizadas NumPy em vez de loops explícitos
Evitar criar repetidamente objectos dentro de loops
Estas frases respondem diretamente à pergunta, mas não contêm nenhum dos termos da consulta. Como resultado, o destaque tradicional falha completamente. O documento pode ser relevante, mas o utilizador continua a ter de o analisar linha a linha para localizar a resposta real.
O problema torna-se ainda mais acentuado com os agentes de IA. Muitas vezes, a consulta de pesquisa de um agente não é a pergunta original do utilizador, mas uma instrução derivada produzida através do raciocínio e da decomposição de tarefas. Por exemplo, se um utilizador perguntar "Pode analisar as tendências recentes do mercado?", o agente pode gerar uma consulta como "Recuperar dados de vendas de produtos electrónicos de consumo do quarto trimestre de 2024, taxas de crescimento anuais, alterações na quota de mercado dos principais concorrentes e flutuações de custos da cadeia de fornecimento".
Esta consulta abrange várias dimensões e codifica uma intenção complexa. O realce tradicional baseado em palavras-chave, no entanto, só pode marcar mecanicamente correspondências literais como "2024", "dados de vendas" ou "taxa de crescimento".
Entretanto, as informações mais valiosas podem ser semelhantes:
A série iPhone 15 impulsionou uma recuperação mais alargada do mercado
As restrições no fornecimento de chips fizeram subir os custos em 15%
Estas conclusões podem não partilhar uma única palavra-chave com a consulta, embora sejam exatamente o que o agente está a tentar extrair. Os agentes precisam de identificar rapidamente informações verdadeiramente úteis a partir de grandes volumes de conteúdo recuperado - e o realce baseado em palavras-chave não oferece uma verdadeira ajuda.
O que é o realce semântico e os pontos problemáticos das soluções actuais
O realce semântico baseia-se na mesma ideia subjacente à pesquisa semântica: correspondência baseada no significado e não em palavras exactas. Na pesquisa semântica, os modelos de incorporação mapeiam o texto em vectores para que um sistema de pesquisa, normalmente apoiado por uma base de dados vetorial como a Milvus, possaobter passagens que transmitam a mesma ideia que a consulta, mesmo que a redação seja diferente. O realce semântico aplica este princípio a uma granularidade mais fina. Em vez de marcar literalmente as palavras-chave, destaca os trechos específicos de um documento que são semanticamente relevantes para a intenção do utilizador.
Esta abordagem resolve um problema central do realce tradicional, que só funciona quando os termos da consulta aparecem literalmente. Se um utilizador pesquisar "desempenho do iPhone", o realce baseado em palavras-chave ignora frases como "chip A15 Bionic", "mais de um milhão em testes de referência" ou "suave sem atraso", apesar de estas linhas responderem claramente à pergunta. O realce semântico capta estas ligações orientadas para o significado e apresenta as partes do texto que realmente interessam aos utilizadores.
Em teoria, este é um problema de correspondência semântica simples. Os modelos de incorporação modernos já codificam bem a semelhança, pelo que as peças conceptuais já estão no lugar. O desafio advém das restrições do mundo real: o realce ocorre em todas as consultas, muitas vezes em muitos documentos recuperados, tornando a latência, o rendimento e a robustez entre domínios requisitos não negociáveis. Os modelos linguísticos de grande dimensão são simplesmente demasiado lentos e dispendiosos para serem executados neste caminho de elevada frequência.
É por isso que o realce semântico prático requer um modelo leve e especializado - suficientemente pequeno para se situar ao lado da infraestrutura de pesquisa e suficientemente rápido para devolver resultados em poucos milissegundos. É aqui que a maioria das soluções existentes falha. Os modelos pesados proporcionam precisão, mas não podem ser executados em grande escala; os modelos mais leves são rápidos, mas perdem precisão ou falham em dados multilingues ou de domínios específicos.
opensearch-semantic-highlighter
No ano passado, o OpenSearch lançou um modelo dedicado ao realce semântico: opensearch-semantic-highlighter-v1. Embora seja uma tentativa significativa de resolver o problema, tem duas limitações críticas.
Janela de contexto pequena: O modelo baseia-se numa arquitetura BERT e suporta um máximo de 512 tokens - cerca de 300-400 caracteres chineses ou 400-500 palavras inglesas. Em cenários do mundo real, as descrições de produtos e os documentos técnicos abrangem frequentemente milhares de palavras. O conteúdo para além da primeira janela é simplesmente truncado, forçando o modelo a identificar destaques com base apenas numa pequena fração do documento.
Fraca generalização fora do domínio: O modelo funciona bem apenas em distribuições de dados semelhantes ao seu conjunto de treino. Quando aplicado a dados fora do domínio - como a utilização de um modelo treinado em artigos de notícias para destacar conteúdo de comércio eletrónico ou documentação técnica - o desempenho diminui drasticamente. Nas nossas experiências, o modelo atinge uma pontuação F1 de cerca de 0,72 em dados dentro do domínio, mas desce para cerca de 0,46 em conjuntos de dados fora do domínio. Este nível de instabilidade é problemático na produção. Para além disso, o modelo não suporta o chinês.
Provence / XProvence
O Provence é um modelo desenvolvido pela Naver e foi inicialmente treinado para a poda de contexto - umatarefa que está intimamente relacionada com o realce semântico.
Ambas as tarefas assentam na mesma ideia subjacente: utilizar a correspondência semântica para identificar conteúdos relevantes e filtrar partes irrelevantes. Por este motivo, o Provence pode ser redireccionado para o realce semântico com relativamente pouca adaptação.
O Provence é um modelo apenas em inglês e tem um desempenho razoavelmente bom nesse contexto. O XProvence é a sua variante multilingue, suportando mais de uma dúzia de línguas, incluindo chinês, japonês e coreano. À primeira vista, isto faz com que o XProvence pareça ser um bom candidato para cenários de realce semântico bilingue ou multilingue.
Na prática, porém, tanto o Provence como o XProvence têm várias limitações notáveis:
Desempenho mais fraco em inglês no modelo multilingue: O XProvence não tem o mesmo desempenho que o Provence nos testes de referência em inglês. Trata-se de um compromisso comum nos modelos multilingues: a capacidade é partilhada entre as línguas, o que conduz frequentemente a um desempenho mais fraco nas línguas com recursos elevados, como o inglês. Esta limitação é importante nos sistemas do mundo real em que o inglês continua a ser a carga de trabalho principal ou dominante.
Desempenho limitado em chinês: O XProvence suporta muitos idiomas. Durante o treinamento multilíngüe, os dados e a capacidade do modelo são distribuídos entre os idiomas, o que limita a capacidade do modelo de se especializar em um único idioma. Como resultado, o seu desempenho em chinês é apenas marginalmente aceitável e muitas vezes insuficiente para casos de utilização de realce de alta precisão.
Incompatibilidade entre os objectivos de poda e de realce: O Provence está optimizado para a poda de contexto, em que a prioridade é a recordação - manter o máximo possível de conteúdo potencialmente útil para evitar perder informações críticas. O realce semântico, pelo contrário, privilegia a precisão: realça apenas as frases mais relevantes e não grandes porções do documento. Quando os modelos do tipo Provence são aplicados ao realce, esta discrepância conduz frequentemente a realces demasiado amplos ou ruidosos.
Licenciamento restritivo: Tanto o Provence como o XProvence são lançados sob a licença CC BY-NC 4.0, que não permite a utilização comercial. Esta restrição, por si só, torna-os inadequados para muitas implementações de produção.
Open Provence
O Open Provence é um projeto orientado para a comunidade que reimplementa o pipeline de formação do Provence de uma forma aberta e transparente. Fornece não só scripts de formação, mas também fluxos de trabalho de processamento de dados, ferramentas de avaliação e modelos pré-treinados a várias escalas.
Uma das principais vantagens do Open Provence é a sua licença MIT permissiva. Ao contrário do Provence e do XProvence, pode ser utilizado com segurança em ambientes comerciais sem restrições legais, o que o torna atrativo para equipas orientadas para a produção.
Dito isto, o Open Provence suporta atualmente apenas inglês e japonês, o que o torna inadequado para os nossos casos de utilização bilingue.
Treinámos e disponibilizámos um modelo de realce semântico bilingue
Um modelo de realce semântico concebido para cargas de trabalho do mundo real tem de fornecer algumas capacidades essenciais:
Forte desempenho multilingue
Uma janela de contexto suficientemente grande para suportar documentos longos
Generalização robusta fora do domínio
Elevada precisão nas tarefas de realce semântico
Uma licença permissiva e de fácil produção (MIT ou Apache 2.0)
Depois de avaliar as soluções existentes, descobrimos que nenhum dos modelos disponíveis satisfazia os requisitos necessários para a utilização em produção. Por isso, decidimos treinar o nosso próprio modelo de realce semântico: zilliz/semantic-highlight-bilingual-v1.
Para conseguir tudo isto, adoptámos uma abordagem simples: utilizar modelos linguísticos de grande dimensão para gerar dados rotulados de alta qualidade e, em seguida, treinar um modelo de realce semântico leve com base nos mesmos, utilizando ferramentas de código aberto. Isto permite-nos combinar a força de raciocínio dos LLMs com a eficiência e a baixa latência necessárias nos sistemas de produção.
A parte mais difícil deste processo é a construção de dados. Durante a anotação, pedimos a um LLM (Qwen3 8B) que produza não só os intervalos de destaque, mas também todo o raciocínio por detrás deles. Este sinal de raciocínio adicional produz uma supervisão mais exacta e consistente e melhora significativamente a qualidade do modelo resultante.
A um nível elevado, o pipeline de anotação funciona da seguinte forma: raciocínio LLM → etiquetas de realce → filtragem → amostra de treino final.
Esta conceção proporciona três benefícios concretos na prática:
Maior qualidade de rotulagem: O modelo é solicitado a pensar primeiro e depois a responder. Este passo intermédio de raciocínio funciona como uma auto-verificação incorporada, reduzindo a probabilidade de rótulos superficiais ou inconsistentes.
Melhor observabilidade e depuração: Como cada rótulo é acompanhado por um traço de raciocínio, os erros tornam-se visíveis. Isso facilita o diagnóstico de casos de falha e o ajuste rápido de prompts, regras ou filtros de dados no pipeline.
Dados reutilizáveis: Os traços de raciocínio fornecem um contexto valioso para futuras reetiquetagens. À medida que os requisitos mudam, os mesmos dados podem ser revisitados e refinados sem começar do zero.
Utilizando este pipeline, gerámos mais de um milhão de amostras de formação bilingues, divididas aproximadamente de forma igual entre inglês e chinês.
Para o treino do modelo, partimos do BGE-M3 Reranker v2 (parâmetros de 0,6B, janela de contexto de 8.192 tokens), adoptámos a estrutura de treino Open Provence e treinámos durante três épocas em 8× GPUs A100, completando o treino em aproximadamente cinco horas.
Iremos aprofundar estas escolhas técnicas - incluindo a razão pela qual confiamos em traços de raciocínio, como selecionámos o modelo de base e como o conjunto de dados foi construído - numa publicação posterior.
Avaliação comparativa do modelo de realce semântico bilingue do Zilliz
Para avaliar o desempenho no mundo real, avaliámos vários modelos de realce semântico num conjunto diversificado de conjuntos de dados. As referências abrangem cenários dentro e fora do domínio, em inglês e chinês, para refletir a variedade de conteúdos encontrados nos sistemas de produção.
Conjuntos de dados
Utilizámos os seguintes conjuntos de dados na nossa avaliação:
MultiSpanQA (inglês) - um conjunto de dados de resposta a perguntas multi-span dentro do domínio
WikiText-2 (inglês) - um corpus da Wikipédia fora do domínio
MultiSpanQA-ZH (chinês) - um conjunto de dados chinês de resposta a perguntas multi-span
WikiText-2-ZH (chinês) - um corpus da Wikipédia chinês fora do domínio
Modelos comparados
Os modelos incluídos na comparação são:
Modelos Open Provence
Provence / XProvence (lançado pela Naver)
Marcador semântico OpenSearch
Modelo de realce semântico bilingue de Zilliz
Resultados e análise
Conjuntos de dados em inglês:
Conjuntos de dados chineses:
Em todos os parâmetros de referência bilingues, o nosso modelo atinge pontuações F1 médias de última geração, superando todos os modelos e abordagens avaliados anteriormente. Os ganhos são especialmente pronunciados nos conjuntos de dados chineses, onde o nosso modelo supera significativamente o XProvence - o único outro modelo avaliado com suporte chinês.
Mais importante ainda, o nosso modelo apresenta um desempenho equilibrado em inglês e chinês, uma propriedade que as soluções existentes têm dificuldade em alcançar:
O Open Provence suporta apenas o inglês
O XProvence sacrifica o desempenho em inglês em comparação com o Provence
O OpenSearch Semantic Highlighter não suporta o chinês e apresenta uma fraca generalização
Como resultado, o nosso modelo evita os compromissos comuns entre cobertura linguística e desempenho, tornando-o mais adequado para implementações bilingues no mundo real.
Um exemplo concreto na prática
Para além das pontuações de referência, é muitas vezes mais revelador examinar um exemplo concreto. O caso seguinte mostra como o nosso modelo se comporta num cenário real de realce semântico e porque é que a precisão é importante.
Consulta: Quem escreveu o filme The Killing of a Sacred Deer?
Contexto (5 frases):
The Killing of a Sacred Deer é um filme de thriller psicológico de 2017 realizado por Yorgos Lanthimos, com o argumento escrito por Lanthimos e Efthymis Filippou.
O filme é protagonizado por Colin Farrell, Nicole Kidman, Barry Keoghan, Raffey Cassidy, Sunny Suljic, Alicia Silverstone e Bill Camp.
A história é baseada na antiga peça grega Ifigénia em Áulis, de Eurípides.
O filme acompanha um cirurgião cardíaco que estabelece uma amizade secreta com um adolescente ligado ao seu passado.
Ele apresenta o rapaz à sua família, após o que começam a ocorrer doenças misteriosas.
Destaque correto: A frase 1 é a resposta correta, pois indica explicitamente que o argumento foi escrito por Yorgos Lanthimos e Efthymis Filippou.
Este exemplo contém uma armadilha subtil. A frase 3 menciona Eurípides, o autor da peça original grega na qual a história é vagamente baseada. No entanto, a pergunta é sobre quem escreveu o filme e não sobre o material de origem antigo. A resposta correta é, portanto, os argumentistas do filme e não o dramaturgo de há milhares de anos.
Resultados:
A tabela abaixo resume o desempenho dos diferentes modelos neste exemplo.
| Modelo | Resposta correta identificada | Resultado |
|---|---|---|
| O nosso (M3 bilingue) | ✓ | Selecionou a frase 1 (correta) e a frase 3 |
| XProvence v1 | ✗ | Selecionou apenas a frase 3, falhou a resposta correta |
| XProvence v2 | ✗ | Selecionou apenas a frase 3, falhou a resposta correta |
Comparação da pontuação ao nível da frase
| Frase | O nosso (Bilingue M3) | XProvence v1 | XProvence v2 |
|---|---|---|---|
| Frase 1 (argumento de filme, correto) | 0.915 | 0.133 | 0.081 |
| Frase 3 (peça original, distração) | 0.719 | 0.947 | 0.802 |
Onde XProvence fica aquém
O XProvence é fortemente atraído pelas palavras-chave "Eurípides" e "escreveu", atribuindo à frase 3 uma pontuação quase perfeita (0,947 e 0,802).
Ao mesmo tempo, ignora largamente a resposta correta na frase 1, atribuindo pontuações extremamente baixas (0,133 e 0,081).
Mesmo depois de baixar o limiar de decisão de 0,5 para 0,2, o modelo continua a não revelar a resposta correta.
Por outras palavras, o modelo é principalmente orientado por associações de palavras-chave de nível superficial e não pela intenção real da pergunta.
Como é que o nosso modelo se comporta de forma diferente
O nosso modelo atribui uma pontuação elevada (0,915) à resposta correta na frase 1, identificando corretamente os argumentistas do filme.
Também atribui uma pontuação moderada (0,719) à frase 3, uma vez que essa frase menciona um conceito relacionado com o guião.
O mais importante é que a separação é clara e significativa: 0,915 vs. 0,719, uma diferença de quase 0,2.
Este exemplo realça a força central da nossa abordagem: ir além das associações baseadas em palavras-chave para interpretar corretamente a intenção do utilizador. Mesmo quando aparecem vários conceitos de "autor", o modelo destaca consistentemente aquele a que a pergunta realmente se refere.
Compartilharemos um relatório de avaliação mais detalhado e estudos de caso adicionais em uma publicação posterior.
Experimente e diga-nos o que pensa
O nosso modelo de realce semântico bilingue no Hugging Face é de código aberto, com todos os pesos do modelo disponíveis publicamente para que possa começar a experimentar imediatamente. Gostaríamos muito de saber como funciona para si - por favor, partilhe os seus comentários, problemas ou ideias de melhoramento à medida que o experimenta.
Em paralelo, estamos a trabalhar num serviço de inferência pronto para produção e a integrar o modelo diretamente no Milvus como uma API de Realce Semântico nativa. Essa integração já está em andamento e estará disponível em breve.
O realce semântico abre a porta a uma experiência mais intuitiva de RAG e IA agêntica. Quando o Milvus recupera vários documentos longos, o sistema pode imediatamente fazer aparecer as frases mais relevantes, tornando claro onde está a resposta. Isto não só melhora a experiência do utilizador final, como também ajuda os programadores a depurar os pipelines de recuperação, mostrando exatamente em que partes do contexto o sistema se baseia.
Acreditamos que o realce semântico se tornará um recurso padrão na próxima geração de sistemas de pesquisa e RAG. Se tiver ideias, sugestões ou casos de utilização para o realce semântico bilingue, junte-se ao nosso canal Discord e partilhe as suas ideias. Também pode reservar uma sessão individual de 20 minutos para obter informações, orientações e respostas às suas perguntas através do Milvus Office Hours.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



