ベクトル・インデックスの作成

以下のタイプのベクターストアを使用して、接地文書のインデックスを作成することができます:

  • メモリー内
  • Elasticsearch
  • watsonx.data Milvus

インメモリ・ベクター・ストアを選択すると、インデックスが自動的に作成されるので、ベクター・ストアをセットアップする必要はありません。

始める前に

手順

グラウンディング・ドキュメントのベクター・インデックスを作成するには、以下のステップを踏んでください。 ステップの順序は、使用するベクターストアによって若干異なる場合があります。

  1. プロジェクトの概要から、資産タブをクリックし、新しいアセット > ベクター化されたドキュメントによる地上波AIを選択します。

    または、ページ冒頭の 書類によるグラウンディング アイコン 書類アイコンによる接地 をクリックし、 ベクトル・インデックスの選択または作成 をクリックすることで、チャットモードの Prompt Lab から開始することもできます。

  2. 使用するベクターストアを選択します。

  3. ベクトルインデックスアセットに名前をつける。

  4. 以下のいずれかの方法で接地文書を追加する:

    • プロジェクトに関連付けられたデータ資産からファイルを追加する
    • ブラウズしてファイルシステムからファイルをアップロードする

    以下のオプションは、サードパーティのベクターストアでのみ利用可能です:

    • 接続されたベクターストアから既存のコンテンツを追加する

      接続されているデータソースを選択し、該当する場合はデータベースを選択し、Nextをクリックします。 使用するインデックスまたはコレクションを選択します。

    • 連結ベクトル・インデックスに新しいコンテンツを追加する

      接続されたベクターストアに新しいコンテンツを追加するには、接続されたデータソースを選択し、該当する場合はデータベースを選択し、Nextをクリックします。 新しいインデックスまたは新しいコレクションをクリックして名前を指定し、ファイルをアップロードするかデータ資産に接続してドキュメントを追加します。

    対応するファイル形式はベクターストアによって異なります。 詳しくは、サポートされている接地文書ファイルの種類を参照してください。

  5. オプション: 該当する場合は、ドキュメントのベクトル化に使用する埋め込みモデルまたはベクトル化設定を選択します。

    詳しくは、埋め込みモデルとベクトル化の設定を参照してください。

  6. 接続されたデータストアに限ります: 既存のインデックスまたはコレクションから、 watsonx.ai の資産定義されている新しいフィールドにフィールドをマッピングします。

    ベクトル・インデックス・フィールドのマッピングが重要なのは、 watsonx.ai、さまざまなタイプのサポートされているベクトル・ストアからデータを抽出し、元のファイル名やページ番号など、文書に関する詳細をキャプチャする一貫した方法が必要だからだ。

    表 1. ベクトル・ストア・スキーマ・フィールド
    新しいベクトル・インデックス・フィールド名 連結ベクトルストアのフィールド
    ベクタークエリー Elasticsearch インデックスにのみ必要です。 mlvector のように、Elasticsearch インデックスを検索するために使用されるクエリテキストが指定されるフィールド。
    文書名 ソース・ファイルを識別するフィールド。 metadata.sourceのようにファイル名をキャプチャするフィールドや、metadata.titleのようにドキュメントのタイトルをキャプチャするフィールドを選ぶことができます。
    テキスト bodytextのように、ページ内容の大部分を含むフィールド。
    ページ番号 metadata.page_numberのようにページ番号を特定するフィールド。
    文書URL metadata.document_url のようなドキュメントURL を含むフィールド。
    重要:

    Cloud Object Storage (COS)接続を使用する接続フォルダ資産使用するには、以下の要件を満たしていることを確認してください:

    • COS接続にはバケットを指定しなければならない。
    • COS接続は、認証としてHMACクレデンシャル(リソースインスタンスID、apiキー、アクセスキー、 秘密鍵 )を使用しなければならない。

  7. 「作成」 をクリックします。

