Delen via


Vectordatabases voor .NET + AI

Vectordatabases zijn ontworpen voor het opslaan en beheren van vector-insluitingen. Insluitingen zijn numerieke weergaven van niet-numerieke gegevens die semantische betekenis behouden. Woorden, documenten, afbeeldingen, audio en andere typen gegevens kunnen allemaal worden gevectoriseerd. U kunt insluitingen gebruiken om een AI-model te helpen de betekenis van invoer te begrijpen, zodat deze vergelijkingen en transformaties kan uitvoeren, zoals het samenvatten van tekst, het vinden van contextgerelateerde gegevens of het maken van afbeeldingen op basis van tekstbeschrijvingen.

U kunt bijvoorbeeld een vectordatabase gebruiken om het volgende te doen:

  • Identificeer vergelijkbare afbeeldingen, documenten en nummers op basis van hun inhoud, thema's, sentimenten en stijlen.
  • Identificeer vergelijkbare producten op basis van hun kenmerken, functies en gebruikersgroepen.
  • Inhoud, producten of services aanbevelen op basis van gebruikersvoorkeuren.
  • Identificeer de beste mogelijke opties uit een grote groep keuzes om te voldoen aan complexe vereisten.
  • Identificeer gegevensafwijkingen of frauduleuze activiteiten die niet hetzelfde zijn als overheersende of normale patronen.

Vectordatabases bieden vectorzoekmogelijkheden om vergelijkbare items te vinden op basis van hun gegevenskenmerken in plaats van door exacte overeenkomsten in een eigenschappenveld. Vectorzoekopdrachten werken door de vectorweergaven van uw gegevens te analyseren die u hebt gemaakt met behulp van een AI-insluitmodel, zoals de Azure OpenAI-insluitingsmodellen. Het zoekproces meet de afstand tussen de gegevensvectoren en uw queryvector. De gegevensvectoren die zich het dichtst bij uw queryvector bevinden, zijn de vectoren die het meest vergelijkbaar zijn met semantisch.

Sommige services zoals Azure Cosmos DB voor MongoDB vCore bieden systeemeigen vectorzoekmogelijkheden voor uw gegevens. Andere databases kunnen worden uitgebreid met vectorzoekopdrachten door de opgeslagen gegevens te indexeren met behulp van een service zoals Azure AI Search, die uw gegevens kan scannen en indexeren om vectorzoekmogelijkheden te bieden.

Vectorzoekwerkstromen met .NET en OpenAI

Vectordatabases en hun zoekfuncties zijn vooral handig in RAG-patroonwerkstromen met Azure OpenAI. Met dit patroon kunt u uw AI-model uitbreiden of verbeteren met aanvullende semantisch uitgebreide kennis van uw gegevens. Een algemene AI-werkstroom met vectordatabases kan de volgende stappen bevatten:

  1. Maak insluitingen voor uw gegevens met behulp van een OpenAI-insluitmodel.
  2. Sla de insluitingen op en indexeer deze in een vectordatabase of zoekservice.
  3. Converteer gebruikersprompts van uw toepassing naar insluitingen.
  4. Voer een vectorzoekopdracht uit op uw gegevens, waarbij de gebruiker vraagt om insluiten te vergelijken met de insluitingen van uw database.
  5. Gebruik een taalmodel zoals GPT-35 of GPT-4 om een gebruiksvriendelijke voltooiing van de vectorzoekresultaten samen te stellen.

Ga naar de zelfstudie Azure OpenAI implementeren met RAG met behulp van vectorzoekopdrachten in een .NET-app voor een praktijkvoorbeeld van deze stroom.

Andere voordelen van het RAG-patroon zijn:

  • Contextafhankelijk relevante en nauwkeurige antwoorden genereren op gebruikersprompts van AI-modellen.
  • Limieten voor LLM-tokens overwinnen: het zware werk wordt uitgevoerd via de zoekfunctie van de databasevector.
  • Verlaag de kosten door regelmatig af te stemmen op bijgewerkte gegevens.

Beschikbare vectordatabaseoplossingen

AI-toepassingen maken vaak gebruik van gegevensvectordatabases en -services om de relevantie te verbeteren en aangepaste functionaliteit te bieden. Veel van deze services bieden een systeemeigen SDK voor .NET, terwijl anderen een REST-service bieden waarmee u verbinding kunt maken via aangepaste code. Semantische kernel biedt een uitbreidbaar onderdeelmodel waarmee u verschillende vectorarchieven kunt gebruiken zonder dat u elke SDK hoeft te leren.

Semantische kernel biedt connectors voor de volgende vectordatabases en -services:

Vector-service Semantische kernelconnector .NET SDK
Azure AI Search Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB voor NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB voor 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 N.v.t.
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
Weaviaat Microsoft.SemanticKernel.Connectors.Weaviate REST API

Raadpleeg de documentatie voor elke betreffende service om .NET SDK- en API-ondersteuning te detecteren.