上の図に示されているRAGアーキテクチャーは、2つのセクションに分割できます。
RAGソリューションを作成するために採用される一般的なプロセスは次のとおりです。
AIエンジニアは、データ前処理中にクライアント・データ(手順マニュアル、製品ドキュメント、ヘルプ・デスク・チケットなど)を準備します。クライアント・データは、モデル拡張に適したものになるように変換や強化が行われます。変換には、PDFドキュメントをテキストに変換するなどの単純な形式変換から、複雑なテーブル構造をif-thenタイプのステートメントに変換するなどのより複雑な変換までさまざまな種類があります。強化には、一般的な略語の拡張、通貨情報などのメタデータの追加、検索結果の関連性を向上させるためのその他の追加が含まれる場合があります。
文書の豊富な情報は、テキストをより効率的に管理するために、チャンクと呼ばれる小さなセグメントに分割されます。これは、さまざまなストラテジーを使用して実行できますが、それぞれが情報を分離およびグループ化する独自の方法を持っています。
その後、チャンクはデータベースに取り込まれ、ソリューションの使用中に保管してアクセスすることを目的としています。検索ストラテジーが異なれば、必要なデータベースの種類も異なります。複数の種類のデータベースを必要とするものもあります。ただし、一般的なRAGソリューションはベクトル・データベースのみを利用します。この場合、埋め込みモデルを使用してチャンクを一連のベクトルに変換し、Vector DBに保管できます。
これで、エンドユーザーがシステムを使用できるようになりました。
エンドユーザーは生成AI対応アプリケーションとやり取りしながら、クエリーを入力します。
生成AIアプリケーションはクエリーを受信し、採用された検索戦略を実行して、ユーザーのクエリーに最もよく一致すると判断された上位の「K」(Kは数字のプレースホルダー)情報を取得します。例えば、「MaxSavers口座の1日の引き出し制限はどれくらいですか」というユーザーのクエリーだった場合、「MaxSavers口座は…」、「1日の引き出し制限は…」、「…口座制限…」といった文章が返される可能性があります。
元のクエリー、上位の文章、および特定のアプリケーション向けにキュレートされた指示プロンプトが、LLMに送信されます。
その後、LLMは指示プロンプトに従って、取得した情報を使用して元のユーザークエリーに対する回答を生成し、フォーマットします。