Intégrations de bases de données vectorielles

Les vecteurs stockent les données et ses incorporations vectorielles afin que les applications puissent rechercher des enregistrements par similarité sémantique. Dans les applications basées sur Agent Framework, vous pouvez utiliser des bases de données vectorielles pour récupérer des données d’ancrage pour la génération augmentée par récupération (RAG) ou pour stocker des informations qu’un agent pourra retrouver plus tard.

Les abstractions de magasin de vecteurs fournissent des opérations courantes pour les collections et les enregistrements, ce qui sépare votre logique d’application de l’implémentation spécifique du magasin de vecteurs. Vous pouvez, par exemple, commencer par une implémentation locale et basculer vers un service managé avec des modifications minimales.

Fonctionnement des intégrations avec des bases de données vectorielles

Un flux de travail de magasin de vecteurs classique comprend les étapes suivantes :

  1. Définissez un modèle de données qui identifie la clé d’enregistrement, les champs de données et les champs vectoriels.
  2. Configurez un générateur d’incorporation si le magasin vectoriel ne génère pas d’incorporations.
  3. Connectez-vous à un magasin vectoriel et sélectionnez ou créez une collection.
  4. Générer des vecteurs d’intégration et insérer ou mettre à jour des enregistrements dans la collection.
  5. Recherchez la collection avec du texte ou un vecteur, en fonction des fonctionnalités de l’implémentation.
  6. Transmettez les résultats de recherche pertinents à un agent en tant que contexte ou exposez la recherche en tant qu’outil d’agent.

Prise en charge des bases de données vectorielles dans .NET

Agent Framework utilise les abstractions autonomes de l'écosystème IA .NET :

  • Microsoft.Extensions.VectorData fournit des API courantes de magasin de vecteurs, de collection, d’enregistrement et de recherche.
  • Microsoft.Extensions.AI fournit des abstractions telles que IEmbeddingGenerator pour générer des embeddings indépendamment d’un fournisseur de modèles spécifique.

Lorsqu’un composant Agent Framework accepte un magasin de vecteurs, vous pouvez fournir une implémentation compatible Microsoft.Extensions.VectorData . Chaque implémentation de base de données est distribuée séparément du package d’abstractions.

Abstractions principales

Abstraction Purpose
VectorStore Fournit des opérations sur plusieurs collections et crée des instances de collection typées.
VectorStoreCollection<TKey, TRecord> Crée ou supprime une collection et insère ou met à jour, récupère ou supprime ses enregistrements.
IVectorSearchable<TRecord> Recherche les enregistrements par vecteur ou par texte lorsqu’un générateur d’incorporation ou une fonctionnalité d’incorporation côté base de données est disponible.

Implémentations disponibles de bases de données vectorielles

Les implémentations suivantes utilisent les abstractions communes de magasins vectoriels .NET. Passez en revue la documentation de chaque implémentation pour connaître les versions de package, les types de données pris en charge et les limitations spécifiques au service.

Implementation Availability Utilise un Kit de développement logiciel (SDK) de base de données officiellement pris en charge Maintenance ou fournisseur
Recherche Azure AI Available Yes Microsoft
Azure Cosmos DB pour MongoDB vCore Available Yes Microsoft
Azure Cosmos DB pour NoSQL Available Yes Microsoft
Couchbase Available Yes Couchbase
Elasticsearch Available Yes Elastic
Chroma Planifié Sans objet Sans objet
En mémoire Available Sans objet Microsoft
Milvus Planifié Sans objet Sans objet
MongoDB Available Yes Microsoft
Neon Serverless Postgres Utiliser l’implémentation postgres Yes Microsoft
Oracle Available Yes Oracle
Pinecone Available No Microsoft
Postgres Available Yes Microsoft
Qdrant Available Yes Microsoft
Redis Available Yes Microsoft
SQL Server Available Yes Microsoft
SQLite Available Yes Microsoft
Volatile en mémoire Déconseillé ; utiliser l’implémentation en mémoire Sans objet Microsoft
Weaviate Available Yes Microsoft

Importante

