Pesquisa híbrida no Azure Cosmos DB para NoSQL (visualização)
O Azure Cosmos DB para NoSQL agora oferece suporte a um poderoso recurso de pesquisa híbrida que combina a Pesquisa Vetorial com a pontuação da Pesquisa de Texto Completo (BM25) usando a função RRF (Reciprocal Rank Fusion).
Nota
A Pesquisa Híbrida de Texto Completo está em pré-visualização antecipada e pode não estar disponível em todas as regiões no momento.
O que é a pesquisa híbrida?
A pesquisa híbrida aproveita os pontos fortes dos métodos de pesquisa baseados em vetores e tradicionais baseados em palavras-chave para fornecer resultados de pesquisa mais relevantes e precisos. A pesquisa híbrida é fácil de fazer no Azure Cosmos DB para NoSQL devido à capacidade de armazenar metadados e vetores no mesmo documento.
A pesquisa híbrida no Azure Cosmos DB for NoSQL integra duas metodologias de pesquisa distintas:
- Pesquisa vetorial: Utiliza modelos de aprendizado de máquina para entender o significado semântico de consultas e documentos. Isso permite resultados de pesquisa mais matizados e sensíveis ao contexto, especialmente úteis para consultas complexas em que a pesquisa tradicional por palavra-chave pode ficar aquém.
- Pesquisa de texto completo (BM25): Um algoritmo bem estabelecido que pontua documentos com base na presença e frequência de palavras e termos. O BM25 é particularmente eficaz para pesquisas diretas de palavras-chave, fornecendo uma linha de base robusta para a relevância da pesquisa.
Os resultados da pesquisa vetorial e da pesquisa de texto completo são então combinados usando a função Reciprocal Rank Fusion (RRF). RRF é um método de agregação de classificação que funde as classificações de vários algoritmos de pesquisa para produzir uma classificação única e unificada. Isso garante que os resultados finais da pesquisa se beneficiem dos pontos fortes de ambas as abordagens de pesquisa e ofereça vários benefícios.
- Relevância aprimorada: Ao combinar compreensão semântica com correspondência de palavras-chave, a pesquisa híbrida oferece resultados mais relevantes para uma ampla gama de consultas.
- Precisão melhorada: A função RRF garante que os resultados mais pertinentes de ambos os métodos de pesquisa sejam priorizados.
- Versatilidade: Adequado para vários casos de uso, incluindo Geração Aumentada de Recuperação (RAG) para melhorar as respostas geradas por um LLM baseado em seus próprios dados.
Como usar a pesquisa híbrida
- Habilite o recurso Pesquisa vetorial no Azure Cosmos DB para NoSQL.
- Habilite o recurso de visualização de Pesquisa Híbrida de Texto Completo para NoSQL.
- Crie um contêiner com uma política de vetor, política de texto completo, índice de vetor e índice de texto completo.
- Insira seus dados com texto e propriedades vetoriais.
- Execute consultas híbridas nos dados.
Configurar políticas e índices para pesquisa híbrida
Importante
Atualmente, as políticas vetoriais e os índices vetoriais são imutáveis após a criação. Para fazer alterações, crie uma nova coleção.
Uma política de vetor de exemplo
{
"vectorEmbeddings": [
{
"path":"/vector",
"dataType":"float32",
"distanceFunction":"cosine",
"dimensions":3
},
}
Um exemplo de política de texto completo
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
Um exemplo de política de indexação com texto completo e índices vetoriais
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/vector/*"
}
],
"fullTextIndexes": [
{
"path": "/text"
}
],
"vectorIndexes": [
{
"path": "/vector",
"type": "DiskANN"
}
]
}
Consultas de pesquisa híbridas
As consultas de pesquisa híbridas podem ser executadas aproveitando a função do RRF
sistema em uma ORDER BY RANK
cláusula que inclui uma VectorDistance
função e FullTextScore
. Por exemplo, uma consulta parametrizada para encontrar os resultados k mais relevantes seria semelhante a:
SELECT TOP @k *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, @queryVector), FullTextScore(c.content, [@searchTerm1, @searchTerm2, ...]))
Suponha que você tenha um documento que tenha incorporações vetoriais armazenadas em cada documento na propriedade c.vector
e nos dados de texto contidos na propriedade c.text. Para obter os 10 documentos mais relevantes usando a pesquisa híbrida, a consulta pode ser escrita como:
SELECT TOP 10 *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, [1,2,3]), FullTextScore(c.text, ["text", "to", "search", "goes" ,"here])