Uma análise da busca híbrida no Milvus
Milvus 2.4 ampliou suas capacidades de busca híbrida com a introdução de colunas multivetoriais dentro de uma única coleção. Essa atualização permite buscas de dados mais avançadas e flexíveis ao possibilitar consultas simultâneas em vários tipos e campos vetoriais. Os resultados de busca de cada campo são então integrados e reclassificados usando múltiplos algoritmos de reranking para entregar resultados mais precisos.
Por que essa capacidade é importante e quais benefícios ela oferece? Quais são as estratégias de design por trás desse recurso? Neste post, exploraremos essas perguntas. Também forneceremos um exemplo prático comparando os resultados de buscas de vetor único e híbridas, demonstrando como esse novo recurso poderoso pode gerar resultados mais precisos.
O que é Busca Híbrida?
Vamos começar pelo básico: o que é busca híbrida no Milvus?
O Milvus oferece suporte à criação de até 10 campos vetoriais para o mesmo conjunto de dados dentro de uma única coleção. Com base nesse suporte, a busca híbrida permite que os usuários pesquisem em várias colunas vetoriais simultaneamente. Essa capacidade permite combinar busca multimodal, busca híbrida esparsa e densa, e busca híbrida densa e de texto completo, oferecendo uma funcionalidade de busca versátil e flexível.
Esses vetores em diferentes colunas representam diversas facetas dos dados, originando-se de diferentes modelos de embedding ou passando por métodos de processamento distintos. Os resultados das buscas híbridas são integrados usando várias estratégias de reclassificação.
como funciona a busca híbrida
Como a Busca Híbrida Funciona no Milvus
Esse recurso permite que diferentes colunas:
Representem múltiplas perspectivas da informação. Por exemplo, no e-commerce, imagens de produtos incluem vistas frontal, lateral e superior. Diferentes vistas podem ser representadas com diferentes tipos ou dimensões de vetores.
Utilizem vários tipos de embeddings vetoriais. Isso inclui embeddings densos de modelos como BERT e Transformers e embeddings esparsos de algoritmos como BM25, BGE-M3, e SPLADE.
Ofereçam suporte à fusão de vetores multimodais de vários tipos de dados não estruturados, como imagens, vídeos, áudio e arquivos de texto. Por exemplo, em investigações criminais, suspeitos podem ser representados por meio de modalidades biométricas como impressões digitais, impressões de voz e reconhecimento facial, auxiliando na identificação de indivíduos em diferentes modalidades.
Ofereçam suporte à fusão de busca vetorial e busca de texto completo.
Por que Melhoramos a Busca Híbrida
O anúncio recente da OpenAI sobre seu modelo multimodal GPT-4o reacendeu discussões sobre o futuro da IA. Lidar com dados multimodais é cada vez mais necessário para alcançar a Inteligência Artificial Geral (AGI). Seu surgimento também ressalta a noção de que "tudo pode ser vetorizado." Vetores, o método de codificação da era da IA, são o elemento central que conecta modalidades díspares. As informações que eles encapsulam estão se tornando mais diversas e complexas, impondo demandas maiores aos bancos de dados vetoriais para armazenar e recuperar dados vetoriais.
Portanto, a evolução em direção à busca híbrida é fundamental. É por isso que o Milvus introduz suporte à busca híbrida em suas versões mais recentes para atender a essas demandas crescentes. Esse aprimoramento estratégico permite que o Milvus acomode representações de dados complexas e multimodais e impulsiona as capacidades dos sistemas de IA em compreender e processar conjuntos de dados cada vez mais intrincados.
Com esse novo recurso, o Milvus capacita os desenvolvedores a explorar novas possibilidades em aplicações orientadas por IA, reduzindo ainda mais a lacuna entre a complexidade dos dados e insights acionáveis.
Como Projetamos a Busca Híbrida no Milvus
Dar suporte à busca vetorial em várias colunas vetoriais exigiu uma reestruturação abrangente do design do Milvus. Por exemplo, removemos as limitações de armazenamento e escrita para garantir compatibilidade e estabilidade do sistema e introduzimos métodos avançados de busca para várias colunas vetoriais a fim de lidar com consultas complexas.
Como Funciona a Busca Híbrida?
Anteriormente, o Milvus permitia apenas uma coluna vetorial por coleção no caminho de escrita. Removemos essa limitação e introduzimos um padrão de quatro colunas vetoriais por coleção, que pode ser estendido até um máximo de dez. Cada coluna vetorial dentro de uma coleção pode oferecer suporte a diferentes tipos de métricas e índices.
Nota Importante: Para compatibilidade do sistema, você só pode consultar uma coleção quando os índices de todas as colunas vetoriais forem criados e carregados na memória.
Implementamos recuperação vetorial multirrota e uma estratégia híbrida de reclassificação para realizar buscas em várias colunas vetoriais no caminho de leitura. O processo é o seguinte:
Recuperação: Definimos parâmetros internos para controlar os resultados recuperados para cada rota de busca vetorial (cada coluna). Esta etapa oferece suporte a parâmetros intermediários como filter e limit, mas não a parâmetros de saída como
output_fieldegroup_by_field.Reclassificação: Após obter os resultados de cada rota de recuperação, a próxima etapa é mesclar esses resultados em um processo de reclassificação. O Milvus oferece suporte a duas estratégias clássicas de reclassificação: Ranked Retrieval Fusion (RRF) e WeightedRanker. Além disso, o Milvus também permite que os usuários aproveitem modelos de reclassificação no lado do cliente para reordenar os resultados.
qual é o processo de busca híbrida dentro do Milvus
Qual é o processo de busca híbrida dentro do sistema Milvus?
Essa arquitetura garante que o Milvus possa lidar efetivamente com as complexidades de armazenar e recuperar informações em ambientes nos quais várias colunas vetoriais são essenciais.
Estratégias de Reclassificação
Atualmente, o Milvus oferece suporte às seguintes estratégias de reclassificação:
Ranked Retrieval Fusion (RRF): Esta estratégia combina resultados com base em suas classificações em diferentes colunas vetoriais.
WeightedRanker: Esta abordagem mescla resultados calculando uma média ponderada das pontuações (ou distâncias vetoriais) de diferentes buscas vetoriais. Ela atribui pesos com base na importância de cada campo vetorial.
O gráfico a seguir ilustra como o processo de reclassificação funciona no Milvus.
como a reclassificação funciona
Como a reclassificação funciona no Milvus
Ranked Retrieval Fusion (RRF)
RRF é um algoritmo de fusão de dados que combina resultados de recuperação com base no recíproco de suas classificações. Ele equilibra a influência de cada campo vetorial, especialmente quando não há uma precedência clara de importância. Essa estratégia é usada quando você deseja considerar igualmente todos os campos vetoriais ou quando a importância relativa de cada campo é incerta.
O processo básico do RRF é o seguinte:
Coletar Classificações Durante a Recuperação: Recuperadores em vários campos vetoriais recuperam e ordenam resultados.
Fusão de Classificações: O algoritmo RRF pondera e combina as classificações de cada recuperador. A fórmula é a seguinte:
fórmula RRF
Aqui, 𝑁 representa o número de diferentes rotas de recuperação, rank𝑖(𝑑) é a posição de classificação do documento recuperado 𝑑 pelo 𝑖-ésimo recuperador, e 𝑘 é um parâmetro de suavização, normalmente definido como 60.
- Classificação Abrangente: Reclassifique os resultados recuperados com base nas pontuações combinadas para produzir os resultados finais.
WeightedRanker
A estratégia WeightedRanker atribui pesos diferentes aos resultados de cada rota de recuperação vetorial com base na importância de cada campo vetorial. Essa estratégia de reclassificação é aplicada quando a importância de cada campo vetorial varia, permitindo enfatizar certos campos vetoriais em relação a outros ao atribuir-lhes pesos mais altos. Por exemplo, em uma busca multimodal, a descrição textual pode ser considerada mais importante do que a distribuição de cores nas imagens.
O processo básico do WeightedRanker é o seguinte:
Coletar Pontuações Durante a Recuperação: Reúna resultados e suas pontuações de diferentes rotas de recuperação vetorial.
Normalização de Pontuação: Normalize as pontuações de cada rota para um intervalo [0,1], onde valores mais próximos de 1 indicam maior relevância. Essa normalização é crucial devido às distribuições de pontuação variarem com diferentes tipos de métricas. Por exemplo, a distância para IP varia de [-∞,+∞], enquanto a distância para L2 varia de [0,+∞]. O Milvus emprega a função arctan, transformando valores para o intervalo [0,1] para fornecer uma base padronizada para diferentes tipos de métricas.
Alocação de Peso: Atribua um peso
w𝑖a cada rota de recuperação vetorial. Os usuários especificam os pesos, que refletem a confiabilidade, a precisão ou outras métricas pertinentes da fonte de dados. Cada peso varia de [0,1].Fusão de Pontuação: Calcule uma média ponderada das pontuações normalizadas para derivar a pontuação final. Os resultados são então classificados com base nessas pontuações, da mais alta para a mais baixa, para gerar os resultados finais ordenados.
fórmula do weightedranker
Comparando a Busca Híbrida e a Busca de Vetor Único com um Exemplo
Nesta seção, compararemos os resultados da busca de imagens usando, respectivamente, busca de vetor único e busca híbrida, demonstrando como a busca híbrida pode melhorar a qualidade dos resultados da busca. Para mais detalhes, veja os trechos de código completos em este notebook.
O Conjunto de Dados
Baixamos imagens contendo semáforos de fontes públicas como nosso conjunto de dados.
o conjunto de dados
Imagem de Consulta
Nesta demonstração, a imagem abaixo é a imagem de consulta que queremos encontrar dentro do conjunto de dados.
imagem de consulta
Extração de Recursos com ResNet e CLIP
Devemos criar uma coleção com várias colunas vetoriais antes de realizar a extração de recursos e inserir imagens no Milvus. No trecho de código abaixo, criamos duas colunas vetoriais para armazenar vetores de recursos de imagem extraídos usando diferentes modelos de embedding.
Criar uma coleção com várias colunas vetoriais
Para esta demonstração, usamos ResNet e CLIP como nossos modelos de embedding.
- ResNet (Residual Network): Um modelo popular para reconhecimento e classificação de imagens.
resnet.png
- CLIP (Contrastive Language–Image Pre-training): Um modelo de embedding bimodal texto-imagem que conecta dados visuais e textuais. Nós o usamos para extrair recursos de legendas para busca de imagens.
clip
Resultados de Busca de Vetor Único com Vetores ResNet
Se o conjunto de dados contiver uma imagem idêntica à consulta na busca por imagens, uma busca vetorial densa de coluna única pode retornar rapidamente o resultado correto. No entanto, em casos reais, as imagens de consulta frequentemente diferem daquelas no conjunto de dados devido a ângulos variados ou fundos ambientais, afetando os resultados da busca vetorial. Neste exemplo, usamos características específicas da imagem de consulta, focando especificamente no semáforo, para realizar a busca por imagens.
características específicas da imagem de consulta - o semáforo
Como você pode ver nos resultados abaixo, todas as imagens retornadas destacam principalmente o objeto semáforo. No entanto, a própria imagem de consulta (Nº 3) não é classificada como a mais semelhante. Se limitarmos os resultados da busca apenas às duas principais imagens, a imagem de consulta não aparecerá nos resultados de forma alguma.
resultados da busca - resnet.png
Resultados de busca de vetor único com vetores CLIP
Em seguida, vamos examinar outra busca de vetor único. Devido à capacidade de compreensão multimodal do CLIP, podemos buscar imagens usando entrada de texto. Aqui, a entrada de busca é "imagens com edifícios ao fundo."
resultados da busca - clip
Os resultados indicam que as imagens retornadas se concentram no elemento de fundo dos edifícios. No entanto, a imagem de consulta ainda não parece ser a principal correspondência.
Resultados da busca híbrida
Os resultados das duas buscas vetoriais de rota única anteriores não foram ideais, então realizamos uma busca híbrida em várias colunas vetoriais. Nesta busca híbrida, os resultados das duas rotas AnnSearchRequest são fundidos usando um método de média ponderada. Os pesos para as colunas ResNet e CLIP foram definidos como 0,7 e 0,8, respectivamente.
resultados da busca híbrida
Como você pode ver nos resultados acima, a imagem de consulta foi retornada como a imagem mais semelhante (Top 1) desta vez.
Este exemplo ilustra como a busca híbrida integra efetivamente entradas multimodais de imagens e texto. Em comparação com buscas de vetor único, a busca híbrida demonstra uma melhoria substancial nos resultados finais.
Conclusão
A busca híbrida é um recurso central no Milvus que aprimora os recursos de busca de dados ao permitir consultas simultâneas em vários campos vetoriais. Esse recurso combina busca híbrida esparsa e densa, busca multimodal e busca híbrida densa e de texto completo; todos esses resultados de busca são integrados e reclassificados usando estratégias eficientes de reclassificação para obter um resultado final mais preciso e relevante.
Daqui em diante, vamos nos concentrar em expandir a busca híbrida para vários domínios. Por exemplo, ela pode ser estendida para aproveitar a reclassificação baseada em tempo para casos de uso como recomendar tópicos sociais em alta para Twitter ou TikTok. Também planejamos introduzir algoritmos de fusão e modelos de reclassificação mais robustos para oferecer uma experiência de busca mais refinada.
O potencial da busca híbrida vai além do que foi abordado aqui. Fique ligado para mais atualizações nossas.
Continue lendo

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.



