Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Peringatan
Fungsionalitas Penyimpanan Vektor MongoDB sedang dalam tahap pratinjau, dan peningkatan yang memerlukan perubahan besar masih mungkin terjadi dalam keadaan tertentu sebelum peluncuran resmi.
Peringatan
Fungsionalitas Penyimpanan Vektor Kernel Semantik saat ini dalam tahap pratinjau, dan peningkatan yang mungkin memerlukan perubahan mendasar masih dapat terjadi dalam situasi terbatas sebelum dirilis.
Peringatan
Fungsionalitas Penyimpanan Vektor Kernel Semantik saat ini dalam tahap pratinjau, dan peningkatan yang mungkin memerlukan perubahan mendasar masih dapat terjadi dalam situasi terbatas sebelum dirilis.
Gambaran Umum
Konektor MongoDB Vector Store dapat digunakan untuk mengakses dan mengelola data di MongoDB. Konektor memiliki karakteristik berikut.
Area Fitur | Dukungan |
---|---|
Pemetaan koleksi ke | Koleksi + Indeks MongoDB |
Jenis properti kunci yang didukung | benang |
Jenis properti data yang didukung |
|
Jenis properti vektor yang didukung |
|
Jenis indeks yang didukung | Tidak Berlaku |
Fungsi jarak yang didukung |
|
Klausa filter yang didukung |
|
Mendukung beberapa vektor dalam data catatan | Ya |
ApakahIndexed didukung? | Ya |
ApakahFullTextIndexed didukung? | Tidak |
Apakah StorageName didukung? | Tidak, gunakan BsonElementAttribute sebagai gantinya. Lihat di sini untuk informasi selengkapnya. |
HybridSearch didukung? | Ya |
Area Fitur | Dukungan |
---|---|
Pemetaan koleksi ke | Koleksi + Indeks MongoDB |
Jenis properti kunci yang didukung | benang |
Jenis properti data yang didukung |
|
Jenis properti vektor yang didukung |
|
Jenis indeks yang didukung |
|
Fungsi jarak yang didukung |
|
Klausa filter yang didukung |
|
Mendukung beberapa vektor dalam data catatan | Ya |
Apakah "IsFilterable" didukung? | Ya |
ApakahFullTextSearchable didukung? | Tidak |
Informasi lebih lanjut akan segera tersedia.
Memulai
Tambahkan paket NuGet konektor MongoDB Vector Store ke proyek Anda.
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
Anda dapat menambahkan penyimpanan vektor ke IServiceCollection
kontainer injeksi dependensi menggunakan metode ekstensi yang disediakan oleh Semantic Kernel.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoVectorStore(connectionString, databaseName);
Metode ekstensi yang tidak mengambil parameter juga disediakan. Ini memerlukan sebuah instance MongoDB.Driver.IMongoDatabase
untuk didaftarkan secara terpisah dalam wadah injeksi ketergantungan.
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();
Anda dapat membuat instans MongoDB Vector Store secara langsung.
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoVectorStore(database);
Anda dapat membuat referensi langsung ke koleksi yang diberi nama.
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");
Pemetaan data
Konektor MongoDB Vector Store menyediakan pemetaan default saat memetakan data dari model data ke penyimpanan.
Pemeta ini melakukan konversi langsung dari daftar properti pada model data ke bidang di MongoDB dan menggunakan MongoDB.Bson.Serialization
untuk mengonversi ke skema penyimpanan. Ini berarti bahwa penggunaan MongoDB.Bson.Serialization.Attributes.BsonElement
didukung jika nama penyimpanan yang berbeda dengan nama properti model data diperlukan. Satu-satunya pengecualian adalah kunci rekaman yang dipetakan ke bidang database bernama _id
, karena semua rekaman MongoDB harus menggunakan nama ini untuk id.
Penggantian nama properti
Untuk properti data dan properti vektor, Anda dapat memberikan nama bidang penggantian untuk digunakan dalam penyimpanan yang berbeda dengan nama properti pada model data. Ini tidak didukung untuk kunci, karena kunci memiliki nama tetap di MongoDB.
Penetapan ulang nama properti dilakukan dengan menetapkan atribut BsonElement
pada properti model data.
Berikut adalah contoh model data dengan 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; }
}
Memulai
Tambahkan dependensi MongoDB Atlas Vector Store ke lingkungan Anda. Ini membutuhkan paket pymongo
yang termasuk dalam paket tambahan MongoDB; Anda perlu menginstalnya dengan tambahan ini:
pip install semantic-kernel[mongo]
Anda kemudian dapat membuat penyimpanan vektor.
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()
Atau, Anda juga dapat meneruskan klien MongoDB milik Anda sendiri jika Anda ingin memiliki kontrol lebih besar mengenai konstruksi klien:
from pymongo import AsyncMongoClient
from semantic_kernel.connectors.mongodb import MongoDBAtlasStore
client = AsyncMongoClient(...)
store = MongoDBAtlasStore(mongo_client=client)
Saat sebuah klien diteruskan, Semantic Kernel tidak akan menutup koneksi untuk Anda, jadi Anda perlu memastikan untuk menutupnya, misalnya dengan sebuah statement async with
.
Anda juga dapat membuat koleksi secara langsung, tanpa toko.
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",
)
Serialisasi
Karena konektor MongoDB Atlas memerlukan dict sederhana dengan elemen-elemen yang sesuai dengan indeks sebagai input, proses serialisasi menjadi cukup mudah. Ini hanya menggunakan kunci yang sudah ditentukan _id
, jadi kami mengganti kunci model data dengan itu jika belum _id
.
Untuk detail selengkapnya tentang konsep ini, lihat dokumentasi serialisasi.
Segera hadir
Informasi lebih lanjut akan segera tersedia.