Integrazioni con database vettoriali

Gli archivi vettoriali mantengono i dati e i relativi incorporamenti vettoriali in modo che le applicazioni possano trovare record in base alla somiglianza semantica. Nelle applicazioni Agent Framework è possibile usare archivi vettoriali per recuperare i dati di base per la generazione aumentata di recupero o per archiviare le informazioni che un agente può richiamare in un secondo momento.

Le astrazioni dell'archivio vettoriale forniscono operazioni comuni per raccolte e record, mantenendo la logica dell'applicazione separata dall'implementazione dell'archivio vettoriale specifico. È ad esempio possibile iniziare con un'implementazione locale e passare a un servizio gestito con modifiche minime.

Funzionamento delle integrazioni dell'archivio vettoriali

Un flusso di lavoro tipico dell'archivio vettoriale include questi passaggi:

  1. Definire un modello di dati che identifica la chiave del record, i campi dati e i campi vettoriali.
  2. Configurare un generatore di incorporamento se l'archivio vettoriale non genera incorporamenti.
  3. Connettersi a un archivio vettoriale e selezionare o creare una raccolta.
  4. Genera gli embedding e aggiorna o inserisci i record nella collezione.
  5. Eseguire ricerche nella raccolta con testo o vettore, a seconda delle funzionalità dell'implementazione.
  6. Trasmettere i risultati di ricerca rilevanti a un agente come contesto o esporre la ricerca come strumento per l'agente.

supporto per gli archivi vettoriali in .NET

Agent Framework usa le astrazioni autonome dell'ecosistema di intelligenza artificiale .NET:

  • Microsoft.Extensions.VectorData fornisce API di archiviazione vettoriale, raccolta, record e ricerca comuni.
  • Microsoft.Extensions.AI fornisce astrazioni, IEmbeddingGenerator ad esempio per la generazione di incorporamenti indipendentemente da un provider di modelli specifico.

Se un componente di Agent Framework accetta un archivio vettoriale, è possibile fornire un'implementazione compatibile Microsoft.Extensions.VectorData . Ogni implementazione del database viene distribuita separatamente dal pacchetto di astrazioni.

Astrazioni di base

Astrazione Finalità
VectorStore Fornisce operazioni tra raccolte e crea istanze di raccolta tipizzata.
VectorStoreCollection<TKey, TRecord> Crea o elimina una raccolta e aggiorna o inserisce, recupera o elimina i relativi record.
IVectorSearchable<TRecord> Cerca i record tramite vettore o testo quando è disponibile un generatore di embedding o una capacità di generazione di embedding lato database.

Implementazioni dell'archivio vettoriale disponibili

Le implementazioni seguenti usano le astrazioni comuni .NET dell'archivio vettoriale. Esaminare la documentazione di ogni implementazione per le versioni dei pacchetti, i tipi di dati supportati e le limitazioni specifiche del servizio.

Implementation Availability Usa un SDK di database ufficialmente supportato Gestore o fornitore
Ricerca di intelligenza artificiale di Azure Disponibile Microsoft
Azure Cosmos DB per MongoDB vCore Disponibile Microsoft
Azure Cosmos DB compatibile con NoSQL Disponibile Microsoft
Couchbase Disponibile Couchbase
Elasticsearch Disponibile Elastic
Chroma Pianificato Non applicabile Non applicabile
in-memory Disponibile Non applicabile Microsoft
Milvus Pianificato Non applicabile Non applicabile
MongoDB Disponibile Microsoft
Neon Serverless Postgres Usare l'implementazione di Postgres Microsoft
Oracle Disponibile Oracle
Pinecone Disponibile No Microsoft
Postgres Disponibile Microsoft
Qdrant Disponibile Microsoft
Redis Disponibile Microsoft
SQL Server Disponibile Microsoft
SQLite Disponibile Microsoft
Volatile in memoria Obsoleto; utilizzare l'implementazione in memoria Non applicabile Microsoft
Weaviate Disponibile Microsoft

Importante

