推論用のRAGチェーン

この記事では、ユーザーがオンライン設定でRAGアプリケーションにリクエストを送信したときに発生するプロセスについて説明します。 データがデータパイプラインによって処理されると、RAG アプリケーションで使用できるようになります。 推論時に呼び出される一連のステップ、つまりチェーンは、一般にRAG チェーンと呼ばれます。

推論時に呼び出されるRAGチェーンの図。
  1. (省略可能) ユーザー クエリの前処理: 場合によっては、ユーザーのクエリーが前処理され、ベクター・データベースへのクエリーにより適したものになります。 これには、テンプレート内のクエリの書式設定、別のモデルを使用した要求の書き換え、検索に役立つキーワードの抽出などが含まれます。 このステップの出力は、後続の検索ステップで使用される検索クエリです。

  2. 検索:ベクター データベースからサポート情報を取得するには、データ準備中にドキュメント チャンクを埋め込むために使用されたのと同じ埋め込みモデルを使用して、検索クエリを埋め込みに変換します。 これらの埋め込みにより、コサイン類似度などの尺度を使用して、取得クエリと非構造化テキスト チャンクの間のセマンティック類似性を比較できます。 次に、チャンクがベクターデータベースから取得され、埋め込まれたリクエストとの類似性に基づいてランク付けされます。 上位の (最も類似した) 結果が返されます。

  3. プロンプトの拡張: LLM に送信されるプロンプトは、各コンポーネントの使用方法をモデルに指示するテンプレートで、取得したコンテキストを使用してユーザーのクエリを拡張することによって形成され、多くの場合、応答形式を制御するための追加の指示が含まれます。 使用する適切なプロンプト テンプレートを反復するプロセスは、プロンプト エンジニアリングと呼ばれます。

  4. LLM 生成: LLM は、ユーザーのクエリと取得されたサポート データを含む拡張プロンプトを入力として受け取ります。 次に、追加のコンテキストに基づく応答を生成します。

  5. (オプション) 後処理: LLM の応答をさらに処理して、追加のビジネス ロジックを適用したり、引用を追加したり、事前定義されたルールや制約に基づいて生成されたテキストを調整したりすることができます。

RAG アプリケーションのデータパイプラインと同様に、RAG チェーンの品質に影響を与える可能性のある重要なエンジニアリング上の決定が多数あります。 たとえば、ステップ 2 で取得するチャンクの数を決定し、ステップ 3 でそれらをユーザーのクエリと組み合わせる方法は、モデルが品質の高い応答を生成する能力に大きな影響を与える可能性があります。

チェーン全体にわたって、企業ポリシーへの準拠を確保するためにさまざまなガードレールを適用できます。 これには、適切なリクエストのフィルタリング、データソースにアクセスする前のユーザー権限の確認、生成された応答へのコンテンツ モデレーション手法の適用などが含まれる場合があります。