Použití konektoru MongoDB Vector Store (Preview)
Upozorňující
Funkce sémantického úložiště vektorů jádra je ve verzi Preview a vylepšení, která vyžadují zásadní změny, se můžou vyskytovat za omezených okolností před vydáním.
Přehled
Konektor MongoDB Vector Store lze použít pro přístup k datům v MongoDB a jejich správě. Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | MongoDB Collection + Index |
Podporované typy vlastností klíče | string |
Podporované typy datových vlastností |
|
Podporované typy vektorových vlastností |
|
Podporované typy indexů | – |
Podporované funkce vzdálenosti |
|
Podporované klauzule filtru |
|
Podporuje více vektorů v záznamu. | Ano |
Je podporováno Filtrování? | Ano |
Podporuje se IsFullTextSearchable? | No |
StoragePropertyName se podporuje? | Ne, místo toho použijte BsonElementAttribute. Další informace najdete tady. |
Začínáme
Přidejte do projektu balíček NuGet konektoru MongoDB Vector Store.
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
Do kontejneru IServiceCollection
injektáže závislostí můžete přidat vektorové úložiště pomocí rozšiřujících metod poskytovaných sémantickým jádrem.
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoDBVectorStore(connectionString, databaseName);
K dispozici jsou také metody rozšíření, které nepoužívají žádné parametry. Vyžadují samostatnou registraci instance MongoDB.Driver.IMongoDatabase
kontejneru injektáže závislostí.
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();
Instanci MongoDB Vector Store můžete vytvořit přímo.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoDBVectorStore(database);
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
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");
Mapování dat
Konektor MongoDB Vector Store poskytuje výchozí mapovač při mapování dat z datového modelu do úložiště.
Tento mapovač provede přímý převod seznamu vlastností datového modelu na pole v MongoDB a používá MongoDB.Bson.Serialization
k převodu na schéma úložiště. To znamená, že použití tohoto objektu MongoDB.Bson.Serialization.Attributes.BsonElement
se podporuje, pokud se vyžaduje jiný název úložiště s názvem vlastnosti datového modelu. Jedinou výjimkou je klíč záznamu, který je namapován na pole databáze s názvem _id
, protože všechny záznamy MongoDB musí používat tento název pro ID.
Přepsání názvu vlastnosti
U vlastností dat a vektorových vlastností můžete zadat názvy polí přepsání, které se mají použít v úložišti, které se liší od názvů vlastností datového modelu. U klíčů to není podporované, protože klíč má pevný název v MongoDB.
Přepsání názvu vlastnosti se provádí nastavením atributu BsonElement
u vlastností datového modelu.
Tady je příklad datového modelu se BsonElement
sadou.
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; }
}
Již brzy
Další informace budou brzy k dispozici.
Již brzy
Další informace budou brzy k dispozici.