Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I database vettoriali archiviano e gestiscono incorporamenti vettoriali. Gli incorporamenti sono rappresentazioni numeriche di dati che mantengono il significato semantico. Parole, documenti, immagini, audio e altri tipi di dati possono essere tutti vettorizzati. È possibile usare gli incorporamenti per aiutare un modello di intelligenza artificiale a comprendere il significato degli input in modo da poter eseguire confronti e trasformazioni, ad esempio riepilogando il testo, trovando dati correlati contestualmente o creando immagini da descrizioni di testo.
È possibile, ad esempio, usare un database vettoriale per eseguire le azioni seguenti:
- Identificare immagini, documenti e canzoni simili in base ai relativi contenuti, temi, valutazioni e stili.
- Identificare prodotti simili in base alle relative caratteristiche e funzionalità e ai rispettivi gruppi utenti.
- Consigliare contenuti, prodotti o servizi in base alle preferenze utente.
- Identificare le migliori opzioni potenziali per soddisfare requisiti complessi da un ampio pool di scelte.
- Identificare anomalie dei dati o attività fraudolente diverse dai criteri normali o predominanti.
Informazioni sulla ricerca vettoriale
I database vettoriali offrono funzionalità di ricerca vettoriale in grado di trovare elementi simili in base alle caratteristiche dei dati anziché cercando corrispondenze esatte in un campo di proprietà. La ricerca vettoriale funziona analizzando le rappresentazioni vettoriali dei dati creati usando un modello di incorporamento di intelligenza artificiale, ad esempio i modelli di incorporamento di Azure OpenAI. Il processo di ricerca misura la distanza tra i vettori di dati e il vettore di query. I vettori di dati più vicini al vettore di query sono quelli più simili semanticamente.
Alcuni servizi, ad esempio Azure Cosmos DB per MongoDB vCore, offrono funzionalità di ricerca vettoriale nativa per i dati. Altri database, invece, possono essere migliorati con la ricerca vettoriale indicizzando i dati archiviati mediante un servizio come Azure AI Search, che consente di analizzare e indicizzare i dati per offrire funzionalità di ricerca vettoriale.
Flussi di lavoro di ricerca vettoriale con .NET e OpenAI
I database vettoriali e le relative funzionalità di ricerca sono particolarmente utili in flussi di lavoro basati sul modello RAG con Azure OpenAI. Questo modello consente di aumentare il modello di intelligenza artificiale con conoscenze semantiche aggiuntive sui dati. Un flusso di lavoro di intelligenza artificiale comune che usa i database vettoriali include questi passaggi:
- Creare incorporamenti per i dati usando un modello di incorporamento OpenAI.
- Archiviare e indicizzare gli incorporamenti in un database vettoriale o in un servizio di ricerca.
- Convertire in incorporamenti le richieste utente provenienti dall'applicazione.
- Esegui una ricerca vettoriale nei tuoi dati, confrontando l'embedding del prompt dell'utente con gli embedding nel tuo database.
- Usare un modello linguistico, come gpt-4o, per assemblare un completamento facile da usare dai risultati della ricerca vettoriale.
Per un esempio pratico di questo flusso, vedere l'esercitazione Implementare Azure OpenAI con RAG usando la ricerca vettoriale in un'app .NET .
Altri vantaggi del modello RAG includono:
- Capacità di generare risposte contestualmente pertinenti e accurate alle richieste degli utenti da modelli di intelligenza artificiale.
- Superare i limiti dei token LLM: l'operazione intensiva viene eseguita tramite la ricerca vettoriale nel database.
- Riduzione dei costi derivanti dall'ottimizzazione frequente dei dati aggiornati.
Libreria Microsoft.Extensions.VectorData
Il 📦 pacchetto Microsoft.Extensions.VectorData.Abstractions fornisce un livello unificato di astrazioni per interagire con archivi vettoriali in .NET. Queste astrazioni consentono di scrivere codice in una singola API e di scambiare l'archivio vettoriale sottostante con modifiche minime all'applicazione.
La libreria offre le funzionalità chiave seguenti:
- Modello di dati unificato: definire il modello di dati una volta usando gli attributi .NET e usarlo in qualsiasi archivio vettoriale supportato.
- Operazioni CRUD: creare, leggere, aggiornare ed eliminare record in un archivio vettoriale.
- Ricerca vettoriale e testo: eseguire query sui record in base alla somiglianza semantica usando la ricerca vettoriale o per parola chiave usando la ricerca di testo.
- Gestione raccolta: creare, elencare ed eliminare raccolte (tabelle o indici) in un archivio vettoriale.
Astrazioni chiave
La Microsoft.Extensions.VectorData.Abstractions libreria espone le classi astratte principali seguenti:
- VectorStore: classe di primo livello per un database vettoriale. Usarlo per recuperare e gestire le raccolte.
-
VectorStoreCollection<TKey,TRecord>: rappresenta una raccolta denominata di record all'interno di un archivio vettoriale. Usarlo per eseguire operazioni CRUD e di ricerca. Anche implementa
IVectorSearchable<TRecord>. - IKeywordHybridSearchable<TRecord>: implementato dalle raccolte che supportano la ricerca ibrida, combinando la somiglianza del vettore con la corrispondenza delle parole chiave.
Per una guida dettagliata sulla definizione del modello di dati, operazioni CRUD, ricerca vettoriale, filtro, ricerca ibrida e generazione di incorporamento, vedere Usare archivi vettoriali nelle app di intelligenza artificiale .NET.
Provider di archivi vettoriali
Il Microsoft.Extensions.VectorData.Abstractions pacchetto definisce le astrazioni e i pacchetti di provider separati forniscono implementazioni per database vettoriali specifici. Scegliere il provider che corrisponde al database vettoriale, ad esempio Microsoft.SemanticKernel.Connectors.AzureAISearch.
Annotazioni
Nonostante l'inclusione di "SemanticKernel" nei nomi dei pacchetti, questi provider non hanno nulla a che fare con il kernel semantico e sono utilizzabili ovunque in .NET, incluso Agent Framework.
Tutti i provider implementano le stesse VectorStore classi e VectorStoreCollection<TKey,TRecord> astratte, quindi è possibile passare da una classe all'altra senza modificare la logica dell'applicazione.
Suggerimento
Usare il provider in memoria (Microsoft.SemanticKernel.Connectors.InMemory) durante lo sviluppo e il test. Non richiede alcun servizio o configurazione esterno ed è possibile scambiarlo per un provider di produzione in un secondo momento.