Použití konektoru Azure CosmosDB 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 Azure CosmosDB MongoDB Vector Store je možné použít k přístupu k datům v MongoDB a správě dat. Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | Kolekce MongoDB a index služby Azure Cosmos DB |
Podporované typy vlastností klíče | string |
Podporované typy datových vlastností |
|
Podporované typy vektorových vlastností |
|
Podporované typy indexů |
|
Podporované funkce vzdálenosti |
|
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
Do projektu přidejte balíček NuGet konektoru MongoDB MongoDB Vector Store.
dotnet add package Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB --prerelease
Vektorové úložiště můžete přidat do kontejneru injektáže závislostí dostupného IServiceCollection
v KernelBuilder
kontejneru injektáže závislostí nebo do kontejneru injektáže závislostí pomocí rozšiřujících metod poskytovaných sémantickým jádrem.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddAzureCosmosDBMongoDBVectorStore(connectionString, databaseName);
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAzureCosmosDBMongoDBVectorStore(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 Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.Services.AddSingleton<IMongoDatabase>(
sp =>
{
var mongoClient = new MongoClient(connectionString);
return mongoClient.GetDatabase(databaseName);
});
kernelBuilder.AddAzureCosmosDBMongoDBVectorStore();
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.AddAzureCosmosDBMongoDBVectorStore();
Instanci Azure CosmosDB MongoDB Vector Store můžete vytvořit přímo.
using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new AzureCosmosDBMongoDBVectorStore(database);
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var collection = new AzureCosmosDBMongoDBVectorStoreRecordCollection<Hotel>(
database,
"skhotels");
Mapování dat
Konektor Azure CosmosDB 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 služby Azure CosmosDB 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 cosmos DB musí pro ID používat tento název.
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.CosineDistance, IndexKind.Hnsw)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
Již brzy
Další informace budou brzy k dispozici.
Již brzy
Další informace budou brzy k dispozici.