Partager via


Bases de données vectorielles pour .NET + IA

Les bases de données vectorielles sont conçues pour stocker et gérer des incorporations vectorielles. Les incorporations sont des représentations numériques de données non numériques qui conservent la signification sémantique. Les mots, documents, images, audio et autres types de données peuvent tous être vectorisés. Vous pouvez utiliser des incorporations pour aider un modèle IA à comprendre la signification des entrées afin qu’il puisse effectuer des comparaisons et des transformations, telles que la synthèse de texte, la recherche de données contextuelles ou la création d’images à partir de descriptions de texte.

Par exemple, vous pouvez utiliser une base de données vectorielle pour :

  • Identifier des images, des documents et des chansons similaires en fonction de leur contenu, de leurs thèmes, sentiments et styles.
  • Identifier des produits similaires en fonction de leurs caractéristiques, fonctionnalités et groupes d’utilisateurs.
  • Recommander du contenu, des produits ou des services en fonction des préférences de l’utilisateur.
  • Identifier les meilleures options potentielles dans un grand pool de choix pour répondre à des exigences complexes.
  • Identifier les anomalies de données ou les activités frauduleuses qui dévient des modèles prédominants ou normaux.

Les bases de données vectorielles fournissent des fonctionnalités de recherche vectorielle pour rechercher des éléments similaires en fonction de leurs caractéristiques de données plutôt que par des correspondances exactes sur un champ de propriété. La recherche vectorielle fonctionne en analysant les représentations vectorielles de vos données que vous avez créées à l’aide d’un modèle d’incorporation IA, comme les modèles d’incorporation Azure OpenAI. Le processus de recherche mesure la distance entre les vecteurs de données et votre vecteur de requête. Les vecteurs de données les plus proches de votre vecteur de requête sont ceux qui se révèlent les plus similaires sémantiquement.

Certains services tels qu’Azure Cosmos DB for MongoDB vCore fournissent des fonctionnalités de recherche vectorielle native pour vos données. D’autres bases de données peuvent être améliorées avec la recherche vectorielle en indexant les données stockées à l’aide d’un service tel que Recherche Azure AI, qui peut analyser et indexer vos données pour fournir des fonctionnalités de recherche vectorielle.

Flux de travail de recherche vectorielle avec .NET et OpenAI

Les bases de données vectorielles et leurs fonctionnalités de recherche sont particulièrement utiles dans les flux de travail de modèle RAG avec Azure OpenAI. Ce modèle vous permet d’augmenter ou d’améliorer votre modèle IA avec des connaissances sémantiquement enrichies de vos données. Un flux de travail IA courant utilisant des bases de données vectorielles peut inclure les étapes suivantes :

  1. Créer des incorporations pour vos données à l’aide d’un modèle d’incorporation OpenAI.
  2. Stocker et indexer les incorporations dans une base de données vectorielle ou un service de recherche.
  3. Convertir les invites utilisateur de votre application en incorporations.
  4. Exécuter une recherche vectorielle sur vos données, en comparant l’incorporation de l’invite utilisateur aux incorporations de votre base de données.
  5. Utiliser un modèle de langage tel que GPT-35 ou GPT-4 pour composer une saisie semi-automatique conviviale à partir des résultats de recherche vectorielle.

Visitez le tutoriel Implémentation d’Azure OpenAI avec RAG à l’aide de la recherche vectorielle dans une application .NET pour obtenir un exemple pratique de ce flux.

Voici d’autres avantages du modèle RAG :

  • Générez des réponses contextuellement pertinentes et précises aux invites utilisateur à partir de modèles IA.
  • Surmontez les limites des jetons LLM : le travail de fond est effectué par le biais de la recherche vectorielle de base de données.
  • Réduisez les coûts du réglage précis fréquent des données mises à jour.

Solutions de base de données vectorielles disponibles

Les applications IA utilisent souvent des services et des bases de données vectoriels pour améliorer la pertinence et fournir une fonctionnalité personnalisée. Bon nombre de ces produits offrent un Kit de développement logiciel (SDK) natif pour .NET, alors que d’autres proposent un service REST auquel vous pouvez vous connecter via un code personnalisé. Semantic Kernel fournit également un modèle de composant extensible qui vous permet d’utiliser différents magasins de vecteurs sans avoir à apprendre chaque Kit de développement logiciel (SDK).

Semantic Kernel fournit des connecteurs pour les services et bases de données vectoriels suivants :

Service vectoriel Connecteur Semantic Kernel Kit de développement logiciel (SDK) .NET
Recherche Azure AI Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB pour NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL Server Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL Database 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
MongoDB Atlas Vector Search 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

Consultez la documentation de chaque service respectif pour découvrir le Kit de développement logiciel (SDK) .NET et la prise en charge de l’API.