警告
セマンティック カーネル ベクター ストア機能はプレビュー段階であり、破壊的変更を必要とする機能強化は、リリース前の限られた状況で引き続き発生する可能性があります。
ベクター ストアを使用したエンド ツー エンドの RAG サンプル
この例は、セマンティック カーネルを使用して RAG を示すスタンドアロン コンソール アプリケーションです。 このサンプルには、次の特性があります。
- チャットと埋め込みサービスの選択が可能
- ベクター データベースの選択を許可します
- 1 つ以上の PDF ファイルの内容を読み取り、セクションごとにチャンクを作成します
- 各テキスト チャンクの埋め込みを生成し、選択したベクター データベースにアップサートします
- ベクター ストアをテキスト検索プラグインとしてカーネルに登録します。
- プラグインを呼び出して、より多くのコンテキストで AI モデルに提供されるプロンプトを拡張します
- エンド・ツー・エンド方式のRAGデモ
単純なデータ インジェストとベクター検索
ベクター ストアにデータ インジェストを実行し、ベクター検索を実行する方法の 2 つの非常に単純な例については、Qdrant と InMemory ベクター ストアを使用して使用方法を示すこれら 2 つの例を確認してください。
複数のストアを含む一般的なコード
ベクター ストアは、キーの種類や各サポートするフィールドの型など、特定の側面で異なる場合があります。 それでも、これらの違いに依存しないコードを記述できます。
これを示すデータ インジェスト サンプルについては、次を参照してください。
同じ概念を示すベクター検索サンプルについては、次のサンプルを参照してください。 これらのサンプルはそれぞれ同じ共通コードを参照しており、共通コードで使用するために作成するベクター ストアの種類が異なります。
- 一般的なコードを使用した Azure AI 検索 ベクター検索
- 共通コードを使用した InMemory ベクター検索
- 一般的なコードを使用した Postgres ベクター検索
- 一般的なコードを使用した Qdrant ベクター検索
- 一般的なコードを使用した Redis ベクター検索
同じレコード内の複数のベクターをサポートする
Vector Store の抽象化では、これをサポートするベクター データベースに対して、同じレコード内の複数のベクターがサポートされます。 次の例では、複数のベクターを含むレコードをいくつか作成し、ベクター検索を実行するときに目的のターゲット ベクターを選択する方法を示します。
ページングを使用したベクター検索
ベクター ストアの抽象化を使用してベクター検索を実行する場合は、Top パラメーターと Skip パラメーターを使用してページングをサポートできます。たとえば、要求ごとに少数の結果セットで応答するサービスを構築する必要があります。
警告
すべてのベクター データベースでベクター検索に対して Skip 機能がネイティブにサポートされているわけではないため、一部のコネクタでは Skip + Top レコードをフェッチし、この動作をシミュレートするためにクライアント側でスキップする必要がある場合があります。
汎用データ モデルの使用とカスタム データ モデルの使用
代わりに、データ モデルを定義したり、レコード定義を使用してスキーマを定義したりすることなく、Vector Store の抽象化を使用できます。 この例では、カスタム モデルを使用してベクター ストアを作成し、ジェネリック データ モデルを使用して読み取る方法、またはその逆を示します。
ヒント
汎用データ モデルの使用の詳細については、独自のデータ モデルを 定義せずに Vector Store の抽象化を使用する方法を参照してください。
Langchain を使用して作成および取り込まれたコレクションの使用
ベクター ストアの抽象化を使用して、別のシステム (Langchain など) を使用して作成および取り込まれたコレクションにアクセスできます。 相互運用機能を正しく動作させるには、複数の方法に従うことができます。 例えば。
- Langchain 実装が使用したストレージ スキーマに一致するデータ モデルを作成する。
- フィールドの特殊なストレージ プロパティ名を持つレコード定義を使用する。
次のサンプルでは、これらのアプローチを使用して、Langchain と互換性のあるベクター ストアの実装を構築する方法を示します。
各ベクター ストアには、Langchain 互換ベクター ストアを構築する方法を示すファクトリ クラスがあります。 例を参照してください。
Azure AI 検索 Vector Store を使用したエンド ツー エンドの RAG サンプル
この例は 2 つのスクリプトのセットです。1 つ目は Azure AI 検索 Vector Store の設定の基本を示し、2 つ目はそこからプラグインを作成し、それを使用して RAG を実行する方法を示しています。
- データ モデルの説明と、このサンプルに対して Azure AI 検索 を設定する方法
- Azure AI 検索 でのレコードの作成、ベクターの追加、レコードのアップサート
- 同じ接続とデータ モデルを使用してカスタム関数を作成し、高度な RAG の自動関数呼び出しで使用できます。
単純なデータ インジェストとベクター検索
コレクションの作成からレコードの追加、最後に検索を行うまでの基本を示すサンプルもあります。これは、さまざまなベクター ストアで開始できます。
単純なデータ インジェストとベクター検索
ベクター ストアにデータ インジェストを実行し、ベクター検索を実行する方法の簡単な例については、Azure AI 検索、PostgreSQL での JDBC、Redis、In Memory ベクター ストアを使用するこれらの例を確認してください。