Korzystanie z łącznika usługi Azure CosmosDB MongoDB Vector Store (wersja zapoznawcza)
Ostrzeżenie
Funkcja semantycznego magazynu wektorów jądra jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Omówienie
Łącznik magazynu wektorów bazy danych MongoDB usługi Azure CosmosDB może służyć do uzyskiwania dostępu do danych w usłudze Azure CosmosDB MongoDB i zarządzania nimi. Łącznik ma następujące cechy.
Obszar funkcji | Pomoc techniczna |
---|---|
Mapowania kolekcji na | Kolekcja i indeks bazy danych MongoDB w usłudze Azure Cosmos DB |
Obsługiwane typy właściwości kluczy | string |
Obsługiwane typy właściwości danych |
|
Obsługiwane typy właściwości wektorów |
|
Obsługiwane typy indeksów |
|
Obsługiwane funkcje odległości |
|
Obsługuje wiele wektorów w rekordzie | Tak |
Czy filtrowanie jest obsługiwane? | Tak |
Czy jest obsługiwany element IsFullTextSearchable? | Nie. |
Obsługiwana nazwa_właściwości_magazynu? | Nie, zamiast tego użyj elementu BsonElementAttribute. Aby uzyskać więcej informacji, zobacz tutaj. |
Wprowadzenie
Dodaj do projektu pakiet NuGet łącznika Azure CosmosDB MongoDB Vector Store.
dotnet add package Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB --prerelease
Magazyn wektorów można dodać do kontenera iniekcji zależności dostępnego w KernelBuilder
kontenerze iniekcji zależności lub IServiceCollection
przy użyciu metod rozszerzeń udostępnianych przez jądro semantyczne.
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);
Dostępne są również metody rozszerzeń, które nie przyjmują parametrów. Wymagają one osobnego zarejestrowania MongoDB.Driver.IMongoDatabase
wystąpienia w kontenerze wstrzykiwania zależności.
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();
Wystąpienie usługi Azure CosmosDB MongoDB Vector Store można skonstruować bezpośrednio.
using Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new AzureCosmosDBMongoDBVectorStore(database);
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
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");
Mapowanie danych
Łącznik magazynu wektorów bazy danych MongoDB usługi Azure CosmosDB udostępnia domyślny maper podczas mapowania danych z modelu danych na magazyn.
Ten maper wykonuje bezpośrednią konwersję listy właściwości modelu danych na pola w usłudze Azure CosmosDB MongoDB i używa MongoDB.Bson.Serialization
ich do konwersji na schemat magazynu. Oznacza to, że użycie elementu MongoDB.Bson.Serialization.Attributes.BsonElement
jest obsługiwane, jeśli wymagana jest inna nazwa magazynu dla nazwy właściwości modelu danych. Jedynym wyjątkiem jest klucz rekordu mapowanego na pole bazy danych o nazwie _id
, ponieważ wszystkie rekordy bazy danych MongoDB usługi CosmosDB muszą używać tej nazwy dla identyfikatorów.
Zastępowanie nazwy właściwości
W przypadku właściwości danych i właściwości wektorów można podać nazwy pól przesłonięć do użycia w magazynie, który różni się od nazw właściwości w modelu danych. Nie jest to obsługiwane w przypadku kluczy, ponieważ klucz ma stałą nazwę w bazie danych MongoDB.
Zastąpienie nazwy właściwości odbywa się przez ustawienie atrybutu BsonElement
we właściwościach modelu danych.
Oto przykład modelu danych z zestawem BsonElement
.
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; }
}
Wkrótce
Więcej informacji wkrótce.
Wkrótce
Więcej informacji wkrótce.