0 / 0
資料の 英語版 に戻る
検索拡張世代 (RAG) (Retrieval-augmented generation (RAG))

検索拡張世代 (RAG) (Retrieval-augmented generation (RAG))

IBM watsonx.ai でファ基盤モデルを使用して、取得拡張生成パターンを適用することにより、知識ベース内の情報に基づいて、事実上正確な出力を生成できます。

 

このビデオは、本書の概念とタスクを学習するためのビジュアル・メソッドを提供します。


ビデオの章
[ 0:08 ] シナリオの説明
[ 0:27 ] パターンの概要
[ 1:03 ] 知識ベース
[ 1:22 ] 検索コンポーネント
[ 1:41 ] コンテキストで拡張されたプロンプト
[ 2:13 ] 出力の生成
[ 2:31 ] 完全解決策
[ 2:55 ] 検索に関する考慮事項
[ 3:58 ] プロンプト・テキストに関する考慮事項
[ 5:01 ] 説明性に関する考慮事項

 

プロンプトにコンテキストを指定すると、正確度が向上します。

ファ基盤モデルは、さまざまな理由で事実上不正確な出力を生成する可能性があります。 生成される出力の精度を向上させる 1 つの方法は、必要な事実をプロンプト・テキストのコンテキストとして提供することです。

以下のプロンプトには、いくつかの事実を確立するコンテキストが含まれています。

Aisha recently painted the kitchen yellow, which is her favorite color.

Aisha's favorite color is 

アイシャが、一般的なプリトレーニング・データ・セットに含まれている多くのオンライン記事でお気に入りの色が言及されている有名な人物でない限り、プロンプトの開始時にコンテキストがないと、ファウンデーション・モデルは、プロンプトの終了時に文の正しい完成を確実に生成することができません。

ファクトが入力されたコンテキストを含むテキストを使用してモデルにプロンプトを出すと、モデルが生成する出力が正確である可能性が高くなります。 詳しくは、 事実上正確な出力の生成を参照してください。

 

検索によって拡張された生成パターン

知識ベースの情報を使用して、プロンプトにコンテキストを組み込む手法をスケールアウトできます。

以下の図は、取得拡張世代パターンを示しています。 この図には質問への回答の例が示されていますが、同じワークフローが他のユース・ケースをサポートしています。

検索拡張世代の入力への検索結果の追加を示す図

取得拡張生成パターンには、以下のステップが含まれます。

  1. 知識ベースで、ユーザーの質問に関連するコンテンツを検索します。
  2. 最も関連性の高い検索結果をコンテキストとしてプロンプトに表示し、「以下のパッセージの情報のみを使用して以下の質問に回答する」などの指示を追加します。
  3. 使用しているファ基盤モデルが命令調整されていない場合のみ: 予期される入出力形式を示すいくつかの例を追加します。
  4. 結合されたプロンプト・テキスト (命令 + 検索結果 + 質問) をファウンデーション・モデルに送信します。
  5. ファウンデーション・モデルは、プロンプトからのコンテキスト情報を使用して、事実上の回答を生成します。

取得増補世代の由来

Retrieval-augmented generation (RAG)」という用語は、 Retrieval-augmented generation for knowledge-nLP tasksという資料で紹介されています。

「我々は、パラメトリック・メモリーが事前にトレーニングされた seq2seq 変圧器であり、ノンパラメトリック・メモリーが Wikipedia の高密度ベクトル指標であり、事前にトレーニングされたニューラル・リトリーバーを使用してアクセスする RAG モデルを構築します。」

この資料では、 RAG モデル という用語は、 リトリーバー (特定の照会エンコーダーおよびベクトル・ベースの文書検索索引) および 生成プログラム (事前にトレーニングされた特定の生成言語モデル) の特定の実装を指します。 ただし、基本的な検索および生成のアプローチを一般化して、さまざまなリトリーバー・コンポーネントおよび基盤モデルを使用することができます。

知識ベース

知識ベースは、以下のような情報を含む成果物の任意のコレクションにすることができます。

  • 社内 Wiki ページのプロセス情報
  • GitHub 内のファイル (任意の形式: マークダウン、プレーン・テキスト、JSON、コード)
  • コラボレーション・ツールでのメッセージ
  • 製品資料内のトピック (長いテキスト・ブロックが含まれる場合があります)
  • 構造化照会言語 (SQL) 照会をサポートするデータベース内のテキスト・パッセージ ( Db2 など)
  • PDF ファイルとして保管されている法的契約などのファイルの集合を持つ文書ストア
  • コンテンツ管理システムでのお客様サポート・チケット

