Compartilhar via


Bancos de dados vetoriais para .NET + IA

Os bancos de dados vetoriais são projetados para armazenar e gerenciar inserções de vetores. Inserções são representações numéricas de dados não numéricos que preservam o significado semântico. Palavras, documentos, imagens, áudio e outros tipos de dados podem ser vetorizados. Você pode usar inserções para ajudar um modelo de IA a entender o significado das entradas para que ele possa realizar comparações e transformações, como resumir textos, encontrar dados contextualmente relacionados ou criar imagens a partir de descrições de texto.

Por exemplo, você pode usar um banco de dados vetorial para:

  • Identificar imagens, documentos e músicas semelhantes com base no seus conteúdos, temas, sentimentos e estilos.
  • Identificar produtos semelhantes com base em suas características, recursos e grupos de usuários.
  • Recomendar conteúdo, produtos ou serviços com base nas preferências do usuário.
  • Identificar as melhores opções potenciais em um grande conjunto de escolhas para atender a requisitos complexos.
  • Identificar anomalias de dados ou atividades fraudulentas que sejam diferentes dos padrões predominantes ou normais.

Os bancos de dados vetoriais oferecem recursos de busca em vetores para encontrar itens semelhantes com base em suas características de dados, em vez de correspondências exatas em um campo de propriedade. A busca em vetores funciona analisando as representações vetoriais de seus dados que você criou usando um modelo de inserção de IA, como os modelos de inserção do OpenAI do Azure. O processo de pesquisa mede a distância entre os vetores de dados e seu vetor de consulta. Os vetores de dados mais próximos do vetor de consulta são os mais semelhantes semanticamente.

Alguns serviços, como o Azure Cosmos DB for MongoDB vCore, fornecem recursos nativos de busca em vetores para seus dados. Outros bancos de dados podem ser aprimorados com a busca em vetores indexando os dados armazenados usando um serviço como a Pesquisa de IA do Azure, que pode verificar e indexar seus dados para fornecer recursos de busca em vetores.

Fluxos de trabalho de busca em vetores com .NET e OpenAI

Os bancos de dados vetoriais e seus recursos de pesquisa são especialmente úteis em fluxos de trabalho do padrão RAG com o OpenAI do Azure. Esse padrão permite que você aumente ou aprimore seu modelo de IA com conhecimento adicional semanticamente avançado de seus dados. Um fluxo de trabalho de IA comum usando bancos de dados vetoriais pode incluir as seguintes etapas:

  1. Criar inserções para seus dados usando um modelo de inserção do OpenAI.
  2. Armazenar e indexar as inserções em um banco de dados vetorial ou serviço de pesquisa.
  3. Converter os prompts de usuário do seu aplicativo em inserções.
  4. Executar uma busca em vetores nos seus dados, comparando a inserção do prompt do usuário com as inserções do seu banco de dados.
  5. Usar um modelo de linguagem, como GPT-35 ou GPT-4, para montar uma conclusão amigável para o usuário a partir dos resultados da busca em vetores.

Visite o tutorial Implementar o OpenAI do Azure com RAG usando a busca em vetores em um aplicativo .NET para obter um exemplo prático desse fluxo.

Outros benefícios do padrão RAG incluem:

  • Gerar respostas contextualmente relevantes e precisas para prompts de usuários a partir de modelos de IA.
  • Superar os limites de tokens do LLM: o trabalho pesado é feito por meio da busca em vetores do banco de dados.
  • Reduzir os custos do ajuste fino frequente em dados atualizados.

Soluções de bancos de dados vetoriais disponíveis

Os aplicativos de IA geralmente usam bancos de dados e serviços de vetor de dados para melhorar a relevância e fornecer funcionalidade personalizada. Muitos desses serviços fornecem um SDK nativo para .NET, enquanto outros oferecem um serviço REST ao qual você pode se conectar por meio de um código personalizado. O Kernel Semântico fornece um modelo de componente extensível que permite que você use repositórios de vetores diferentes sem a necessidade de aprender cada SDK.

O Kernel Semântico fornece conectores para os seguintes bancos de dados e serviços de vetor:

Serviço vetorial Conector do Kernel Semântico SDK .NET
Azure AI Search Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB para NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Servidor PostgreSQL do Azure Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Banco de Dados SQL do Azure Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Chroma NA
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
Busca em vetores do MongoDB Atlas Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
Pinecone Microsoft.SemanticKernel.Connectors.Pinecone REST API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
Redis Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis
Weaviate Microsoft.SemanticKernel.Connectors.Weaviate REST API

Visite a documentação de cada serviço respectivo para descobrir o SDK do .NET e o suporte à API.