Partilhar via


O que são Incorporações de Vetores e Pesquisa Vetorial no Cache do Azure para Redis?

A pesquisa de semelhança vetorial (VSS) tornou-se uma tecnologia popular para aplicações inteligentes alimentadas por IA. O Cache do Azure para Redis pode ser usado como um banco de dados vetorial combinando modelos como o Azure OpenAI 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 incorporações vetoriais, pesquisa de semelhança vetorial e como o Redis pode ser usado como um banco de dados vetorial alimentando aplicativos inteligentes.

Para tutoriais e aplicativos de exemplo sobre como usar o Cache do Azure para Redis e o Azure OpenAI para executar a pesquisa de semelhança vetorial, consulte o seguinte:

Âmbito da disponibilidade

Os recursos de pesquisa vetorial no Redis exigem o Redis Stack, especificamente o módulo RediSearch . Esse recurso só está disponível nas camadas Enterprise do Cache do Azure para Redis.

Esta tabela contém as informações sobre a disponibilidade da pesquisa vetorial em diferentes camadas.

Escalão de serviço Básico / Standard Premium Grandes Empresas Flash Empresarial Azure Managed Redis (visualização)
Disponível No No Sim Sim (pré-visualização) Sim

O que são incorporações vetoriais?

Conceito

As incorporações vetoriais são um conceito fundamental no aprendizado de máquina e no processamento de linguagem natural que permitem a representação de dados, como palavras, documentos ou imagens como vetores numéricos em um espaço vetorial de alta dimensão. A ideia principal por trás das incorporações vetoriais é capturar as relações subjacentes e a semântica dos dados, mapeando-os para pontos nesse espaço vetorial. 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 numéricas. Isso permite que dados complexos sejam manipulados e analisados matematicamente, facilitando a execução de tarefas como comparação, recomendação e classificação de similaridade.

Cada modelo de aprendizado de máquina 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 vetorial representa. Mas como o modelo é consistente entre cada bloco de dados de entrada, palavras, documentos ou imagens semelhantes têm vetores que também são semelhantes. Por exemplo, as palavras basketball e baseball têm incorporações vetores muito mais próximos uns dos outros do que uma palavra como rainforest.

Comparação vetorial

Os vetores podem ser comparados usando várias métricas. A maneira mais popular de comparar vetores é usar a semelhança 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 distância euclidiana e produto interno.

Geração de incorporações

Muitos modelos de aprendizado de máquina suportam APIs de incorporação. Para obter um exemplo de como criar incorporações vetoriais usando o Serviço Azure OpenAI, consulte Saiba como gerar incorporações com o Azure OpenAI.

O que é um banco de dados vetorial?

Um banco de dados vetorial é um banco de dados que pode armazenar, gerenciar, recuperar e comparar vetores. Os bancos de dados vetoriais devem ser capazes de armazenar eficientemente um vetor de alta dimensão e recuperá-lo com latência mínima e alta taxa de transferência. Armazenamentos 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 PostgreSQL, por exemplo, com a extensão pgvector .

Índice e método de pesquisa

Os bancos de dados vetoriais precisam indexar dados para pesquisa e recuperação rápidas. Além disso, um banco de dados vetorial deve suportar consultas de pesquisa internas para experiências de programação simplificadas.

Existem vários métodos de indexação, tais como:

  • FLAT - Índice de força bruta
  • HNSW - Pesquisa aproximada eficiente e robusta de vizinhos mais próximos usando gráficos hierárquicos navegáveis do Pequeno Mundo

Existem vários métodos de pesquisa comuns, incluindo:

  • K-Nearest Neighbors (KNN) - um método exaustivo que fornece a maior precisão, mas com maior custo computacional.
  • Vizinhos mais próximos aproximados (ANN) - uma precisão de negociação mais eficiente para maior velocidade e menor sobrecarga de processamento.

Recursos de pesquisa

