Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avviso
La funzionalità di archiviazione vettoriale di MongoDB è disponibile in anteprima e i miglioramenti che richiedono cambiamenti significativi possono verificarsi in circostanze limitate prima del rilascio.
Avviso
La funzionalità dello Store vettoriale del kernel semantico è in anteprima e i miglioramenti che richiedono cambiamenti significativi potrebbero ancora verificarsi in circostanze limitate prima del rilascio.
Avviso
La funzionalità dello Store vettoriale del kernel semantico è in anteprima e i miglioramenti che richiedono cambiamenti significativi potrebbero ancora verificarsi in circostanze limitate prima del rilascio.
Panoramica
Il connettore MongoDB Vector Store può essere usato per accedere e gestire i dati in MongoDB. Il connettore presenta le caratteristiche seguenti.
Area delle funzionalità | Supporto tecnico |
---|---|
Mappatura delle raccolte su | Raccolta e indice mongoDB |
Tipi di proprietà chiave supportati | corda |
Tipi di proprietà dati supportati |
|
Tipi di proprietà vettoriale supportati |
|
Tipi di indice supportati | N/D |
Funzioni di distanza supportate |
|
Clausole di filtro supportate |
|
Supporta più vettori in un record | Sì |
Il supporto di IsIndexed è presente? | Sì |
È supportato IsFullTextIndexed? | NO |
"StorageName è supportato?" | No, usare invece BsonElementAttribute. Per altre informazioni, vedi qui. |
"HybridSearch è supportato?" | Sì |
Area delle funzionalità | Supporto tecnico |
---|---|
Mappatura delle raccolte su | Raccolta e indice mongoDB |
Tipi di proprietà chiave supportati | corda |
Tipi di proprietà dati supportati |
|
Tipi di proprietà vettoriale supportati |
|
Tipi di indice supportati |
|
Funzioni di distanza supportate |
|
Clausole di filtro supportate |
|
Supporta più vettori in un record | Sì |
IsFilterable è supportato? | Sì |
È supportato IsFullTextSearchable? | NO |
Altre informazioni saranno presto disponibili.
Iniziare
Aggiungere il pacchetto NuGet del connettore dell'archivio vettoriale MongoDB al progetto.
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
È possibile aggiungere l'archivio vettoriale al IServiceCollection
contenitore di inserimento delle dipendenze usando i metodi di estensione forniti dal kernel semantico.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoVectorStore(connectionString, databaseName);
Vengono forniti anche metodi di estensione che non accettano parametri. Per registrare un'istanza di MongoDB.Driver.IMongoDatabase
separatamente nel contenitore di inserimento delle dipendenze, è necessario farlo singolarmente.
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();
È possibile costruire direttamente un'istanza del Vector Store MongoDB.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoVectorStore(database);
È possibile costruire un riferimento diretto a una raccolta denominata.
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");
Mapping dei dati
Il connettore per l'archivio vettoriale MongoDB fornisce un mapper predefinito quando si mappano i dati dal modello all'archiviazione.
Questo mapper esegue una conversione diretta dell'elenco di proprietà nel modello di dati nei campi in MongoDB e usa MongoDB.Bson.Serialization
per eseguire la conversione nello schema di archiviazione. Ciò significa che l'utilizzo di MongoDB.Bson.Serialization.Attributes.BsonElement
è supportato se è necessario un nome di archiviazione diverso dal nome della proprietà del modello di dati. L'unica eccezione è la chiave del record mappato a un campo di database denominato _id
, poiché tutti i record MongoDB devono usare questo nome per gli ID.
Sostituzione del nome della proprietà
Per le proprietà dei dati e le proprietà vettoriali, è possibile fornire nomi di campo di override da usare nell'archiviazione diversi dai nomi delle proprietà nel modello di dati. Questa opzione non è supportata per le chiavi, perché una chiave ha un nome fisso in MongoDB.
La sovrascrittura del nome della proprietà viene eseguita impostando l'attributo BsonElement
sulle proprietà del modello di dati.
Di seguito è riportato un esempio di modello di dati con 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; }
}
Iniziare
Aggiungi le dipendenze di MongoDB Atlas Vector Store al tuo ambiente. È necessario il pacchetto pymongo
incluso in mongo extra: , è necessario installare con questi componenti aggiuntivi:
pip install semantic-kernel[mongo]
È quindi possibile creare l'archivio vettoriale.
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()
In alternativa, è anche possibile passare un client MongoDB personalizzato se si vuole avere un maggiore controllo sulla costruzione del client.
from pymongo import AsyncMongoClient
from semantic_kernel.connectors.mongodb import MongoDBAtlasStore
client = AsyncMongoClient(...)
store = MongoDBAtlasStore(mongo_client=client)
Quando un client viene passato, il Kernel Semantico non chiuderà la connessione per te, quindi è necessario assicurarsi di chiuderla, ad esempio con un'istruzione async with
.
È anche possibile creare una raccolta direttamente, senza il negozio.
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",
)
Serializzazione
Poiché il connettore MongoDB Atlas richiede un semplice dict con i campi corrispondenti all'indice come input, la serializzazione è piuttosto semplice, usa solo una chiave predeterminata _id
, quindi sostituiamo la chiave del modello di dati con quella se non è già _id
.
Per altri dettagli su questo concetto, vedere la documentazione sulla serializzazione.
Presto disponibile
Altre informazioni saranno presto disponibili.