マルチモーダルRAGとは何か
「HR Tech」「Marketing DX」「Operation DX」と、異なるDX領域で複数のSaaSを展開しているギブリー。2023年4月には、企業が安心・安全にChatGPTを利用できる法人向けGPTプラットフォーム「法人GAI」もリリースしており、認知度が高まっているところだ。
今回のテーマであるマルチモーダルRAGとは、そもそも何なのか。これを解説する前にRAGとは何かについて、鈴木氏は次のように語った。「日本語訳すると検索拡張生成。LLMだけでは足りないようなドキュメントや外部情報を取り込むことでハルシネーションを抑える効果がある」。
RAGの実装フローとしては、まず外部テキストをベクトル化してデータベースに入れておく。その後、実際にユーザーからクエリが入力されると、ベクトルの中で類似度の高いものとクエリそのものをインプットとして、GPT4(LLM)に入れ、アウトプットをユーザーに返す。
次に、マルチモーダルとは何か。これは、複数のデータ形式(ドキュメント・画像・動画・音声・表など)が混在している状態を指す。鈴木氏はマルチモーダルの例として、以下の図(出典:労働力調査の結果(総務省統計局))を示した。
これらを踏まえて、マルチモーダルRAGとは何かをフローで見ると、最初に外部テキストを取り込んでいたところに画像や表といったものが加わることで、インプットされる場所がGPT4からGPT4v(マルチモーダルLLM)へと置き換わる。
マルチモーダルRAGの構成要素は、「画像の特徴量抽出」「テキストの特徴量抽出」「OCR/Document Layout Analysis/Table to Text」「テキスト生成」「Open AIのモデル」となっている。
鈴木氏の解説を受け、「お客様から『PDFを読み込んで回答させたい』という依頼をよくいただくが、画像や表が多いものは精度が低いと感じていた。マルチモーダルRAGに対応できれば、こうした問題も解決できそうだ」と感想を述べた奥田氏。加えて、「構成要素を見てみると、昔からある技術も使われているようだが、マルチモーダルRAGの技術が発展してきた背景には、どんなブレイクスルーがあったのかを知りたい」と語り、次に話を進めた。
技術の積み重ねでたどり着いたマルチモーダルRAG
マルチモーダルRAGの歴史を語るにあたり、鈴木氏は、先に挙げた構成要素について、1つずつ歴史を振り返った。
画像の特徴量抽出
かつて画像の特徴量抽出は目視による手作業で行っていた。その後、2004年にSIFTが登場し、画像の特徴量(キーポイント)を抜き出せるようになった。2005年にはHOGが登場。これにより輪郭を特徴量として抜き出せるようになった。そして2012年のCNNによってディープラーニングの研究が盛んとなり、2020年にはGoogleのViT(Vision Transformer)が登場した。最後は2021年。Open AIの出したCLIPで画像とテキストが結びつき、マルチモーダルRAGの実現に大きく近づいた。
テキストの特徴量抽出
最初は1972年のtf-idfにまでさかのぼる。これは単語の頻出度合いによって、その重要度を測るものだが、この技術が応用されて1994年にBM25が登場する。さらにその後進展したディープラーニングの流れを受け、2013年にはベクトル化の技術を取り入れたWord2Vecが登場。そして2018年、GoogleのTransformerのエンコーダをベースにしたBERTへとつながった。
テキストの生成
2013年のディープラーニングのブレイクスルーによって知名度を上げたRNNだが、実はその歴史は古く、1986年に登場していた。とはいえ、アーキテクチャそのものは存在していたものの、メモリやコンピューティングのリソース不足から実現には至っていなかったようだ。1997年にはLSTMが登場。2013年NN、2017年Transformer、2021年CLIPへと続く。
Open AIのモデル
Open AIのモデルは、2018年GPT、2019年GPT-2、2020年GPT-3、2022年ChatGPTとエンベディングモデルのada-002、そして2023年GPT-4/GPT-4vという変遷してきた。
「これらのピースがすべてつながって、マルチモーダルRAGに結びついている」(鈴木氏)
マルチモーダルRAGを実現する2つの手法とは?
続いて、現時点でマルチモーダルRAGを実装しようとする際に、どのような方法があるのか、鈴木氏が解説する。
方法としては、LangChain+Unstructured+GPT4vの組み合わせから名付けられた「LUG」と、2023年11月にOpen AIが発表した「Assistants API」の2種類があるという。
LUGでは、PDFの中にある画像・テキスト・テーブルといった特徴量を抜き出すエンベディング化を実行するとともに、画像はそのままデータベースへ取り込み、インデックス化する。
インデックス化してデータベース化した後は、入力されたクエリに対して、データベースから類似度の高いものを抜き出し、インプットとしてGPT4vに入れ、アウトプットをユーザーに返すという流れだ。
他方、Assistants APIについては、PDFをAssistantというオブジェクトに入れるだけで完了する。ユーザーがクエリを投げると、Assistants APIに含まれる4つのオブジェクト(Assistant・Thread・Message・Run)が作用し合い、入力されたクエリと外部データを利用してアウトプットが返される仕組みだ。
LUGとAssistants APIの違いを聞いた奥田氏が、「それならばAssistants APIを使えばいいのではないかと短絡的に考えてしまうが……」と疑問を呈したところ、鈴木氏は「たしかに試す分にはAssistants APIのほうが簡単だが、プロダクトに実装するには、まだまだ多くの壁が残る」と見解を述べた。
鈴木氏がこのように語る理由は何なのか。実践しながら両者の精度を比較してみよう。
マルチモーダルRAGの評価指標としては、「画像完全抽出率」「回答GT類似度」「回答正解率」の3つがある。
- 画像完全抽出率:画像が見切れたりすることなく、正確に抽出できるかどうかの割合。ベクトル化やデータベース化が正しくできているか否かを測る。完全に正しい画像を抽出できれば1、見切れたりして不完全な場合は0として、問いの総数で割る。
- 回答GT類似度:アウトプットとして返された回答が、あらかじめ定義しておいたGT(Ground Truth)と、どれくらい類似しているかを測るもの。エンベディングモデルなどを用いて計測する。
- 回答正解率:生成された回答が、問いに対して適切かどうかを測った割合。正しく回答できれば1、間違っていた場合は0として、問いの総数で割る。
鈴木氏が実際に計測してみたところ、LUGの画像完全抽出率は、図30%、テーブル100%、全体約70%という結果が出た。
さらに、「2021年10月の就業者数は? 図3-1を参照してください」のように、参照先を明示することで、ある程度精度が上がることが分かっていたことから、回答GT類似度については、参照あり/なしでLUGとAssistants APIのそれぞれを比較したところ、次のような結果が出たという。
回答正解率はどうだろうか。こちらも参照あり/なしで比較したところ、いずれもAssistants APIのほうが高い精度をたたき出したが、参照ありにすることでAssistants APIの回答正答率は、40%から65%へと1.6倍にも跳ね上がった(下図参照)。
ここまでのLUGとAssistants APIの精度評価をまとめると、以下の表となる。
「高精度・低難易度であるAssistants API。だが、Assistants APIにはRate Limitがあるため、プロダクトへの実装を考えると、パフォーマンスの点でLUGに軍配が上がる」と鈴木氏は評した。
ギブリーの「法人GAI」には、ID管理・情報漏えい対策機能・学習未使用・利用状況把握・プロンプトレシピ・プロンプトテンプレート・RAGといった機能はすでに実装されている。さらにマルチモーダルRAGの実装に向けて、鋭意開発中だ。
「これまで100社を超える法人研修で利用されてきた実践的なカリキュラムを、専用のメタバース空間でオンライン受講できる。個人または3名以上の社員が参加できる法人が対象となっているため、興味のある方はぜひ受講のご検討を」と語り、奥田氏はセッションを締めくくった。