Finalmente, os bancos de dados vetoriais executam pesquisas vetoriais usando o método de comparação de vetores escolhido para retornar os vetores mais semelhantes. Alguns bancos de dados vetoriais também podem realizar pesquisas híbridas primeiro estreitando os resultados com base em características ou metadados também armazenados no banco de dados antes de realizar a pesquisa vetorial. Esta é uma forma de tornar a pesquisa vetorial mais eficaz e personalizável. Por exemplo, uma pesquisa vetorial pode ser limitada apenas a vetores com uma tag específica no banco de dados ou vetores com dados de geolocalização em uma determinada região.

Principais cenários de pesquisa vetorial

A pesquisa de semelhança vetorial pode ser usada em vários aplicativos. Alguns casos de uso comuns incluem:

  • P&R semânticas. 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 sua cobertura de saúde. Centenas de páginas de densa documentação de cobertura de cuidados de saúde podem ser divididas em partes, convertidas em vetores de incorporação e pesquisadas com base na semelhança vetorial. Os documentos resultantes podem ser resumidos para os funcionários usando outro modelo de linguagem grande (LLM). Exemplo de P&e Semântica
  • Recuperação de documentos. Use a compreensão semântica mais profunda do texto fornecida pelos LLMs para fornecer uma experiência de pesquisa de documentos mais rica onde a pesquisa tradicional baseada em palavras-chave fica aquém. Exemplo de recuperação de documentos
  • Recomendação de Produto. Encontre produtos ou serviços semelhantes para recomendar 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 a uma foto de outro produto. Exemplo de pesquisa visual
  • Cache semântico. Reduza o custo e a latência dos LLMs armazenando em cache as finalizações do LLM. As consultas LLM são comparadas usando semelhança vetorial. Se uma nova consulta for semelhante o suficiente a uma consulta armazenada anteriormente em cache, a consulta armazenada em cache será retornada. Exemplo de cache semântico usando LangChain
  • LLM Memória de conversação. Persista o histórico de conversas com um LLM como incorporações em um banco de dados vetorial. Seu aplicativo pode usar a pesquisa vetorial para extrair histórico relevante ou "memórias" para a resposta do LLM. Exemplo de memória de conversação LLM

Por que escolher o Cache Redis do Azure para armazenar e pesquisar vetores?

O Cache Redis do Azure pode ser usado efetivamente como um banco de dados vetorial para armazenar vetores incorporados e executar pesquisas de semelhança vetorial. O suporte para armazenamento vetorial e pesquisa está disponível em muitas estruturas importantes de aprendizado de máquina, como:

Essas estruturas apresentam integrações ricas com o Redis. Por exemplo, a integração do Redis LangChain gera automaticamente um esquema de índice para metadados passados ao usar o Redis como um armazenamento vetorial. Isso facilita muito a filtragem de resultados com base em metadados.

O Redis tem uma ampla gama de recursos de pesquisa por meio do módulo RediSearch, que está disponível na camada Enterprise do Cache do Azure para Redis. Estes são, entre outros:

  • Várias métricas de distância, incluindo Euclidean, Cosinee Internal Product.
  • Suporte para métodos de indexação KNN (usando FLAT) e ANN (usando HNSW).
  • Armazenamento vetorial em estruturas de dados hash ou JSON
  • Principais consultas K
  • Consultas de intervalo vetorial (ou seja, localizar todos os itens dentro de uma distância vetorial específica)
  • Pesquisa híbrida com recursos de consulta poderosos, tais como:
    • Filtragem geoespacial
    • Filtros numéricos e de texto
    • Correspondência de prefixo e difusa
    • Correspondência fonética
    • Consultas booleanas

Além disso, o Redis geralmente é uma escolha econômica porque já é comumente usado para aplicativos de armazenamento de cache ou sessão. Nesses cenários, ele pode realizar tarefas duplas servindo uma função de cache típica e, ao mesmo tempo, manipulando aplicativos de pesquisa vetorial.

Quais são as minhas outras opções para armazenar e procurar vetores?

Existem várias outras soluções no Azure para armazenamento vetorial e pesquisa. Outras soluções incluem:

A melhor maneira de começar com incorporações e pesquisa vetorial é experimentá-lo você mesmo!