MongoDB ベクター ストア コネクタの使用 (プレビュー)
警告
セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。
概要
MongoDB ベクター ストア コネクタを使用して、MongoDB のデータにアクセスして管理できます。 コネクタには次の特性があります。
機能領域 | サポート |
---|---|
コレクションのマップ | MongoDB コレクション + インデックス |
サポートされているキー プロパティの種類 | string |
サポートされているデータ プロパティ型 |
|
サポートされているベクター プロパティ型 |
|
サポートされているインデックスの種類 | 該当なし |
サポートされている距離関数 |
|
レコード内の複数のベクターをサポートします | はい |
IsFilterable がサポートされていますか? | はい |
IsFullTextSearchable がサポートされていますか? | いいえ |
StoragePropertyName がサポートされていますか? | いいえ。代わりに BsonElementAttribute を使用してください。 詳細については、こちらを参照してください。 |
作業の開始
MongoDB ベクター ストア コネクタ NuGet パッケージをプロジェクトに追加します。
dotnet add package Microsoft.SemanticKernel.Connectors.MongoDB --prerelease
セマンティック カーネルによって提供される拡張メソッドを使用して、 IServiceCollection
依存関係挿入コンテナーにベクター ストアを追加できます。
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMongoDBVectorStore(connectionString, databaseName);
パラメーターを受け取たない拡張メソッドも提供されます。 これらには、 MongoDB.Driver.IMongoDatabase
のインスタンスを依存関係挿入コンテナーに個別に登録する必要があります。
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();
MongoDB ベクター ストア インスタンスを直接構築できます。
using Microsoft.SemanticKernel.Connectors.MongoDB;
using MongoDB.Driver;
var mongoClient = new MongoClient(connectionString);
var database = mongoClient.GetDatabase(databaseName);
var vectorStore = new MongoDBVectorStore(database);
名前付きコレクションへの直接参照を構築できます。
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");
データ マッピング
MongoDB ベクター ストア コネクタは、データ モデルからストレージにデータをマッピングするときに、既定のマッパーを提供します。
このマッパーは、データ モデルのプロパティの一覧を MongoDB のフィールドに直接変換し、 MongoDB.Bson.Serialization
を使用してストレージ スキーマに変換します。 つまり、データ モデルのプロパティ名に別のストレージ名が必要な場合は、 MongoDB.Bson.Serialization.Attributes.BsonElement
の使用がサポートされます。 唯一の例外は、すべての MongoDB レコードで ID にこの名前を使用する必要があるため、 _id
という名前のデータベース フィールドにマップされるレコードのキーです。
プロパティ名のオーバーライド
データ プロパティとベクター プロパティの場合、データ モデルのプロパティ名とは異なるストレージで使用するオーバーライド フィールド名を指定できます。 MongoDB ではキーの名前が固定されているため、これはキーではサポートされません。
プロパティ名のオーバーライドは、データ モデルのプロパティに BsonElement
属性を設定することによって行われます。
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; }
}
間もなく利用できます
詳細については、近日公開予定です。
間もなく利用できます
詳細については、近日公開予定です。