Korzystanie z łącznika usługi 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 może służyć do uzyskiwania dostępu do danych w bazie danych MongoDB i zarządzania nimi. Łącznik ma następujące cechy.
Obszar funkcji | Pomoc techniczna |
---|---|
Mapowania kolekcji na | Kolekcja i indeks bazy danych MongoDB |
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 | Nie dotyczy |
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 pakiet NuGet łącznika magazynu wektorowego bazy danych MongoDB do projektu.
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
Magazyn wektorów można dodać do kontenera IServiceCollection
wstrzykiwania zależności przy użyciu metod rozszerzeń udostępnianych przez jądro semantyczne.
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoDBVectorStore(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 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();
Wystąpienie magazynu wektorów bazy danych MongoDB można utworzyć bezpośrednio.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoDBVectorStore(database);
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
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");
Mapowanie danych
Łącznik magazynu wektorów bazy danych MongoDB 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 bazie 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 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.CosineSimilarity)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
Wkrótce
Więcej informacji wkrótce.
Wkrótce
Więcej informacji wkrótce.