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

- (オプション) ユーザー クエリの前処理: 場合によっては、ユーザーのクエリは、ベクトルデータベースへのクエリにより適した形に前処理されます。これには、テンプレート内でクエリをフォーマットしたり、別のモデルを使用してリクエストを書き換えたり、キーワードを抽出して検索を支援したりすることが含まれます。このステップの出力は、次の検索ステップで使用される検索クエリです。
- 検索: ベクトルデータベースからサポート情報を取得するために、検索クエリーは、データ準備中にドキュメントチャンクをエンベディングするのに使用されたのと同じエンベディングモデルを使用して、エンベディングに変換されます。これらのエンベディングにより、検索クエリーと非構造化テキストチャンク間の意味的類似性を、コサイン類似度などの尺度を使用して比較することが可能になります。次に、ベクトルデータベースからチャンクが取得され、エンベディングされたリクエストとの類似性に基づいてランク付けされます。上位 (最も類似した) 結果が返されます。
- プロンプト拡張 : LLMに送信されるプロンプトは、ユーザーのクエリを検索されたコンテキストで拡張し、各コンポーネントの使用方法をモデルに指示するテンプレートで形成されます。多くの場合、応答形式を制御するための追加の指示が伴います。使用する適切なプロンプトテンプレートを反復するプロセスは、プロンプトエンジニアリングと呼ばれます。
- LLM 生成: LLM は、ユーザーのクエリーと取得されたサポートデータを含む拡張されたプロンプトをインプットとして受け取ります。次に、追加のコンテキストに基づいた応答を生成します。
- (オプション) 後処理 : LLMの応答は、追加のビジネスロジックを適用したり、引用を追加したり、または事前定義されたルールや制約に基づいて生成されたテキストを洗練したりするために、さらに処理される場合があります。
RAGアプリケーションのデータパイプラインと同様に、RAGチェーンの品質に影響を与える可能性のある多くの重要なエンジニアリング上の決定があります。例えば、ステップ2でいくつのチャンクを取得するか、およびステップ3でそれらをユーザーのクエリと結合する方法を決定することは、モデルが質の高い応答を生成する能力に大きく影響する可能性があります。
このプロセス全体を通じて、企業ポリシーへのコンプライアンスを確保するために、さまざまなガードレールが適用される場合があります。これには、適切なリクエストのフィルタリング、データソースにアクセスする前のユーザー権限の確認、生成された応答へのコンテンツモデレーション技術の適用が含まれる場合があります。