Le implementazioni dell'archivio vettoriale provengono da più gestori. Valutare la qualità, le licenze, i criteri di supporto e la compatibilità delle versioni di ogni implementazione prima di usarla. Alcune implementazioni usano SDK di database che il provider di database non supporta ufficialmente.

Get started

  1. Aggiungi il Microsoft.Extensions.VectorData.Abstractions il pacchetto e il pacchetto per l'implementazione del database vettoriale scelto.
  2. Definire un tipo di record e identificarne la chiave, i dati e le proprietà vettoriali.
  3. Configurare un'IEmbeddingGenerator se l'implementazione richiede embedding generati dall'applicazione.
  4. Creare l'elemento VectorStore dell'implementazione e quindi ottenere un VectorStoreCollection<TKey, TRecord> tipizzato.
  5. Assicurati che la raccolta esista, esegui l'upsert dei record e chiama SearchAsync con testo o un vettore.

Per un'introduzione completa ai modelli di dati, all'inserimento, agli incorporamenti e alla ricerca, vedere Database vettoriali per le app di intelligenza artificiale .NET.

supporto dell'archivio vettoriale Python

Agent Framework usa le astrazioni e le implementazioni dell'archivio vettoriale da Kernel semantico per Python. Le raccolte di Kernel semantico forniscono operazioni comuni per creare raccolte, inserire o aggiornare e recuperare record, nonché eseguire ricerche vettoriali, per parole chiave o ibride quando l'implementazione selezionata lo supporta.

Avvertimento

La funzionalità di archivio vettoriale di Kernel semantico per Python è una versione candidata. Potrebbero verificarsi modifiche di rilievo limitate prima della disponibilità generale.

Implementazioni dell'archivio vettoriale disponibili

Implementation Availability Usa un SDK di database ufficialmente supportato Gestore o fornitore
Ricerca di intelligenza artificiale di Azure Disponibile Microsoft Kernel semantico progetto
Azure Cosmos DB per MongoDB vCore Disponibile Microsoft Kernel semantico progetto
Azure Cosmos DB compatibile con NoSQL Disponibile Microsoft Kernel semantico progetto
Chroma Disponibile Microsoft Kernel semantico progetto
Elasticsearch Pianificato Non applicabile Non applicabile
Faiss Disponibile Microsoft Kernel semantico progetto
in-memory Disponibile Non applicabile Microsoft Kernel semantico progetto
MongoDB Disponibile Microsoft Kernel semantico progetto
Neon Serverless Postgres Usare l'implementazione di Postgres Microsoft Kernel semantico progetto
Oracle Disponibile Oracle
Pinecone Disponibile Microsoft Kernel semantico progetto
Postgres Disponibile Microsoft Kernel semantico progetto
Qdrant Disponibile Microsoft Kernel semantico progetto
Redis Disponibile Microsoft Kernel semantico progetto
SQL Server Disponibile pyodbc Microsoft Kernel semantico progetto
SQLite Pianificato Non applicabile Microsoft Kernel semantico progetto
Weaviate Disponibile Microsoft Kernel semantico progetto

Importante

Le implementazioni dell'archivio vettoriale provengono da più gestori. Valutare la qualità, le licenze, i criteri di supporto e la compatibilità delle versioni di ogni implementazione prima di usarla.

Get started

  1. Installare semantic-kernel e le dipendenze richieste dall'implementazione scelta.
  2. Definire un modello con l'elemento @vectorstoremodel Decorator e identificarne la chiave, i dati e i campi vettoriali.
  3. Crea una raccolta specifica per l'implementazione per quel modello.
  4. Assicurati che la raccolta esista, quindi aggiorna o inserisci i record.
  5. Usare le API di ricerca della raccolta per recuperare i record per l'applicazione.

Per l'installazione dell'implementazione e esempi completi, vedere Kernel semantico Vector Stores.

Supporto dell'archivio di vettori Go

L'integrazione con l'archivio vettoriale non è ancora disponibile in Agent Framework for Go. Vedere il repository di Agent Framework Go per lo stato più aggiornato.

Passaggi successivi