RAGパターンを自動化する AutoAI
AutoAI を使用して、お客様のデータとユースケースに基づいて、最適化された実用レベルのRAG(Retrieval-augmented generation)パターンを自動的に検索し、高速化します。
- データ・フォーマット
- PDF、HTML、DOCX、MD、またはプレーンテキスト形式の文書コレクションファイル
- JSON形式の質問と回答を含むテストデータ
- データファイルの制限
- 文書コレクションには、最大20個のファイルまたはフォルダを登録できます。 より大きな文書コレクションについては、 AutoAI は1GBのサンプルで実験を行っています。
- テストデータ用のJSONファイル1つ。 実験では、最大25の質問と回答のペアを使用してパターンを評価します。
- 環境サイズ
- 大規模: 8 個の CPU および 32 GB の RAM
RAGパターンに必要なコストの見積もり
AutoAI RAG実験では、実験のトレーニングにCUH(Capacity Unit Hours)を使用し、実験中はドキュメントの埋め込みと基盤モデル推論のためにトークンが消費される。
- CUHは、サポート対象環境では1時間あたり20 CUHの標準的な測定値です。 実験で消費されるCUHは、実験の複雑さとパターンを学習するのに必要な時間に依存します。
- トークンの消費量は、以下のような多くの要因に左右される:
- 埋め込み用ドキュメントコレクションのサイズ
- 埋め込む評価問題と回答の数
- チャンキング構成、この式で計算:
((Chunk overlap + Chunk size) * Chunk count) *Evaluation records
- 実験が作成するパターンの数
このサンプルでは、単一のRAGパターンに対するリソースの計算方法を説明しています。
実験入力:
- 書類100ページ
- 評価に関する質問と回答のレコード25件
アクティビティー | 消費されたトークン |
---|---|
文書を埋め込む | 3,000,000 |
評価記録の埋め込み | 25,000 |
プロンプトのコンテキストを取得中 | 192,000 |
評価記録のコンテキストを取得中 | 25,000 |
答えを導き出す | 25,000 |
消費されたトークンの合計 | 3,267,000 |
検索補強型生成で正確な回答を提供
検索補強型生成(RAG)は、大規模な言語モデルの生成能力と、根拠となる文書コレクションの精度を組み合わせたものである。 RAGアプリケーションとのやりとりはこのパターンに従う:
- ユーザーがアプリに質問を投稿する。
- 検索はまず、根拠となる文書群から関連するコンテキストを検索する。
- 付随する大規模な言語モデルは、関連する情報を含む回答を生成する。
例えば、この機能で提供されるサンプルノートブックでは、watsonx.ai Pythonクライアントライブラリの製品ドキュメントを、watsonx.aiソリューションのコーディングに関する Q&A アプリの基礎資料として使用しています。 パターン・ユーザーは、生成AIモデルが文脈を追加し、自然言語で答えを提示することで、ドキュメントから特定の関連情報を得ることができる。
検索機能付き生成がどのように質問と回答のアプリケーションを向上させるかについての完全な説明と例については、検索機能付き生成(RAG)を参照してください。
最適なRAGコンフィギュレーションの自動検索
RAGには、どの大規模言語モデルを選択するか、接地文書をどのようにチャンクするか、どれだけの文書を検索するかなど、多くの設定パラメータが用意されている。 別のユースケースではうまくいく構成選択も、あなたのデータにとってはベストな選択ではないかもしれない。 データセットに最適なRAGパターンを作成するために、RAG設定オプションの可能なすべての組み合わせを探索し、最適なソリューションを見つけ、評価し、展開することができる。 このプロセスには、多大な時間とリソースの投資が必要となる。 機械学習モデルを迅速にトレーニングして最適化するために AutoAI を使用できるように、AutoAI 機能を使用して、データとユースケースに基づいて最適な RAG ソリューションの検索を自動化できます。 実験を加速させることで、生産までの時間を劇的に短縮することができる。
AutoAIアプローチの主な特徴は以下の通り:
- 制約のある設定オプションの完全な探索と評価.
- 何か変更があった場合、迅速にコンフィギュレーションを再評価し、修正する。 たとえば、新しいモデルが利用可能になったときや、評価結果が回答の質に変化をもたらしたときに、トレーニングプロセスを簡単に再実行することができます。
AutoAI を使用すると、実験からデプロイまでのエンドツーエンドのフローが自動化されます。 次の図は、AutoAI による、データとユースケースに最適化された RAG パターンを見つけるためのアプローチを 3 つのレイヤーに分けて示しています:
- 基本レベルでは、パラメータ化されたRAGパイプラインが使用され、ベクターストア(インデックス)を作成し、大規模言語モデルが応答を生成する際に使用するベクターストアからデータを取得する。
- 次に、RAG評価指標とベンチマーキング・ツールが、回答の質を評価する。
- 最後に、ハイパーパラメータ最適化アルゴリズムが、データに最適なRAGコンフィギュレーションを検索します。
AutoAI RAG最適化プロセス
AutoAIRAGを使用して実験を実行すると、ハイパーパラメータ最適化アルゴリズムを使用することにより、すべてのRAG設定オプションのテストを回避することができます(例えば、グリッド検索を回避することができます)。 以下の図は、16のRAGパターンから選択できるRAGコンフィギュレーション検索空間のサブセットを示している。 実験がそれらすべてを評価した場合、1~16のランク付けが行われ、最高ランクの3つのコンフィギュレーションがベストパフォーマンスとしてタグ付けされる。 最適化アルゴリズムは、どのRAGパターンのサブセットを評価するかを決定し、灰色で示されている他のパターンの処理を停止する。 この処理により、指数関数的な探索空間の探索を回避しつつ、よりパフォーマンスの高いRAGパターンを実際に選択することができる。
RAGパターンの検索を自動化するには、ファストパスを使用します
AutoAIは、RAGパターンの検索を自動化するためのコード不要のソリューションを提供します。 ファストパスを使用するには、プロジェクトから開始し、 AutoAIのインターフェイスを使用して、接地とテストの文書をアップロードします。 デフォルト設定を受け入れるか、実験設定を更新する。 あなたのユースケースに最適なRAGパターンを作成するために実験を実行する。
RAGパターンのコーディングにAutoAISDKを使用する
サンプルノートブックを使用して、watsonx.ai Python クライアントライブラリ (バージョン 1.1.11 以降) を使用して、ユースケースの自動 RAG ソリューションをコーディングする方法を学んでください。
例 | 詳細 |
---|---|
Chromaデータベースを使ったRAGパターンの自動化 | - watsonx.ai Python SDKのドキュメントファイルをRAGパターンの基礎ドキュメントとして使用します。 - ベクター化されたコンテンツを、デフォルトのインメモリChromaデータベースに格納します |
MilvusでRAGパターンを自動化 | - watsonx.ai Python SDK ドキュメント ファイルを RAG パターンの基礎ドキュメントとして使用します。 - ベクトル化されたコンテンツを外部の Milvus データベースに保存します |
RAG実験の規模拡大
AutoAI automates the search for an optimized RAG pattern based on your grounding documents. もし、ドキュメントの知識ベースが実験で許可されたデータ制限を超えていたとしても、 AutoAI を使用してRAGパターンを見つけ、パターンを保存した際に自動生成されたインデックス作成ノートブックを使用して、さらに多くのドキュメントをインデックス化することができます。 RAGパターンは、より大きなインデックス付きドキュメントの集合に適用されます。
詳細は、 RAGパターンの保存を参照してください。
サポートされる機能
AutoAI RAGプロセスで提供される機能の詳細を確認してください。
機能 | 詳細 |
---|---|
対応インターフェース | API、UI |
グランド・ドキュメント収集のためのファイル形式 | PDF、HTML、DOCX、MD、プレーンテキスト |
文書収集のためのデータ接続 | IBM Cloud Object Storage (バケット) バケット内のフォルダ ファイル(最大20個) |
データ・フォーマットのテスト | 固定スキーマのJSON (フィールド: - question, correct_answer, correct_answer_document_ids) |
テストデータ用データ接続 | IBM Cloud Object Storage(単一の JSON ファイル) ' プロジェクトまたはスペース(データ資産)内の単一の JSON ファイル ' NFSストレージ・ボリューム内の単一の JSON ファイル |
チャンク化 | 64-1024文字の複数のプリセット ' グラウンディング文書は、最適化されたサイズとオーバーラップでチャンクに分割されます。 |
モデルのエンベッド | watsonx.aiで利用可能な埋め込みモデル |
ベクトル・ストア | Milvus ChromaDB |
チャンク増加 | 有効(ドキュメントから周囲のチャンクを追加する) |
検索タイプ | スタンダード(単一インデックス) |
生成モデル | タスク別の財団モデルを見る |
サンプリング | ベンチマーク・ドリブン(最初に問題を選択し、次に文書を選択し、限界までランダムなもので埋める) |
検索アルゴリズム | ハイパーパラメータの最適化にはhyperoptライブラリのTree Parzen Estimator (TPE)を使用 |
メトリック | 答えの正しさ、忠実さ、文脈の正しさ。 詳しくは ユニテキスト語彙ラグ・メトリクス を参照のこと |
最適化指標 | 最適化の対象となる指標。 正答率と忠実度はサポートされている。 |
カスタマイズ可能なユーザー制約 | 埋め込みモデル 生成モデル 設定数制限(最大出力パターン数 4~20) |
デプロイメント | Milvus: AutoAI notebooks for indexing and inference by using Milvus external vector database Deployable AI service asset Chroma: single AutoAI notebook for indexing and inferencing by using the Chroma in-memory vector database |
次のステップ
- ベクター化したドキュメントをどこに保存するかについては、ベクターストアの選択を参照してください。
- RAG実験の作成(fastpath)を参照
親トピック 生成的AIソリューションのコーディング