0 / 0
資料の 英語版 に戻る
取得の拡張生成
最終更新: 2025年2月06日
取得の拡張生成

You can use foundation models in IBM watsonx.ai to generate factually accurate output, that is grounded in information in a knowledge base, by applying the 検索拡張生成 (RAG) pattern.

 

このビデオは、このドキュメントのコンセプトとタスクを学ぶための視覚的な方法を提供します。

ビデオ・チャプター

[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 

アイシャが、一般的な事前学習データセットに含まれる多くのオンライン記事で好きな色について言及されている有名人でない限り、プロンプトの冒頭の文脈がなければ、どのfoundation modelもプロンプトの最後に正しい文の完了を確実に生成することはできない。

事実に満ちた文脈を含むテキストでモデルを促せば、モデルが生成する出力はより正確なものになる可能性が高くなる。 詳細は、事実に基づいて正確な出力を生成するを参照してください。

 

検索拡張生成 のパターン

ナレッジベースの情報を利用することで、プロンプトにコンテキストを含めるテクニックをスケールアウトすることができる。

次の図は、 検索拡張生成 のパターンを示しています。 図では質問に答える例を示しているが、同じワークフローは他のユースケースにも対応している。

検索補強生成の入力に検索結果を追加することを示す図

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

  1. ユーザーの質問に関連するコンテンツをナレッジベースで検索します。
  2. 最も関連性の高い検索結果を文脈としてプロンプトに取り込み、「次の文章から得た情報のみを使って、次の質問に答えてください」といった指示を加える
  3. 使用しているファ基盤モデルが命令調整されていない場合のみ: 予期される入出力形式を示すいくつかの例を追加します。
  4. 組み合わされたプロンプトテキスト(指示+検索結果+質問)をfoundation modelモデルに送信する。
  5. foundation modelは、プロンプトからの文脈情報を使用して、事実に基づいた答えを生成する。

その起源は 検索拡張生成

検索拡張生成 (RAG)という用語は、本論文で初めて導入された。 検索拡張生成 知識集約的な自然言語処理タスクに

"我々は、パラメトリックメモリが事前に訓練されたseq2seq変換器であり、ノンパラメトリックメモリが事前に訓練されたニューラルレトリバーでアクセスされるウィキペディアの密なベクトルインデックスであるRAGモデルを構築する。"

その論文では、RAGモデルという用語は、リトリーバー(特定のクエリーエンコーダーとベクトルベースの文書検索インデックス)とジェネレーター(特定の事前訓練された生成言語モデル)の特定の実装を指しています。 しかし、基本的な検索と生成のアプローチは、異なるレトリーバー・コンポーネントや基礎モデルを使用するように一般化することができる。

知識ベース

知識ベースは、以下のような、情報を含むアーティファクトの任意のコレクションとすることができる:

  • 社内のWikiページで情報を処理する
  • GitHubにあるファイル(Markdown、プレーンテキスト、JSON、コードなど形式は問いません)
  • コラボレーションツールのメッセージ
  • 製品ドキュメントのトピック(長いテキストブロックを含むことがある
  • Db2 のような構造化クエリ言語 (SQL) クエリをサポートするデータベース内のテキストパッセージ
  • PDFファイルとして保存されている法的契約書などのファイルを集めたドキュメントストア
  • コンテンツ管理システムのカスタマーサポート・チケット

リトリーバー

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

ベクトル・データベースも効果的な検索装置である。 ベクトル・データベースは、データだけでなく、データのベクトル埋め込みも格納する。ベクトル埋め込みとは、データの意味的な意味をとらえた数値表現である。 クエリー時には、クエリーテキストのベクトル埋め込みが、関連するマッチを見つけるために使われる。

IBM watsonx.ai にはベクター データベースは含まれていませんが、watsonx.ai の基盤モデルを市販のベクター データベースで使用することができます。 サンプルノートブックは、ChromaやElasticsearchのような一般的なベクターデータベースに接続する手順を示しています。

レトリバーがベクトル化されたテキストを使用するRAGパターンを実装するお手伝いをするため、 watsonx.ai は、文章や段落をベクトルに変換する際に使用できる埋め込みAPIと埋め込みモデルを提供しています。 このタイプのRAG導入に関する詳細については、 検索拡張生成 タスクでベクター化されたテキストを使用する をご覧ください。

ジェネレーター

ジェネレータ・コンポーネントは、watsonx.aiの中のどのモデルでも使うことができます。あなたのユースケース、プロンプトのフォーマット、コンテキストのために取り込むコンテンツに合ったものを選んでください。

サンプル・プロジェクト

Import a sample project with notebooks and other assets that implement a question and answer solution by using 検索拡張生成. このプロジェクトでは、次のようなことをする方法を紹介している:

  • 知識ベースとしてHTML、PDF、DOC、PPTファイルを使用し、Elasticsearchベクトルインデックスをリトリーバーとして使用します。 (Elasticsearch サービスインスタンスは別途作成する必要があります)
  • 質問に関連する情報を検索するためにベクトルインデックスを照会し、foundation modelを推論し、生成された答えが幻覚的な内容でないかチェックするPython関数を書きなさい。
  • 基礎モデル用の効果的なプロンプトをフォーマットするのに役立つテンプレートをすぐに使用します。
  • watsonx.ai PythonライブラリのRAGユーティリティを使って、効率的にパターンを追ってください。
  • RAG実装の次の段階として、生成された回答に関するユーザーフィードバックを収集・分析する機能を実装する。

Q&A with RAG Acceleratorサンプルプロジェクトをお試しください。

注意: サンプルプロジェクトを作成できない場合は、説明フィールドのテキストを置き換えてみてください。

以下の例では、 検索拡張生成 パターンを適用する方法を示します。

説明 リンク
簡単な紹介 基本的なパターンを示すために、小さな知識ベースと簡単な検索コンポーネントを使用する。 紹介 検索拡張生成
ディスカバリーと簡単な紹介 このサンプル・ノートブックでは、IBM Watson Discovery の短い記事を知識ベースとして使用し、Discovery API を使用して検索クエリを実行します。 検索拡張生成 の簡単な紹介と watsonx.ai 、ディスカバリー
実例 watsonx.ai ドキュメントには、ドキュメントのトピックを知識ベースとして使用することで、基本的な What-is の質問に答えることができる検索と回答の機能があります。 ファ基盤モデルを使用した watsonx.ai の質問への回答
LangChainを使った例 検索拡張生成 を LangChain で watsonx.ai でサポートする手順とコードを含んでいます。 データ検索、知識ベースの構築とクエリ、モデルのテストのためのコマンドを紹介している。 watsonxと LangChainを使い、RAGを使って質問に答える
LangChain と Elasticsearch ベクトルデータベースを使った例 LangChain を使って、Elasticsearch ベクトルデータベースのドキュメントに埋め込みモデルを適用する方法を示します。 その後、ノートブックはデータストアにインデックスを作成し、それを使用して、入力された質問に対する回答を生成する。 watsonx、Elasticsearch、LangChainて質問に答える(RAG)
Elasticsearch Python ライブラリを使った例 Elasticsearch Python ライブラリを使って、Elasticsearch ベクトルデータベースのドキュメントに埋め込みモデルを適用する方法を示します。 その後、ノートブックはデータストアにインデックスを作成し、それを使用して、入力された質問に対する回答を生成する。 watsonx「Elasticsearch「Pythonライブラリを使用して質問に答える(RAG)
LangChain と SingleStoreDB データベースを使った例 検索拡張生成 を watsonx の大型言語モデルに適用する方法を、 SingleStoreDB データベースを使用して説明します。 SingleStoreDBと watsonxを使ったRAG
{: caption=" 検索拡張生成 の例" caption-side="top"}

詳細情報

これらのチュートリアルを試してみよう:

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