前回の記事では、RAG(Retrieval Augmented Generation)を用いてLLMから独自データを含めた回答を可能とする仕組みを解説した。今回はいよいよRAGの業務水準への適応に向けた論点に言及する。

なお、本文中の意見に関する部分については、筆者の私見であることを、あらかじめお断りする。

また論点への言及においては、「知識を拡張した生成AIから回答を得ること」に直接影響する内容のみを対象とし、人材や開発環境などのリソース調達、およびVector Store(データベース)の非機能要件などの間接的なものは除外している。

1.考慮すべきポイント

RAGの実用化で考慮すべきポイントは主に下記の3点に分類できる。これらは通常のLLMの利用と比較した場合に、RAGにのみ存在するプロセスである「データの検索」「検索結果の選定」「検索結果を加味した回答の生成」にフォーカスしたものである。

RAG記事図表1

出典:KPMG作成

※かっこ内の論点IDは本記事のダウンロード資料(rag-ai-03.pdf)と同一である。本記事では主要な論点のみに触れ、詳細はダウンロード資料にて補足しているため、併せて参照頂きたい。なお、「d」はデータ準備の論点、「a」はアプリケーションの論点を意味する。

  • プロンプトの意図に沿ったデータ検索の実行
    RAGではデータの検索結果を回答生成の入力として用いる。インターネットでの検索と同様、データ検索の結果およびLLMの回答が意図しないものであれば、ユーザーは言葉を変えて検索の試行を繰り返すことになり、最後には離脱してしまう。
    従って、当該ユースケースにおいて必要なデータが十分に準備されており(d1)、検索結果(順位)が適切に取得できること(d6、d7)が重要となる。

  • 回答の生成に必要な検索結果の選定
    取得したデータの検索結果はLLMに入力することになるが、その際の対象の選定方法(a1、a2)や件数(a3)も重要な論点である。
    例えば、過去の販売実績を参考に新しい製品・サービスの開発のポイントが知りたい場合、成功した1製品の情報だけでは不十分である。成功/失敗の別や、特徴の異なる製品の情報をインプットとして回答を生成させた方が、考察を深めるための回答を得ることになる。その点で、LLMに入力する件数、および単純なベクトル類似度の順位以外でのデータ選定は重要と言える。

  • 検索結果を反映した適切な回答の生成
    前段で適切なデータの選定がなされれば、残るはLLMが回答を生成するステップでの論点である。LLMに入力可能な文字数(トークン数)が少ない(d4、a4)場合、十分に検索結果を入力することができず、その結果、回答の質が下がってしまう可能性があるため注意が必要だ。
    また、入力されたデータを正しく解釈し、プロンプトに対して必要な情報を出力するにはモデルの「自力」が重要となる。評価手法を確立し、最適なモデルを選択したい(a5)。

    以降、IDの附番された各個別論点について掘り下げるが、理解のため各論点の在り処をデータ準備フロー・アプリケーションの処理フローと紐づけて図示しておく。

データの準備と論点の所在

RAG記事図表2

出典:KPMG作成

アプリケーションの処理と論点の所在

RAG記事図表3

出典:KPMG作成

2.詳細論点

「プロンプトの意図に沿ったデータ検索の実行」に関する論点

d1.ユースケースに適したデータの準備
質問への回答を行う際、知識=データが必須となることから、RAGにおいても「ユーザーの質問に回答するため」のデータ準備が重要となる。

RAGでは旧来のキーワード検索とは異なり、(1)ベクトル検索*を行い、(2)最終的な回答はLLMが行うため、それらを考慮したデータの準備を行うべきである。

*精度の向上を目的とした検索手法であり、単純なキーワード検索では実現できない同義語の解釈やコンテクストも加味した検索を可能とする。RAGで用いるデータ、および検索時に入力されたプロンプトを「方向と長さを持った多次元のベクトル」に置き換えることで、2つのベクトルの類似度を計算する手法を用いる。

