次の方法で共有


独自のデータ モデルを定義せずにベクター ストアの抽象化を使用する (プレビュー)

警告

セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。

概要

セマンティック カーネル ベクター ストア コネクタは、データベースとの対話にモデルの最初のアプローチを使用します。 これにより、コネクタを簡単かつ簡単に使用できます。データ モデルはデータベース レコードのスキーマを反映し、必要なスキーマ情報を追加するため、データ モデルのプロパティに属性を追加するだけで済みます。

ただし、独自のデータ モデルを定義することが望ましくない場合や可能な場合もあります。 たとえば、コンパイル時にデータベース スキーマがどのように見えるかがわからないとします。スキーマは構成によってのみ提供されます。 この場合、スキーマを反映するデータ モデルを作成することはできません。

このシナリオに対応するために、汎用データ モデルを提供します。

汎用データ モデル

ジェネリック データ モデルは、 VectorStoreGenericDataModel という名前のクラスであり、 Microsoft.Extensions.VectorData.Abstractions パッケージで使用できます。

任意の種類のデータベースをサポートするために、 VectorStoreGenericDataModel のキーの型はジェネリック パラメーターを使用して指定されます。

その他のすべてのプロパティは、 Data プロパティと Vector プロパティに分割されます。 ベクターまたはキーではないプロパティは、データ プロパティと見なされます。 Data プロパティ セットと Vector プロパティ セットは、オブジェクトの文字列キー付きディクショナリとして格納されます。

汎用データ モデルを使用する場合のスキーマ情報の提供

汎用データ モデルを使用する場合でも、コネクタはデータベース スキーマの外観を把握する必要があります。 スキーマ情報がないと、コネクタはコレクションを作成することも、各データベースが使用するストレージ表現との間でマッピングする方法を把握することもできません。

レコード定義を使用して、スキーマ情報を提供できます。 データ モデルとは異なり、レコード定義は実行時に構成から作成でき、コンパイル時にスキーマ情報が不明な場合のソリューションを提供します。

ヒント

レコード定義を作成する方法については、「 レコード定義を使用してスキーマを定義する」を参照してください

コネクタで汎用データ モデルを使用するには、コレクションの作成時に単にデータ モデルとして指定し、レコード定義を同時に指定します。

// Create the definition to define the schema.
VectorStoreRecordDefinition vectorStoreRecordDefinition = new()
{
    Properties = new List<VectorStoreRecordProperty>
    {
        new VectorStoreRecordKeyProperty("Key", typeof(string)),
        new VectorStoreRecordDataProperty("Term", typeof(string)),
        new VectorStoreRecordDataProperty("Definition", typeof(string)),
        new VectorStoreRecordVectorProperty("DefinitionEmbedding", typeof(ReadOnlyMemory<float>)) { Dimensions = 1536 }
    }
};

// When getting your collection instance from a vector store instance
// specify the generic data model, using the appropriate key type for your database
// and also pass your record definition.
var genericDataModelCollection = vectorStore.GetCollection<string, VectorStoreGenericDataModel<string>>(
    "glossary",
    vectorStoreRecordDefinition);

// Since we have schema information available from the record definition
// it's possible to create a collection with the right vectors, dimensions,
// indexes and distance functions.
await genericDataModelCollection.CreateCollectionIfNotExistsAsync();

// When retrieving a record from the collection, data and vectors can
// now be accessed via the Data and Vector dictionaries respectively.
var record = await genericDataModelCollection.GetAsync("SK");
Console.WriteLine(record.Data["Definition"])

コレクション インスタンスを直接構築する場合、レコード定義はオプションとして渡されます。 たとえば、汎用データ モデルを使用して Azure AI Search コレクション インスタンスを構築する例を次に示します。

new AzureAISearchVectorStoreRecordCollection<VectorStoreGenericDataModel<string>>(
    searchIndexClient,
    "glossary",
    new() { VectorStoreRecordDefinition = vectorStoreRecordDefinition });

間もなく利用できます

詳細については、近日公開予定です。

間もなく利用できます

詳細については、近日公開予定です。