ファイル内のテキストはベクトル化され、ベクトルはインデックス化されて新しいベクトルインデックスアセットに格納されます。

接続されているサードパーティのデータストアに新しいコンテンツを追加すると、以下の資産作成されます:

  • ドキュメントをベクトル化し、サードパーティのデータストアにインデックスまたはコレクションを構築するジョブ実行される資産。
  • 送信されたクエリをサードパーティデータストアのインデックスまたはコレクションに渡し、検索結果を得ることができる資産。

資産作成されたら、ベクトル化されたドキュメントがどの程度質問に答えられるかをテストし、必要な調整を行うことができます。 ベクトル・インデックスの管理を参照してください。

埋め込みモデルとベクトル化の設定

以下の設定は、ドキュメントが埋め込みモデルに送られる前に、どのように小さなセグメント、つまりチャンクに分割されるかを制御します:

  • テキストチャンクサイズ: ドキュメントセグメントごとに含める文字数。

    モデルが許容する入力トークンの最大数よりも小さいセグメントサイズを定義する。 ドキュメントをより大きなセグメントに分割した場合、一部のドキュメントテキストが省略される可能性があります。これは、トークンの最大サイズの制限を満たした後は、セグメント内の余分な文字は埋め込みモデルによって無視されるからです。

    チャンクサイズは文字数で指定する。 1トークンの文字数は埋め込みモデルによって異なるが、1トークンは約2~3文字に相当する。

    表 2. 埋め込みモデルのチャンクサイズ
    モデルのエンベッド 最大入力トークン数 おおよそのチャンクサイズ
    all-MiniLM-L6-v2 256 700
    all-MiniLM-l12-v2 256 700
    ELSER 512 1400
    slate-30m-english-rtrvr-v2 512 1400
    slate-125m-english-rtrvr-v2 512 1400
    granite-embedding-278m-multilingual 512 1400

     

  • テキストチャンクオーバーラップ: 2つの連続するドキュメントセグメントで繰り返される文字数。

    テキストを繰り返すことで、文書セグメント間にバッファができ、完全な文章をキャプチャしやすくなり、テキストが完全に見逃されるのを防ぐことができる。

  • PDFページを分割する:有効にすると、PDFファイルをページごとに分割し、回答にページ番号のソースを含めます。 表示されているページ番号は、PDFビューアのページ番号です。

    注意: このオプションは、PDFファイルを追加した場合にのみ使用できます。

     

基盤モデルプロンプトでベクトルインデックスを使用する

ベクトルインデックスを使用する準備ができたら、次のいずれかの方法で、この資産 基盤モデルプロンプトを関連付けます:

  • 資産、ページの最初にある ベクターインデックス情報を見る アイコン ベクター・インデックス情報アイコンを見る をクリックして この資産 パネルを開き、 で開く Prompt Lab をクリックします。
  • チャットモードの Prompt Lab から、ページ冒頭の 書類によるグラウンディング アイコン 書類アイコンによる接地 をクリックし、 ベクトル・インデックスの選択または作成 をクリックする。

このプロンプト・パターンをアプリケーションで使用する

文書セットを使用した検索支援生成(RAG)パターンを実験した後、生成AIアプリケーションで使用できるように、プロンプトのロジックをノートブックに保存する。

プロンプトをノートブックとして保存するときに、展開可能な gen AI フローオプションを選択します。 生成されたノートブックは、Python のプロンプトテンプレートのコードと、REST APIで利用可能なPython 関数を提供します。

詳しくは、作業の保存をご覧ください。

あるいは、 watsonx.ai のSDKで利用可能なクラスを使用することもできます。 インメモリベクトルインデックスを使用してSDKを使用している場合、プロンプトをノートブックとして保存し、ベクトルインデックスの詳細をノートブックで確認することで、ベクトルインデックスIDなどのインデックスの詳細情報を取得できます。

詳細情報