d6.適切なベクトル次元数の選択
検索の際に用いるベクトルは、x・y・z軸の3次元程度のものではなく、数千以上もの高次元なベクトルになる。次元数は個々のデータの分類軸と考えることができ、一般的に多いほどデータの違いが解釈でき、検索の精度は高まるとされる。

次元数を増やすと検索の速度は低下するなどのトレードオフもあるため、バランスをみて調整したい。

適切なベクトル次元数の選択

出典:KPMG作成

お問合せ

d7.エンベディング精度の検証
学習データやモデルのアーキテクチャ等によりエンベディングの重み・パラメータに違いがあり、各モデルの出力するベクトル値は異なる。例えば、法律の分野について学習し、適切なエンベディングを行えるモデルが、医学分野のデータでは適切にエンベディングできないこともあり得る。

利用するエンベディングモデルが目的とするドメイン・ユースケースに適切であるかを確認し、選定する必要がある。

「回答の生成に必要な検索結果の選定」に関する論点

a1.ユースケースに適した類似度の算出

類似度の計算方法により、同じプロンプトに対しても検索結果の順位が異なるため、計算方法の選定は重要である。自社で想定するユースケースに応じて適切に選定する必要がある。

代表的な計算方法

代表的な計算方法

出典:KPMG作成

a2.類似度以外での検索結果のリランク
データ検索を行った結果は、調整前の段階ではベクトルの類似度順に並んでいるが、要件によってはリランクすることが望ましい場合がある。ブレインストーミングのように異なる観点からの回答・データの種類が欲しい場合、あえてばらつきを持たせるようなリランクの仕組みの導入も検討したい。

a3.LLMに入力するデータチャンク*数の決定
LLMに入力する検索結果は1件とは限らない。確実性を持たせるため、または多様性を持たせるために複数のデータを用いることも検討できるため、ユースケース・保持するデータの量/質に応じて調整する必要がある。

*Vector Storeに格納するデータの最小単位。1つのチャンクに対しベクトルが割り当てられることになる。

「検索結果を反映した適切な回答の生成」に関する論点

d4.適切なチャンクサイズの決定
チャンクはRAGで用いるデータ検索結果の最小単位となるため、そのサイズ設定が重要である。

サイズが大きすぎる場合、プロンプトとの関係性の低い内容を含む長文のテキストをLLMに参考情報として送ることになり、回答の精度が低下しやすい。
他方、サイズ小さすぎても必要なコンテクストが取得しきれず、不十分な回答になりかねない。

チャンクサイズは実利用における回答への要求水準を考慮した上で、検証・改善のサイクルを回すことが必要といえる。

a4.十分な文章量に対応できるモデルの選択
前述のとおり、RAGにおいてLLMに入力されるテキストはプロンプト+データの検索結果である。従って、プロンプトのみであれば文字数は限定的ではあるが、検索結果として入力されるデータチャンクのサイズ、および数によっては入力自体のトークン数は大きくなることから、モデルがサポートする上限トークン数に配慮する必要がある。

a5.検索結果の解釈・生成回答の評価手法の確立
LLM自体のパフォーマンスは、入力された検索結果の解釈、および回答の生成において極めて重要であるが、その評価をするためにも、大前提として評価手法が確立されている必要がある。
モデルの良し悪しを判定するためのテストケースとして「想定されるプロンプト」「期待される回答の水準」「参照すべきデータ」等を定義し、随時ケースを入れ替えつつ検証を行うことが望ましい。

上記をはじめとする論点について適切に精査し、LLMの回答を業務利用向けにカスタマイズすることで、概念実証の域を脱して業務利用・業務の高度化が実現可能となる。

監修

KPMGアドバイザリーライトハウス 中山 政行
あずさ監査法人 宇宿 哲平、近藤 聡

執筆

KPMGアドバイザリーライトハウス 清水 啓太
あずさ監査法人 井山 大輔、日野原 嵩士、中津留 和哉