O que são Inserções de Vetores e a pesquisa de vetores no Cache do Azure para Redis
A VSS (pesquisa de similaridade de vetor) tornou-se uma tecnologia popular para aplicativos inteligentes alimentados por IA. O Cache do Azure para Redis pode ser usado como um banco de dados de vetor combinando modelos como o OpenAI do Azure para IA generativa aumentada de recuperação e cenários de análise. Este artigo é uma introdução de alto nível ao conceito de inserções de vetores, pesquisa de similaridade de vetor e como o Redis pode ser usado como um banco de dados vetor que alimenta aplicativos inteligentes.
Para tutoriais e aplicativos de exemplo sobre como usar o Cache do Azure para Redis e o OpenAI do Azure para executar a pesquisa de similaridade de vetor, consulte o seguinte:
- Tutorial: realizar a pesquisa de similaridade de vetor em inserções do OpenAI do Azure usando o Cache do Azure para Redis com LangChain
- Exemplo: usar o Redis como banco de dados de vetores em um aplicativo Chatbot com Kernel semântico do .NET
- Exemplo: usar o Redis como cache semântico em uma galeria de imagens alimentada por Dall-E com o Redis OM para .NET
Escopo de disponibilidade
Os recursos de busca em vetores no Redis exigem o Redis Stack, mais especificamente o módulo RediSearch. Essa funcionalidade só está disponível nas camadas Enterprise do Cache do Azure para Redis.
Esta tabela contém as informações de disponibilidade de busca em vetores em diferentes camadas.
Camada | Básico/Standard | Premium | Enterprise | Enterprise Flash |
---|---|---|---|---|
Disponível | Não | No | Yes | Sim (versão prévia) |
O que são inserções de vetor?
Conceito
As Embeddings vetoriais são um conceito fundamental no aprendizado de máquina e no processamento de linguagem natural que permitem a representação de dados, por exemplo, palavras, documentos ou imagens, como vetores numéricos em um espaço de vetor de alta dimensão. A ideia principal por trás das Embeddings vetoriais é capturar as relações subjacentes e a semântica dos dados mapeando-os para pontos nesse espaço de vetor. Isso significa converter seu texto ou imagens em uma sequência de números que representa os dados e, em seguida, comparar as diferentes sequências de números. Isso permite que dados complexos sejam manipulados e analisados matematicamente, o que facilita a execução de tarefas como recomendação, classificação e comparação de similaridade.
Cada modelo de machine learning classifica os dados e produz o vetor de uma maneira diferente. Além disso, normalmente não é possível determinar exatamente o significado semântico que cada dimensão de vetor representa. Mas como o modelo é consistente entre cada bloco de dados de entrada, documentos, imagens ou palavras semelhantes têm vetores que também são semelhantes. Por exemplo, as palavras basketball
e baseball
têm vetores de embeddings muito mais próximos uns dos outros do que uma palavra como rainforest
.
Comparação de vetor
Os vetores podem ser comparados usando várias métricas. A forma mais usada de comparar vetores é usar a similaridade por cosseno, que mede o cosseno do ângulo entre dois vetores em um espaço multidimensional. Quanto mais próximos os vetores, menor o ângulo. Outras métricas de distância comuns incluem a distância euclidiana e o produto interno.
Gerar embeddings
Muitos modelos de machine learning dão suporte a APIs de embeddings. Para obter um exemplo de como criar Embeddings vetoriais usando o Serviço OpenAI do Azure, consulte Saiba como gerar embeddings com o OpenAI do Azure.
O que é um banco de dados de vetores?
Um banco de dados de vetores é um banco de dados que pode armazenar, gerenciar, recuperar e comparar vetores. Os bancos de dados vetoriais precisam poder armazenar com eficiência um vetor de alta dimensão e recuperá-lo com latência mínima e alta taxa de transferência. Os repositórios de dados não relacionais são mais comumente usados como bancos de dados vetoriais, embora seja possível usar bancos de dados relacionais como o PostgreSQL, por exemplo, com a extensão pgvector.
Método de indexação e pesquisa
Os bancos de dados vetoriais precisam indexar dados para pesquisa e recuperação rápidas. Além disso, um banco de dados de vetores deve dar suporte a consultas de pesquisa internas para experiências de programação simplificadas.
Há vários métodos de indexação, como:
- FLAT – Índice de força bruta
- HNSW – Pesquisa aproximada do vizinho mais próximo eficiente e robusta usando grafos hierárquicos do Mundo Pequeno Navegável
Há vários métodos de pesquisa comuns, incluindo:
- K-Vizinhos mais próximos (KNN) – um método exaustivo que fornece mais precisão, mas com maior custo computacional.
- ANN (Vizinhos mais próximos aproximados) – uma precisão mais eficiente ao trocar a precisão para maior velocidade e menor sobrecarga de processamento.
Recursos de pesquisa
Por fim, os bancos de dados vetoriais executam buscas em vetores usando o método de comparação de vetor escolhido para retornar os vetores mais semelhantes. Alguns bancos de dados vetoriais também podem executar pesquisas híbridas restringindo primeiro os resultados com base em características ou metadados também armazenados no banco de dados antes de realizar a busca em vetores. Essa é uma maneira de tornar a busca em vetores mais eficaz e personalizável. Por exemplo, uma busca em vetores pode ser limitada apenas a vetores com uma marca específica no banco de dados ou vetores com dados de geolocalização em uma determinada região.
Principais cenários de busca em vetores
A pesquisa de similaridade de vetor pode ser usada em vários aplicativos. Alguns casos de uso comuns incluem:
- P e R semântica. Crie um chatbot que possa responder a perguntas sobre seus próprios dados. Por exemplo, um chatbot que pode responder a perguntas dos funcionários sobre a cobertura do plano de saúde. Centenas de páginas da densa documentação de cobertura do plano de saúde podem ser divididas em partes, convertidas em vetores de embeddings e pesquisadas com base na similaridade vetor. Em seguida, os documentos resultantes podem ser resumidos para funcionários usando outro LLM (modelo de linguagem) grande. Exemplo de P e R semântica
- Recuperação de documentos. Use a compreensão semântica mais profunda do texto fornecida por LLMs para fornecer uma experiência de pesquisa de documentos mais completa, em que a pesquisa tradicional baseada em palavra-chave fica aquém. Exemplo de recuperação de documentos
- Recomendação de produto. Encontre produtos ou serviços semelhantes a serem recomendados com base em atividades anteriores do usuário, como histórico de pesquisa ou compras anteriores. Exemplo de recomendação de produto
- Pesquisa Visual. Pesquise produtos semelhantes a uma foto tirada por um usuário ou uma foto de outro produto. Exemplo de Pesquisa Visual
- Cache semântico. Reduza o custo e a latência de LLMs armazenando em cache os preenchimentos de LLM. As consultas LLM são comparadas usando similaridade de vetor. Se uma nova consulta for semelhante o suficiente a uma consulta armazenada em cache anteriormente, a consulta armazenada em cache será retornada. Exemplo de Cache Semântico usando LangChain
- Memória de Conversa LLM. Persiste o histórico de conversas com um LLM como embeddings em um banco de dados vetorial. Seu aplicativo pode usar a busca em vetores para extrair o histórico relevante ou "memórias" para a resposta do LLM. Exemplo de Memória de Conversa LLM
Por que escolher o Cache do Azure para Redis para armazenar e pesquisar vetores?
O Cache do Azure para Redis pode ser usado efetivamente como um banco de dados vetorial para armazenar vetores de embeddings e executar pesquisas de similaridade de vetor. O suporte para armazenamento e pesquisa de vetores está disponível em várias estruturas de aprendizado de máquina importantes, como:
Essas estruturas apresentam integrações avançadas com o Redis. Por exemplo, a integração do Redis com LangChain gera automaticamente um esquema de índice para metadados passados ao usar o Redis como um repositório de vetor. Isso facilita muito a filtragem de resultados com base em metadados.
O Redis tem uma ampla variedade de recursos de pesquisa por meio do módulo RediSearch, que está disponível na camada Enterprise do Cache do Azure para Redis. Estão incluídos:
- Métricas de várias distâncias, incluindo
Euclidean
,Cosine
eInternal Product
. - Suporte para os métodos de indexação KNN (usando
FLAT
) e ANN (usandoHNSW
). - Armazenamento de vetor em estruturas de dados hash ou JSON
- Principais consultas em K
- Consultas de intervalo de vetor (ou seja, localizar todos os itens em uma distância de vetor específica)
- Pesquisa híbrida com recursos de consulta avançados, como:
- Filtragem geoespacial
- Filtros numéricos e textuais
- Correspondência difusa e prefixo
- Correspondência fonética
- Consultas boolianas
Além disso, o Redis geralmente é uma opção econômica porque já é usado com muita frequência para cache ou aplicativos de repositório de sessão. Nesses cenários, ele pode efetuar pull de tarefas duplas atendendo a uma função de cache típica ao manipular simultaneamente aplicativos de busca em vetores.
Quais são as outras opções para armazenar e buscar em vetores?
Há várias outras soluções no Azure para armazenamento e busca em vetores. Outras soluções incluem:
- Azure AI Search
- Azure Cosmos DB usando a API vCore do MongoDB
- Banco de Dados do Azure para PostgreSQL – Servidor Flexível usando
pgvector
Conteúdo relacionado
A melhor maneira de começar a usar embeddings e busca em vetores é experimentar por conta própria!