AIを使った社内ドキュメント検索のシステムで、よくRAGという言葉が使われています。
今回は初心者向けにそのRAGについて解説を行います!
1.はじめに・・
はじめに、LLMの弱点について振り返りましょう。
【初心者向けAI解説①!!】大規模言語モデルとモデルの種類についてで解説した通り、AI
は知らない情報に関する答えは生成できないため、知らない情報を補足情報としてAIに与えてあげる必要がります。
RAGとはこれを実現するためのアプローチ方法の1つです。
2.RAGとは
Retrieval-Augmented Generationの略で、それぞれ以下のような意味となります。
-
Retrieval
- 情報の検索(社内情報など)
-
Augmented
- 検索した結果で情報を補完
-
Generation
- 補完された情報で回答生成
つまり、LLMが学習していない情報を、予め検索できる状態(DB化など)にし、そこから質問内容に応じた適切な補足情報を検索し、その情報を使って回答生成することです。
RAG自体は概念的なものなので、具体的な実現方法もこの後解説致します。
3.Retrievalについて詳しく
検索対象でどんなデータ?
ユーザーのユースケースに応じて様々です。
ほんの一例をとしては以下のような感じです。
- 自社製品のカタログデータ → 顧客向けオペレーター業務
- 自社の社内規定データ → 自社社員向けのナレッジ共有
RAGで解決したい問題や業務に応じたデータが検索対象となります。
実行のトリガーは何?
どういうタイミングで検索が行われるのか?についてですが、大きく以下の2パターンとなります。
-
ルールベースによる制御
- ルール(条件)をあらかじめ定義しておき、ルールに応じた検索アクションを実行させる。
- IF文で実行条件を定義して、システムの設計者自身がコントロールしているイメージです。
- 特定のユースケースでしか使用しないケースなど、常に決まった情報の検索を行う場合に使われることがありますが、一般的には後述の「AIによる制御」を行う事が多いです。
-
AIによる制御
- AIにはどのような検索対象があるかなどの情報を与えておき、実行するかどうかはAI自身に判断させる方法です。質問内容に応じて必要と判断した検索処理が実行されるので非常に柔軟性が高くなります。
- 検索用の関数やAPIの仕様を定義して、それをAIが良い感じに実行してくれるイメージで良いです。
- Function Callingなどの仕組みが該当しますが、これについては別途記事を作成するのでそちらを見て下さい。
どうやって検索しているのか?
適切な情報の検索はどのように行われるのか解説します。
複数の検索手法が存在するため、今回は代表的なものを紹介します。
-
ベクター検索(Vector Search)
データをベクターと呼ばれる数値表現に変換し、ベクターデータ同士を比較することで類似度の高い情報を検索する手法です。例えば、Q&AデータのQをベクター化して、ベクター化した質問と比較してQと似た質問に対するAを検索することが出来ます。 -
キーワード検索(Keyword Search)
キーワードの部分一致や完全一致で検索を行う手法です。意味的な類似度を比較する訳ではないので、同じ意味で表現の異なる文章や表記ゆれには対応できません。 -
ハイブリッド検索(Hybrid Search)
ベクター検索とキーワード検索を組み合わせた手法です。 -
グラフベース検索(Graph-based Search)
データをグラフ構造で表現して、データ間の関係性を活用した検索手法です。
これを用いて構築されたRAGはGraph RAGとも表現されることがあります。
いろんな検索方法が存在しているため、何を選べばいいんだ?となると思います。
それについては、各検索方法をもっと深堀りし特性を理解する必要があるため、別記事で解説しようと思います。
以上です!
※掲載しているイラストはDALL-Eで作成したものです。