以下のタイプのベクターストアを使用して、接地文書のインデックスを作成することができます:
- メモリー内
- Elasticsearch
- watsonx.data Milvus
インメモリ・ベクター・ストアを選択すると、インデックスが自動的に作成されるので、ベクター・ストアをセットアップする必要はありません。
ベクターストアを選択する際に考慮すべき要素については、ベクター化されたドキュメントを基礎foundation modelのプロンプトに追加するを参照してください。
サードパーティのベクターストアを使用する場合は、ベクターインデックスを作成する前にデータストアへの接続をセットアップする必要があります。 詳細については、使用するベクターストアの適切な手順を参照してください:
手順
グラウンディング・ドキュメントのベクター・インデックスを作成するには、以下のステップを踏んでください。 ステップの順序は、使用するベクターストアによって若干異なる場合があります。
プロジェクトの概要から、資産タブをクリックし、新しいアセット > ベクター化されたドキュメントによる地上波AIを選択します。
または、ページの先頭にある 文書グラウンディング アイコン をクリックし、 ベクトルインデックスを選択または作成する をクリックして、 Prompt Lab からチャットモードで開始することもできます。
使用するベクターストアを選択します。
ベクトルインデックスアセットに名前をつける。
以下のいずれかの方法で接地文書を追加する:
- プロジェクトに関連付けられたデータ資産からファイルを追加する
- ブラウズしてファイルシステムからファイルをアップロードする
以下のオプションは、サードパーティのベクターストアでのみ利用可能です:
接続されたベクターストアから既存のコンテンツを追加する
接続されているデータソースを選択し、該当する場合はデータベースを選択し、Nextをクリックします。 使用するインデックスまたはコレクションを選択します。
連結ベクトル・インデックスに新しいコンテンツを追加する
接続されたベクターストアに新しいコンテンツを追加するには、接続されたデータソースを選択し、該当する場合はデータベースを選択し、Nextをクリックします。 新しいインデックスまたは新しいコレクションをクリックして名前を指定し、ファイルをアップロードするかデータ資産に接続してドキュメントを追加します。
対応するファイル形式はベクターストアによって異なります。 詳しくは、サポートされている接地文書ファイルの種類を参照してください。
オプション: 該当する場合、ドキュメントのベクトル化に使用する埋め込みモデルまたはベクトル化設定を選択します。
詳しくは、埋め込みモデルとベクトル化の設定を参照してください。
接続データストアのみ:既存のインデックスまたはコレクションのフィールドを、watsonx.aiのベクトルインデックスアセットで定義される新しいフィールドにマッピングします。
watsonx.ai は、さまざまなサポート ベクター ストアからデータを抽出し、元のファイル名やページ番号など、ドキュメントに関する詳細をキャプチャする一貫した方法を必要とするため、これらのフィールド マッピングは重要です。
表 1. ベクターストア・スキーマ・フィールド 新しいベクトル・インデックス・フィールド名 連結ベクトルストアのフィールド ベクタークエリー Elasticsearch インデックスにのみ必要です。 ml
やvector
のように、Elasticsearch インデックスを検索するために使用されるクエリテキストが指定されるフィールド。文書名 ソース・ファイルを識別するフィールド。 metadata.source
のようにファイル名をキャプチャするフィールドや、metadata.title
のようにドキュメントのタイトルをキャプチャするフィールドを選ぶことができます。テキスト body
やtext
のように、ページ内容の大部分を含むフィールド。ページ番号 metadata.page_number
のようにページ番号を特定するフィールド。文書 URL metadata.document_url
のようなドキュメントURL を含むフィールド。「作成」 をクリックします。
ファイル内のテキストはベクトル化され、ベクトルはインデックス化されて新しいベクトルインデックスアセットに格納されます。
接続されているサードパーティーのデータストアに新しいコンテンツを追加すると、次のようなことが起こります:
- ドキュメントをベクトル化し、サードパーティのデータストアにインデックスやコレクションを構築するジョブで実行されるノートブックアセットが生成される。
- watsonx.ai にベクトルインデックスアセットが作成され、送信されたクエリをサードパーティデータストアのインデックスまたはコレクションに渡して検索結果を得ることができます。
ベクトルインデックスアセットが作成されたら、ベクトル化されたドキュメントがどの程度質問に答えられるかをテストし、必要な調整を行います。 ベクトル・インデックスの管理を参照してください。
埋め込みモデルとベクトル化の設定
以下の設定は、ドキュメントが埋め込みモデルに送られる前に、どのように小さなセグメント、つまりチャンクに分割されるかを制御します:
テキストチャンクサイズ: ドキュメントセグメントごとに含める文字数。
モデルが許容する入力トークンの最大数よりも小さいセグメントサイズを定義する。 ドキュメントをより大きなセグメントに分割した場合、一部のドキュメントテキストが省略される可能性があります。これは、トークンの最大サイズの制限を満たした後は、セグメント内の余分な文字は埋め込みモデルによって無視されるからです。
チャンクサイズは文字数で指定する。 1トークンの文字数は埋め込みモデルによって異なるが、1トークンは約2~3文字に相当する。
表 2. 埋め込みモデルのチャンクサイズ モデルの組み込み 最大入力トークン数 おおよそのチャンクサイズ all-MiniLM-L6-v2 256 700 all-MiniLM-l12-v2 256 700 エルザー 512 1400 slate-30m-english-rtrvr 512 1400 slate-125m-english-rtrvr 512 1400 slate-30m-english-rtrvr-v2 512 1400 slate-125m-english-rtrvr-v2 512 1400 granite-embedding-107m-multilingual 512 1400 granite-embedding-278m-multilingual 512 1400 テキストチャンクオーバーラップ: 2つの連続するドキュメントセグメントで繰り返される文字数。
テキストを繰り返すことで、文書セグメント間にバッファができ、完全な文章をキャプチャしやすくなり、テキストが完全に見逃されるのを防ぐことができる。
PDFページを分割する:有効にすると、PDFファイルをページごとに分割し、回答にページ番号のソースを含めます。 表示されているページ番号は、PDFビューアのページ番号です。
注意: このオプションは、PDFファイルを追加した場合にのみ使用できます。
foundation modelのプロンプトでベクトルインデックスを使用する
ベクトルインデックスを使用する準備ができたら、次のいずれかの方法で、このベクトルインデックスアセットとfoundation modelのプロンプトを関連付けます:
- 資産から、ページの先頭にある ベクトルインデックス情報を見る アイコン をクリックして 資産について パネルを開き、次に で開く Prompt Lab をクリックします。
- Prompt Lab をチャットモードにし、ページの先頭にある 文書グラウンディング アイコン をクリックし、次に ベクトルインデックスを選択または作成する をクリックします。
このプロンプト・パターンをアプリケーションで使用する
文書セットを使用した検索支援生成(RAG)パターンを実験した後、生成AIアプリケーションで使用できるように、プロンプトのロジックをノートブックに保存する。
プロンプトをノートブックとして保存するときに、展開可能な gen AI フローオプションを選択します。 生成されたノートブックは、Python のプロンプトテンプレートのコードと、REST APIで利用可能なPython 関数を提供します。
詳しくは、作業の保存をご覧ください。
あるいは、 watsonx.ai のSDKで利用可能なクラスを使用することもできます。 インメモリベクトルインデックスを使用してSDKを使用している場合、プロンプトをノートブックとして保存し、ベクトルインデックスの詳細をノートブックで確認することで、ベクトルインデックスIDなどのインデックスの詳細情報を取得できます。