リトリーバー

リトリーバーは、 IBM Watson Discovery のような検索ツールや、 GitHubで提供されるような検索 API やコンテンツ API など、知識ベースから確実に関連コンテンツを返す検索ツールとコンテンツ・ツールの任意の組み合わせにすることができます。

ベクトル・データベースは、特に有効なリトリーバーです。 ベクトル・データベースは、データだけでなく、データのベクトル組み込みも保管します。これは、データの意味をキャプチャーするデータの数値表現です。 照会時には、照会テキストのベクトル埋め込みを使用して、関連する一致が検索されます。

Watsonx.ai にはベクトル・データベースは含まれていませんが、 watsonx.ai のファウンデーション・モデルを市場の任意のベクトル・データベースで使用できます。 サンプル・ノートブック は、Chroma や Elasticsearchなどの一般的なベクトル・データベースに接続するための手順を示しています。

より高度な実装には、知識ベースがベクトル・データ・ストアであり、リトリーバーが照会をベクトルに変換し、類似性検索を使用して関連するパッセージを検出するレイヤーが含まれる場合があります。 IBM watsonx.ai は、文とパッセージをベクトルに変換するために使用できる組み込み API と組み込みモデルを提供します。 このタイプの RAG 実装について詳しくは、 Using vectorized text with retrieval-augmented generation tasksを参照してください。

ジェネレーター

生成プログラム・コンポーネントは、 watsonx.ai内の任意のモデルを使用できます。これらのモデルは、ユース・ケース、プロンプト・フォーマット、およびコンテキスト用にプルするコンテンツに適しています。

サンプル・プロジェクト

取得拡張された生成を使用して、質問と回答のソリューションを実装するノートブックおよびその他の資産を含むサンプル・プロジェクトをインポートします。 このプロジェクトでは、知識ベースとして HTML ファイルと PDF ファイルを使用し、リトリーバーとして Elasticsearch ベクトル索引を使用します。 Python 関数は、索引を照会して質問に関連する情報を検索し、基礎モデルを推論して回答を生成します。 この関数は、回答が返される前に、回答の幻覚コンテンツをチェックします。 Q & A with RAG Accelerator サンプル・プロジェクトをお試しください。

以下の例は、取得拡張世代パターンを適用する方法を示しています。

検索拡張生成の例
説明 リンク
簡単な概要 小規模な知識ベースと単純な検索コンポーネントを使用して、基本的なパターンを実証します。 retrieval-augmented 世代の概要
Discovery の簡単な概要 このサンプル・ノートブックでは、 IBM Watson Discovery の短い記事を知識ベースとして使用し、Discovery API を使用して検索照会を実行します。 watsonx.ai および Discovery を使用した検索拡張世代の簡単な概要
実世界の例 watsonx.ai 資料には、資料内のトピックを知識ベースとして使用することで、基本的な質問に答えることができる検索と回答の機能があります。 ファ基盤モデルを使用した watsonx.ai の質問への回答
LangChain の例 watsonx.aiの LangChain を使用した検索拡張生成のサポートを示すためのステップとコードが含まれています。 データ取得、知識ベースの構築と照会、およびモデル・テストのためのコマンドを紹介しています。 RAG を使用して質問に回答するには、 watsonx および LangChain を使用します。
LangChain と Elasticsearch ベクトル・データベースを使用した例 LangChain を使用して、 Elasticsearch ベクトル・データベース内の文書に埋め込みモデルを適用する方法を示します。 次に、ノートブックは、データ・ストアに索引を付け、データ・ストアを使用して着信質問に対する回答を生成します。 watsonx、 Elasticsearch、および LangChain を使用して質問 (RAG) に回答します。
Elasticsearch Python ライブラリーの例 Elasticsearch Python ライブラリーを使用して、 Elasticsearch ベクトル・データベース内の文書に埋め込みモデルを適用する方法を示します。 次に、ノートブックは、データ・ストアに索引を付け、データ・ストアを使用して着信質問に対する回答を生成します。 watsonxおよび Elasticsearch Python ライブラリーを使用して質問に答える (RAG)
LangChain および SingleStore データベースの例 SingleStore データベースを使用して、 watsonx の大規模言語モデルに検索拡張世代を適用する方法を示します。 SingleStore および watsonxを使用する RAG

詳細情報

以下のチュートリアルをお試しください。

親トピック: 生成 AI ソリューションの開発

生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細