Les implémentations de magasins vectoriels proviennent de plusieurs mainteneurs. Évaluez la qualité, les licences, la stratégie de prise en charge et la compatibilité des versions de chaque implémentation avant de l’utiliser. Certaines implémentations utilisent des sdk de base de données que le fournisseur de base de données ne prend pas officiellement en charge.

Get started

  1. Ajouter le Microsoft.Extensions.VectorData.Abstractions package et package pour votre implémentation de magasin de vecteurs choisie.
  2. Définissez un type d’enregistrement et identifiez sa clé, ses données et ses propriétés vectorielles.
  3. Configurez une IEmbeddingGenerator configuration si votre implémentation nécessite des incorporations générées par l’application.
  4. Créez l’implémentation VectorStore, puis obtenez un type VectorStoreCollection<TKey, TRecord>.
  5. Vérifiez que la collection existe, effectuez une opération d’upsert sur les enregistrements, et appelez SearchAsync avec du texte ou un vecteur.

Pour une présentation complète des modèles de données, de l’ingestion, des incorporations et de la recherche, consultez les bases de données Vector pour .NET applications IA.

prise en charge des bases de données vectorielles Python

Agent Framework utilise les abstractions et les implémentations de magasin de vecteurs de Noyau sémantique pour Python. Les collections de Noyau sémantique fournissent des opérations courantes pour créer des collections, insérer ou mettre à jour des enregistrements, les récupérer, et exécuter des recherches vectorielles, par mots-clés ou hybrides lorsque l’implémentation sélectionnée les prend en charge.

Avertissement

La fonctionnalité de stockage vectoriel de Noyau sémantique pour Python est en version candidate. Un nombre limité de changements avec rupture de compatibilité pourraient survenir avant la disponibilité générale.

Implémentations disponibles de bases de données vectorielles

Implementation Availability Utilise un Kit de développement logiciel (SDK) de base de données officiellement pris en charge Maintenance ou fournisseur
Recherche Azure AI Available Yes projet Microsoft Noyau sémantique
Azure Cosmos DB pour MongoDB vCore Available Yes projet Microsoft Noyau sémantique
Azure Cosmos DB pour NoSQL Available Yes projet Microsoft Noyau sémantique
Chroma Available Yes projet Microsoft Noyau sémantique
Elasticsearch Planifié Sans objet Sans objet
Faiss Available Yes projet Microsoft Noyau sémantique
En mémoire Available Sans objet projet Microsoft Noyau sémantique
MongoDB Available Yes projet Microsoft Noyau sémantique
Neon Serverless Postgres Utiliser l’implémentation postgres Yes projet Microsoft Noyau sémantique
Oracle Available Yes Oracle
Pinecone Available Yes projet Microsoft Noyau sémantique
Postgres Available Yes projet Microsoft Noyau sémantique
Qdrant Available Yes projet Microsoft Noyau sémantique
Redis Available Yes projet Microsoft Noyau sémantique
SQL Server Available pyodbc projet Microsoft Noyau sémantique
SQLite Planifié Sans objet projet Microsoft Noyau sémantique
Weaviate Available Yes projet Microsoft Noyau sémantique

Importante

Les implémentations de magasins vectoriels proviennent de plusieurs mainteneurs. Évaluez la qualité, les licences, la stratégie de prise en charge et la compatibilité des versions de chaque implémentation avant de l’utiliser.

Get started

  1. Installez semantic-kernel et les dépendances requises par votre implémentation choisie.
  2. Définissez un modèle avec le @vectorstoremodel décorateur et identifiez ses champs clé, données et vecteurs.
  3. Créez une collection spécifique à l’implémentation pour ce modèle.
  4. Vérifiez que la collection existe, puis insérez ou mettez à jour des enregistrements.
  5. Utilisez les API de recherche de la collection pour récupérer des enregistrements pour votre application.

Pour la configuration de l’implémentation et des exemples complets, consultez Magasins de vecteurs Noyau sémantique.

Prise en charge des bases de données vectorielles en Go

L’intégration du magasin de vecteurs n’est pas encore disponible dans Agent Framework pour Go. Consultez le référentiel Agent Framework Go pour connaître l’état le plus récent.

Étapes suivantes