Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Waarschuwing
De MongoDB Vector Store-functionaliteit bevindt zich in de previewfase, en verbeteringen die ingrijpende wijzigingen vereisen, kunnen nog steeds in beperkte omstandigheden voorkomen voordat ze worden uitgebracht.
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Overzicht
De MongoDB Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in MongoDB. De verbindingslijn heeft de volgende kenmerken.
Functiegebied | Ondersteuning |
---|---|
Verzamelingstoewijzingen aan | MongoDB-verzameling + index |
Ondersteunde sleuteleigenschapstypen | tekenreeks |
Ondersteunde gegevenseigenschapstypen |
|
Ondersteunde vectoreigenschappentypen |
|
Ondersteunde indextypen | N.v.t. |
Ondersteunde afstandsfuncties |
|
Ondersteunde filterclausules |
|
Ondersteunt meerdere vectoren in een record | Ja |
WordtIndexed ondersteund? | Ja |
Wordt Ondersteund doorFullTextIndexed? | Nee |
Wordt StorageName ondersteund? | Nee, gebruik in plaats daarvan BsonElementAttribute. Zie hier voor meer informatie. |
HybridSearch ondersteund? | Ja |
Functiegebied | Ondersteuning |
---|---|
Verzamelingstoewijzingen aan | MongoDB-verzameling + index |
Ondersteunde sleuteleigenschapstypen | tekenreeks |
Ondersteunde gegevenseigenschapstypen |
|
Ondersteunde vectoreigenschappentypen |
|
Ondersteunde indextypen |
|
Ondersteunde afstandsfuncties |
|
Ondersteunde filterclausules |
|
Ondersteunt meerdere vectoren in een record | Ja |
Wordt Filterable ondersteund? | Ja |
WordtFullTextSearchable ondersteund? | Nee |
Binnenkort meer informatie.
Aan de slag
Voeg het NuGet-pakket van de MongoDB Vector Store-connector toe aan uw project.
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
U kunt het vectorarchief toevoegen aan de IServiceCollection
container voor afhankelijkheidsinjectie met behulp van extensiemethoden van Semantic Kernel.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoVectorStore(connectionString, databaseName);
Extensiemethoden waarvoor geen parameters worden gebruikt, worden ook opgegeven. Hiervoor moet een exemplaar MongoDB.Driver.IMongoDatabase
afzonderlijk worden geregistreerd bij de container voor afhankelijkheidsinjectie.
using Microsoft.Extensions.DependencyInjection;
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.AddMongoVectorStore();
U kunt rechtstreeks een MongoDB Vector Store-exemplaar maken.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoVectorStore(database);
Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var collection = new MongoCollection<string, Hotel>(
database,
"skhotels");
Gegevenstoewijzing
De MongoDB Vector Store-connector biedt een standaardtoewijzingsfunctie bij het toewijzen van gegevens uit het gegevensmodel aan opslag.
Deze mapper voert een directe conversie uit van de lijst met eigenschappen in het gegevensmodel naar de velden in MongoDB en gebruikt MongoDB.Bson.Serialization
om te converteren naar het opslagschema. Dit betekent dat het gebruik van het MongoDB.Bson.Serialization.Attributes.BsonElement
bestand wordt ondersteund als een andere opslagnaam voor de naam van de gegevensmodeleigenschap is vereist. De enige uitzondering is de sleutel van de record die is toegewezen aan een databaseveld met de naam _id
, omdat alle MongoDB-records deze naam moeten gebruiken voor id's.
Eigenschapsnaam overschrijven
Voor gegevenseigenschappen en vectoreigenschappen kunt u veldnamen overschrijven die moeten worden gebruikt in de opslag die verschilt van de eigenschapsnamen in het gegevensmodel. Dit wordt niet ondersteund voor sleutels, omdat een sleutel een vaste naam heeft in MongoDB.
De eigenschapsnaam wordt overschreven door het BsonElement
kenmerk in te stellen op de eigenschappen van het gegevensmodel.
Hier volgt een voorbeeld van een gegevensmodel met BsonElement
set.
using Microsoft.Extensions.VectorData;
using MongoDB.Bson.Serialization.Attributes;
public class Hotel
{
[VectorStoreKey]
public ulong HotelId { get; set; }
[BsonElement("hotel_name")]
[VectorStoreData(IsIndexed = true)]
public string HotelName { get; set; }
[BsonElement("hotel_description")]
[VectorStoreData(IsFullTextIndexed = true)]
public string Description { get; set; }
[BsonElement("hotel_description_embedding")]
[VectorStoreVector(4, DistanceFunction = DistanceFunction.CosineSimilarity)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
Aan de slag
Voeg de MongoDB Atlas Vector Store-afhankelijkheden toe aan uw omgeving. Het heeft het pymongo
pakket nodig dat is opgenomen in mongo-extra, u moet het installeren met deze extra's.
pip install semantic-kernel[mongo]
Vervolgens kunt u de vectoropslag maken.
from semantic_kernel.connectors.mongodb import MongoDBAtlasStore
# If the right environment settings are set, namely MONGODB_ATLAS_CONNECTION_STRING and optionally MONGODB_ATLAS_DATABASE_NAME and MONGODB_ATLAS_INDEX_NAME, this is enough to create the Store:
store = MongoDBAtlasStore()
U kunt ook uw eigen MongoDB-client doorgeven als u meer controle wilt hebben over het bouwen van de client.
from pymongo import AsyncMongoClient
from semantic_kernel.connectors.mongodb import MongoDBAtlasStore
client = AsyncMongoClient(...)
store = MongoDBAtlasStore(mongo_client=client)
Wanneer een client wordt doorgegeven, sluit Semantic Kernel de verbinding niet voor u, dus moet u ervoor zorgen dat u deze sluit, bijvoorbeeld door een async with
-instructie te gebruiken.
U kunt ook rechtstreeks een verzameling maken zonder de store.
from semantic_kernel.connectors.mongodb import MongoDBAtlasCollection
# `hotel` is a class created with the @vectorstoremodel decorator
collection = MongoDBAtlasCollection(
record_type=hotel,
collection_name="my_collection",
)
Serialisatie
Aangezien de MongoDB Atlas-connector een eenvoudige dict nodig heeft met de velden die overeenkomen met de index als invoer, is de serialisatie vrij eenvoudig, maar wordt alleen een vooraf bepaalde sleutel _id
gebruikt, dus vervangen we de sleutel van het gegevensmodel door dat als dit nog niet _id
is gebeurd.
Zie de serialisatiedocumentatie voor meer informatie over dit concept.
Binnenkort beschikbaar
Binnenkort meer informatie.