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 |
|
Unterstützte Vektoreigenschaftentypen |
|
Unterstützte Indextypen | N/V |
Unterstützte Entfernungsfunktionen |
|
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 _id
zugeordnet 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.