Freigeben über


Verwenden des MongoDB-Vektorspeicher-Connectors (Vorschau)

Warnung

Die Funktionalität des semantischen Kernelvektorspeichers befindet sich in der Vorschau, und Verbesserungen, die fehlerhafte Änderungen erfordern, können unter begrenzten Umständen noch vor der Veröffentlichung auftreten.

Übersicht

Der MongoDB Vector Store-Connector kann verwendet werden, um auf Daten in MongoDB zuzugreifen und sie zu verwalten. Der Verbinder weist die folgenden Merkmale auf.

Featurebereich Unterstützung
Auflistungszuordnungen MongoDB-Auflistung + Index
Unterstützte Schlüsseleigenschaftentypen Zeichenfolge
Unterstützte Datentypen für Datentypen
  • Zeichenfolge
  • int
  • long
  • double
  • float
  • Decimal
  • bool
  • DateTime
  • und Aufzählungen dieser Typen
Unterstützte Vektoreigenschaftentypen
  • ReadOnlyMemory<float>
  • ReadOnlyMemory<Double>
Unterstützte Indextypen N/V
Unterstützte Entfernungsfunktionen
  • KosinusSimilarität
  • DotProductSimilarity
  • EuklideanDistance
Unterstützt mehrere Vektoren in einem Datensatz Ja
IstFilterbar unterstützt? Ja
WirdFullTextSearchable unterstützt? No
StoragePropertyName wird unterstützt? Nein, verwenden Sie stattdessen BsonElementAttribute. Weitere Informationen finden Sie hier.

Erste Schritte

Fügen Sie ihrem Projekt das NuGet-Paket des MongoDB-Vektorspeicher-Connectors hinzu.

dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease

Sie können den Vektorspeicher dem Container zum Einfügen von Abhängigkeiten mithilfe von Erweiterungsmethoden hinzufügen, die IServiceCollection vom semantischen Kernel bereitgestellt werden.

using Microsoft.SemanticKernel;

// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoDBVectorStore(connectionString, databaseName);

Erweiterungsmethoden, die keine Parameter verwenden, werden ebenfalls bereitgestellt. Dazu muss eine Instanz MongoDB.Driver.IMongoDatabase separat beim Abhängigkeitseinfügungscontainer registriert werden.

using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using MongoDB.Driver;

// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<IMongoDatabase>(
    sp =>
    {
        var mongoClient = new MongoClient(connectionString);
        return mongoClient.GetDatabase(databaseName);
    });
builder.Services.AddMongoDBVectorStore();

Sie können eine MongoDB Vector Store-Instanz direkt erstellen.

using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;

var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoDBVectorStore(database);

Es ist möglich, einen direkten Verweis auf eine benannte Auflistung zu erstellen.

using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;

var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var collection = new MongoDBVectorStoreRecordCollection<Hotel>(
    database,
    "skhotels");

Datenzuordnung

Der MongoDB-Vektorspeicher-Connector stellt beim Zuordnen von Daten aus dem Datenmodell zum Speicher eine Standardzuordnung bereit.

Dieser Mapper führt eine direkte Konvertierung der Liste der Eigenschaften im Datenmodell in die Felder in MongoDB durch und verwendet MongoDB.Bson.Serialization zum Konvertieren in das Speicherschema. Dies bedeutet, dass die Verwendung der MongoDB.Bson.Serialization.Attributes.BsonElement Datenmodelleigenschaft unterstützt wird, wenn ein anderer Speichername für den Namen der Datenmodelleigenschaft erforderlich ist. Die einzige Ausnahme ist der Schlüssel des Datensatzes, der einem Datenbankfeld mit dem Namen _idzugeordnet ist, da alle MongoDB-Einträge diesen Namen für IDs verwenden müssen.

Außerkraftsetzung des Eigenschaftsnamens

Für Dateneigenschaften und Vektoreigenschaften können Sie Feldnamen außer Kraft setzen, die im Speicher verwendet werden sollen, die sich von den Eigenschaftennamen im Datenmodell unterscheiden. Dies wird für Schlüssel nicht unterstützt, da ein Schlüssel einen festen Namen in MongoDB hat.

Die Außerkraftsetzung des Eigenschaftennamens erfolgt durch Festlegen des BsonElement Attributs für die Datenmodelleigenschaften.

Hier ist ein Beispiel für ein Datenmodell mit BsonElement Set.

using Microsoft.Extensions.VectorData;

public class Hotel
{
    [VectorStoreRecordKey]
    public ulong HotelId { get; set; }

    [BsonElement("hotel_name")]
    [VectorStoreRecordData(IsFilterable = true)]
    public string HotelName { get; set; }

    [BsonElement("hotel_description")]
    [VectorStoreRecordData(IsFullTextSearchable = true)]
    public string Description { get; set; }

    [BsonElement("hotel_description_embedding")]
    [VectorStoreRecordVector(4, DistanceFunction.CosineSimilarity)]
    public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}

In Kürze verfügbar

Weitere Informationen werden in Kürze verfügbar sein.

In Kürze verfügbar

Weitere Informationen werden in Kürze verfügbar sein.