0 / 0
資料の 英語版 に戻る
検索補強世代(RAG)
最終更新: 2024年11月28日
検索補強世代(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 

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

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

 

検索を利用した生成パターン

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

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

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

検索を利用した生成パターンには以下のステップがある:

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

検索を利用した生成の起源

本稿では、RAG(retrieval-augmented generation)という用語を紹介する:知識集約的な自然言語処理タスクのための検索補強型生成

"我々は、パラメトリックメモリが事前に訓練された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の中のどのモデルでも使うことができます。あなたのユースケース、プロンプトのフォーマット、コンテキストのために取り込むコンテンツに合ったものを選んでください。

サンプル・プロジェクト

検索補強世代を使用して質問と回答のソリューションを実装するノートブックと他の資産を持つサンプルプロジェクトをインポートします。 このプロジェクトでは、次のようなことをする方法を紹介している:

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

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

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

以下の例は、検索を利用した生成パターンの適用方法を示している。

検索を利用した生成の例
説明 リンク
簡単な紹介 基本的なパターンを示すために、小さな知識ベースと簡単な検索コンポーネントを使用する。 検索支援生成の紹介
ディスカバリーと簡単な紹介 このサンプル・ノートブックでは、IBM Watson Discovery の短い記事を知識ベースとして使用し、Discovery API を使用して検索クエリを実行します。 watsonx.aiとDiscoveryによる検索支援生成の簡単な紹介
実例 watsonx.ai ドキュメントには、ドキュメントのトピックを知識ベースとして使用することで、基本的な What-is の質問に答えることができる検索と回答の機能があります。 ファ基盤モデルを使用した watsonx.ai の質問への回答
LangChainを使った例 watsonx.aiでLangChainを使った検索オーグメント生成のサポートを実証する手順とコードが含まれています。 データ検索、知識ベースの構築とクエリ、モデルのテストのためのコマンドを紹介している。 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

詳細情報

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

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

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