Condividi tramite


Database vettoriali per .NET + intelligenza artificiale

I database vettoriali sono progettati per archiviare e gestire incorporamenti, ovvero rappresentazioni numeriche di dati non numerici 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.

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 procede analizzando le rappresentazioni vettoriali dei dati create usando un modello di incorporamento di intelligenza artificiale, come 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 che risultano più simili dal punto di vista semantico.

Alcuni servizi come Azure Cosmos DB for 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 o migliorare il modello di intelligenza artificiale aggiungendo una conoscenza dei dati di tipo semantico. Un comune flusso di lavoro di intelligenza artificiale che usa database vettoriali può essere costituito dai passaggi seguenti:

  1. Creare incorporamenti per i dati usando un modello di incorporamento OpenAI.
  2. Archiviare e indicizzare gli incorporamenti in un database vettoriale o in un servizio di ricerca.
  3. Convertire in incorporamenti le richieste utente provenienti dall'applicazione.
  4. Eseguire una ricerca vettoriale sui dati confrontando l'incorporamento di una richiesta utente con gli incorporamenti nel database.
  5. Usare un modello linguistico come GPT-35 o GPT-4 per assemblare un completamento descrittivo dai risultati della ricerca vettoriale.

Consultare l'esercitazione Implementare Azure OpenAI con RAG usando la ricerca vettoriale in un'app .NET per un esempio pratico di questo flusso.

Altri vantaggi del modello RAG includono:

  • Capacità di generare risposte contestualmente pertinenti e accurate alle richieste degli utenti da modelli di intelligenza artificiale.
  • Superamento dei limiti dei token LLM: le attività più complesse vengono eseguite tramite la ricerca vettoriale nei database.
  • Riduzione dei costi derivanti dall'ottimizzazione frequente dei dati aggiornati.

Soluzioni di database vettoriali disponibili

Le applicazioni di intelligenza artificiale usano spesso database e servizi vettoriali di dati per migliorare la pertinenza e fornire funzionalità personalizzate. Molti di questi servizi forniscono un SDK nativo per .NET, mentre altri offrono un servizio REST a cui è possibile connettersi tramite codice personalizzato. Il kernel semantico fornisce un modello di componente estendibile che consente di usare archivi vettoriali diversi senza dover apprendere ogni SDK.

Il kernel semantico fornisce connettori per i seguenti servizi e database vettoriali:

Servizio vettoriale Connettore del kernel semantico .NET SDK
Azure AI Search Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB for NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Server PostgreSQL di Azure Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Database SQL di Azure Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Chroma ND
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
Ricerca vettoriale di 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

Vedere la documentazione di ogni servizio per individuare il supporto API e SDK .NET.