当サイトのクッキーについて IBM のWeb サイトは正常に機能するためにいくつかの Cookie を必要とします(必須)。 このほか、サイト使用状況の分析、ユーザー・エクスペリエンスの向上、広告宣伝のために、お客様の同意を得て、その他の Cookie を使用することがあります。 詳細については、 Cookie設定 オプションをご確認ください。 IBMのWebサイトにアクセスすることにより、IBMのプライバシー・ステートメントに記載されているように情報を処理することに同意するものとします。 円滑なナビゲーションのため、お客様の Cookie 設定は、 ここに記載されている IBM Web ドメイン間で共有されます。
検索拡張生成
最終更新: 2025年2月26日
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.
このビデオは、このドキュメントのコンセプトとタスクを学ぶための視覚的な方法を提供します。
ビデオ・チャプターCopy link to section
Copy link to section
[0:08] シナリオの説明
[0:27] パターンの概要
[1:03] ナレッジベース
[1:22] 検索コンポーネント
[1:41] コンテキストで補強されたプロンプト
[2:13] アウトプットの生成
[2:31] 完全なソリューション
[2:55] 検索に関する考察
[3:58] プロンプトテキストに関する考察
[5:01] 説明可能性に関する考察
プロンプトに文脈を示すことで、精度が向上するCopy link to section
Copy link to section
ファ基盤モデルは、さまざまな理由で事実上不正確な出力を生成する可能性があります。 生成されるアウトプットの精度を向上させる1つの方法は、プロンプトテキストのコンテキストとして必要な事実を提供することです。
例Copy link to section
Copy link to section
次のプロンプトには、いくつかの事実を立証するための文脈が含まれている:
Aisha recently painted the kitchen yellow, which is her favorite color. Aisha's favorite color is
Copy to clipboard
アイーシャが、よくある事前トレーニングデータセットに含まれる多くのオンライン記事で言及されているような有名人で、その好みの色が記事に書かれていない限り、プロンプトの冒頭の文脈がなければ、 基盤モデルプロンプトの最後の正しい文章の完成形を確実に生成することはできません。
事実に満ちた文脈を含むテキストでモデルを促せば、モデルが生成する出力はより正確なものになる可能性が高くなる。 詳細は、事実に基づいて正確な出力を生成するを参照してください。
検索拡張生成 のパターンCopy link to section
Copy link to section
ナレッジベースの情報を利用することで、プロンプトにコンテキストを含めるテクニックをスケールアウトすることができる。
次の図は、 検索拡張生成 のパターンを示しています。 図では質問に答える例を示しているが、同じワークフローは他のユースケースにも対応している。
検索拡張生成 パターンには、以下のステップが含まれます
- ユーザーの質問に関連するコンテンツをナレッジベースで検索します。
- 最も関連性の高い検索結果を文脈としてプロンプトに取り込み、「次の文章から得た情報のみを使って、次の質問に答えてください」といった指示を加える
- 使用しているファ基盤モデルが命令調整されていない場合のみ: 予期される入出力形式を示すいくつかの例を追加します。
- 統合されたプロンプトテキスト(指示+検索結果+質問) 基盤モデルに送信します。
- 基盤モデル、プロンプトからの文脈情報を使用して事実に基づく回答を生成します。
その起源は 検索拡張生成Copy link to section
Copy link to section
検索拡張生成 (RAG)という用語は、本論文で初めて導入された。 検索拡張生成 知識集約的な自然言語処理タスクに 。 “We build RAG models where the parametric memory is a pre-trained seq2seq transformer, and the non-parametric memory is a dense vector index of Wikipedia, accessed with a re-trained neural retriever.”
その論文では、RAGモデルという用語は、リトリーバー(特定のクエリーエンコーダーとベクトルベースの文書検索インデックス)とジェネレーター(特定の事前訓練された生成言語モデル)の特定の実装を指しています。 しかし、基本的な検索と生成のアプローチは、異なるレトリーバー・コンポーネントや基礎モデルを使用するように一般化することができる。
知識ベースCopy link to section
Copy link to section
知識ベースは、以下のような、情報を含むアーティファクトの任意のコレクションとすることができる:
- 社内のWikiページで情報を処理する
- GitHubにあるファイル(Markdown、プレーンテキスト、JSON、コードなど形式は問いません)
- コラボレーションツールのメッセージ
- 製品ドキュメントのトピック(長いテキストブロックを含むことがある
- Db2 のような構造化クエリ言語 (SQL) クエリをサポートするデータベース内のテキストパッセージ
- PDFファイルとして保存されている法的契約書などのファイルを集めたドキュメントストア
- コンテンツ管理システムのカスタマーサポート・チケット
リトリーバーCopy link to section
Copy link to section
リトリーバは、IBM Watson Discovery のような検索ツールや、GitHub が提供するような検索およびコンテンツ API など、知識ベースから関連するコンテンツを確実に返す検索ツールとコンテンツ ツールの任意の組み合わせにすることができます。
ベクトル・データベースも効果的な検索装置である。 ベクトル・データベースは、データだけでなく、データのベクトル埋め込みも格納する。ベクトル埋め込みとは、データの意味的な意味をとらえた数値表現である。 クエリー時には、クエリーテキストのベクトル埋め込みが、関連するマッチを見つけるために使われる。
IBM watsonx.ai にはベクター データベースは含まれていませんが、watsonx.ai の基盤モデルを市販のベクター データベースで使用することができます。 例示されているノートブックは、 Cloud Pak for Data や Elasticsearch などの一般的なベクターデータベースへの接続手順を説明しています。
レトリバーがベクトル化されたテキストを使用するRAGパターンを実装するお手伝いをするため、 watsonx.ai は、文章や段落をベクトルに変換する際に使用できる埋め込みAPIと埋め込みモデルを提供しています。 このタイプのRAG導入に関する詳細については、 検索拡張生成 タスクでベクター化されたテキストを使用する をご覧ください。
ジェネレーターCopy link to section
Copy link to section
ジェネレータ・コンポーネントは、watsonx.aiの中のどのモデルでも使うことができます。あなたのユースケース、プロンプトのフォーマット、コンテキストのために取り込むコンテンツに合ったものを選んでください。
サンプル・プロジェクトCopy link to section
Copy link to section
Import a sample project with notebooks and other assets that implement a question and answer solution by using 検索拡張生成. このプロジェクトでは、次のようなことをする方法を紹介している:
- 知識ベースとしてHTML、PDF、DOC、PPTファイルを使用し、Elasticsearchベクトルインデックスをリトリーバーとして使用します。 (Elasticsearch サービスインスタンスは別途作成する必要があります)
- Write a Python function that queries the vector index to search for information related to a question, and then inferences a foundation model and checks the generated answer for hallucinated content.
- 基礎モデル用の効果的なプロンプトをフォーマットするのに役立つテンプレートをすぐに使用します。
- watsonx.ai PythonライブラリのRAGユーティリティを使って、効率的にパターンを追ってください。
- RAG実装の次の段階として、生成された回答に関するユーザーフィードバックを収集・分析する機能を実装する。
Q&A with RAG Acceleratorサンプルプロジェクトをお試しください。
詳細については、 RAGアクセラレータに関するQ&A をご覧ください。
注意: サンプルプロジェクトを作成できない場合は、説明フィールドのテキストを置き換えてみてください。
例Copy link to section
Copy link to section
以下の例では、 検索拡張生成 パターンを適用する方法を示します。
例 | 説明 | リンク |
---|---|---|
簡単な紹介 | 基本的なパターンを示すために、小さな知識ベースと簡単な検索コンポーネントを使用する。 | 紹介 検索拡張生成 |
ディスカバリーと簡単な紹介 | このサンプル・ノートブックでは、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 |
詳細情報Copy link to section
Copy link to section
これらのチュートリアルを試してみよう:
親トピック 生成的AIソリューションの開発
トピックは役に立ちましたか?
0/1000