前回の記事では、生成AIを業務で利用可能な水準にするには知識の拡張が必要であることを述べ、その代表的な手法としてRAG(検索機能を拡張した生成:Retrieval-Augmented Generation)、Fine-Tuning、自社独自モデル開発の3つを紹介した。これら手法の中でもRAGは、その手軽さから多くの企業から注目されている。そこで、今回はRAGの基本的な仕組みを概説する。

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

1.RAGの概要

RAGとは、「LLM(大規模言語モデル)によるテキスト生成にデータ検索機能を付加したもの」である。検索機能を組み合わせることで、LLM単独では知識不足で回答できなかった質問に対しても、業務利用可能な水準に近づけることができる。人間に例えるならば、「勉強はしていないが教科書を持ち歩いているため、その場で教科書を読んだうえで回答ができる状態」だ。

  生成方法 結果
LLM単独 事前学習データのみを参照して質問への回答を生成 自社規約などに関する問い合わせには回答できない
LLM + 検索機能(RAG) 必要に応じて追加データを検索・参照したうえで回答を生成 自社規約などを検索して回答を生成することが可能

2.RAGの処理プロセス

RAGでは、LLMで回答を生成する前にVector Store(データをベクトル形式で格納することにより、意味的な類似度による柔軟かつ精度の高い検索が可能となるデータベース)でデータ検索を行い、取得した結果とユーザーの質問をセットにしてLLMに渡す。

ここではユーザーが「育児休暇を申請する手続きについて教えてください」と質問(以下、「プロンプト」。ここでは、AIに対する指示のことを指す)した場合を例に、RAGの処理プロセスをみていこう(図表)。

図表 RAGの処理プロセス

RAGの処理プロセス図表1

プロンプトが入力されると(1)、エージェントがユーザーの入力に基づいて次に実施すべき処理の判定を行い、ツールを動的に使い分けてタスクを処理する。ここではVector Storeに格納されているデータから「プロンプトとベクトルの類似度の高いデータ」の取得を行い(2)、結果として以下のようなデータを取得することになる(3)。

  • 人事マニュアル内の育児休暇申請手続きに関するリンク、説明文
  • 社内ポータルサイトからの申請フォームのリンク、記入ガイドのリンク・説明文
  • 社内掲示板やニューズレターからの育児休暇に関する最新の情報や変更点

取得したデータはLLMへの入力として使用されることから、RAGの処理プロセスの中でLLMが受け取る入力は以下のようになる。

 検索結果を参考にしてユーザーからの質問に回答して

--------

ユーザーからの質問:

育児休暇を申請する手続きについて教えてください。

検索結果:

”対象者 - 子供の出生日または養子縁組成立日からn日以内かつ・・・(省略) https:hr_guideline.corp-a.com/leave”

LLMにプロンプトと検索結果のデータを入力すると(4)、LLMは独自情報を含めた回答を生成し(5)、ユーザーに表示する(6)。

以上が、RAGによる知識の拡張の仕組みである。外部データベースを利用することで、LLMが学習していないデータを含んだ回答を比較的容易に生成し、回答の精度を高めることができる。

一方で、業務水準に適応させるまでには考慮すべき論点も多々ある。そこで、次回はKPMGアドバイザリーライトハウスでの検証実績も踏まえ、RAGの実務導入に向けた論点について議論する。

監修

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

執筆

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

お問合せ