HONGONIGHT#1_複雑なPDF文書に対するRAGをササっと構築する方法

1.3K Views

July 31, 25

スライド概要

HONGONIGHTS#1 登壇スライド

社内で生成AIを活用する上で必須になっているRAGについて、図や表を含む複雑なPDF文章に対するRAGをササっと実装するための手法であるVisual RAGについて紹介します!
作成者:佐藤大地(EpicAI チーフAIエンジニア)

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

複雑なPDF文書に対するRAGをササっと構築する方法 許諾なく撮影や第三者 への開示を禁止します

2.

自己紹介 名前 佐藤大地(さとう だいち) 所属 株式会社EpicAI 役職 AIエンジニア、PM 東京大学 理科一類 経歴 → 工学部 システム創成学科 Cコース → 東京大学大学院 情報理工学系研究科 修士2年 専門分野 ● Computer Vision ● NLP 2

3.

RAG(Retrieval-Augmented Generation, 検索拡張生成)とは ● ユーザーからの質問に対し、外部情報を参照してLLMが回答できるようにする仕組みのこと ● 回答の根拠となる部分を外部情報から検索して取得し、LLMに参照情報として入れることでこれを実現する ● メリット:LLMが訓練データに含んでいない情報にもアクセスできる RAGの概説 [1]

4.

今回考えるRAGのケース RAGの外部情報について ● RAGの外部情報として代表的なものはドキュメント ● 例)営業スライド資料、社内マニュアル、取扱説明書、工程図、研究論文 などなど ● ドキュメントの形式としてはPDFが一般的であり、その他のドキュメント形式(wordやpowerpointなど)も PDFに変換できるため、汎用的なドキュメント形式としてPDF形式のドキュメントを想定して話を進める ○ タスクによってはPDFに変換しない方が前処理しやすいケースもあるが、それはケースバイケースな 話なのでここでは扱わない ● 言語は英語ではなく日本語を想定 RAGの前処理 ● RAGの正答率を上げるためには、外部情報(外部データ)をLLMが理解しやすい形に前処理する必要がある ● PDFデータをどのように前処理するべきか考えてみる ○ ただし、PDFデータのレイアウトや構成は様々なので、簡単なケースから考えてみる

5.

PDFデータの前処理について考えてみる 簡単なケース:PDF内に図表や画像が全くなく、テキストのみ綺麗に書かれているケース OCRでテキスト抽出すればOK 簡単なPDFデータ [2] 抽出されたテキスト

6.

PDFデータの前処理について考えてみる 複雑なケース:視覚情報(画像や図表)とテキストが混在している場合はどうなるか? OCRでテキスト抽出するだけだと様々な問題が出てくる ● 視覚情報が無視されてしまう ● 図表中のテキストをOCRすると、意味不明な浮いたテキストが抽出されてしまう 複雑なPDFデータの例 [2]

7.

PDFデータの前処理について考えてみる 複雑なケース:視覚情報(画像や図表)とテキストが混在している場合はどうなるか? 一般的な対策:テキストと視覚情報を別々に抽出・処理する ● テキスト:OCRで抽出 ● 視覚情報:Azure Document Intelligence などの文書レイアウト解析モデルで図表を物体検出 & クロップする 図の検出に成功 表の検出に成功 Azure Document Intelligenceを適用した結果

8.

PDFデータの前処理について考えてみる 抽出したテキストと視覚情報をどう扱うかは自由(いろいろな方法がある) 代表的な3つの手法(マルチモーダルRAGが話題になった時に出た話) 1. 1. マルチモーダル埋め込みモデルを用いて視覚情報とテキストを同一空間に埋め込む ● 長所:マルチモーダル埋め込みモデルの性能が良ければ理論的にはうまくいく ● 短所:性能の良いマルチモーダル埋め込みモデルがないため実際はうまく行かない 視覚情報を説明する文章を生成し(=テキストに変換し)、そのテキストを用いて検索し、テキストをLLMに入力 ● 長所:視覚情報を入力できない純粋なLLMを利用できる(ただこれはVLMの性能が悪かった過去の話であり、 今はVLMの性能は高いのでこれは長所ではなくなった) ● 1. 短所:視覚情報をテキストに無理やり変換しているので検索時に情報量が欠落する 視覚情報を説明する文章を生成し(=テキストに変換し)、そのテキストを用いて検索し、テキストに対応する画 像をVLMに入力する ● 長所:視覚情報を画像のままVLMに入力できる ● 短所:視覚情報をテキストに無理やり変換しているので検索時に情報量が欠落する

9.

PDFデータの前処理について考えてみる その他にも以下のような議論がある ● 図表の処理の難しさ ○ ○ ● シンプルな図表であればテキストに綺麗に変換することが可能 ■ 表:Markdown記法やcsvなどでテキスト化が可能 ■ フローチャート:Mermaid記法でテキスト化が可能 しかし、複雑な図表は綺麗にテキスト化することが難しい ■ 表のセルの中に自然画像があるケース ■ 表のセルが複雑に結合されているケース ■ 表が複数ページに分割されているケース ■ デザインが高度なフローチャートはテキストで完全に再現することはできない テキストの構造化 ○ OCRしたテキストは文章の構造(見出し、本文など)が反映されていないため、それをMarkdown化すること でテキストを適切に構造化できる ○ しかしこれは手作業メインになるのでしんどい

10.

ここまでの結論と課題 PDFデータの前処理のここまでのまとめ ● 様々な手法を臨機応変に適切に使うことでLLMがある程度理解しやすい形に変換することは可能そう ● 実際、各企業もドキュメントの構造やドメインに沿って適切に泥臭い前処理をしてRAGを構築していると考えられる ● しかし、RAGを簡易的に作成したいケースでは実装が重すぎる 例)プリセールス、PoCの初期的なベースライン 本LTの本題:複雑なPDF文章に対するRAGをササっと実装するには? 答え:Visual RAGを実装しよう

11.

Visual RAGとは ● PDFをページ単位で画像化し、画像単位で検索し、ヒットした画像を参考情報としてVLMに入力する形式のRAG ● 長所:ページをそのまま画像化しているので、情報が欠落しない(それなのに実装が簡単) ● 短所:ページ画像を埋め込むモデルの性能が非常に良いとは言えない(今後に期待) ① ページ画像に変換 PDFデータ 類似度 ⑤ 参考画像と ユーザーからの 質問文をLLMに入力し 回答を得る 類似度 VLM 類似度 ④ 類似度上位K件の ページ画像を 参考画像として取得 ② ページ画像を 埋め込む ③ ユーザーからの 質問を埋め込む 質問: xxxxx 回答文

12.

Visual RAGの2つのモデル Visual RAGの実装には2つのモデルが必要 ● ● 埋め込みモデル ○ 文書画像とテキストを同一の空間に埋め込むモデル ○ 文書画像は自然画像と性質が大きく異なるため、文書画像にフォーカスして学習した埋め込みモデルが必要 ■ CLIP [3] のような旧来のマルチモーダル埋め込みモデルは使えない ■ ColPali [4] (ICLR 2025) を始めとしたColVisionモデルを使えばOK! 回答を生成するVLM ○ これは一般的なVLMを使えば良い ○ 昔と比べてVLMの性能が格段に向上し、文書画像を数枚入れても良くなったのも大きなポイント

13.

ColVisionモデルとは ● ColPaliやColQwenなどの文書画像−テキスト埋め込みモデルの総称 ○ ○ ● ColPali ■ ColVision系列の最初のモデル ■ PaliGemma-3Bをベースにしたモデルであるため、ColPaliと呼ばれる ■ しかし、ベースモデル(PaliGemma-3)の日本語能力が低いため、ColPaliは日本語には使えない ColQwen ■ ColPaliのベースモデルをQwen系に変えたモデル ■ Qwenは日本語能力が高いため、ColQwenも日本語能力が高い ■ 日本語のPDFに対してVisual RAGを実装するなら、ColQwenを使おう transformersライブラリと似たコードで利用できるので実装は簡単 ○ モデルはHuggingFaceで公開されている ■ HuggingFace: https://huggingface.co/vidore/collections ○ 関連ライブラリは pip install colpali-engine でインストール可能 ○ GitHub: https://github.com/illuin-tech/colpali

14.

ColVisionのサンプルコード

15.

Visual RAGを試してみる ● 24ページにわたる複雑なPDFデータに対して、質問に対応する適切なページを検索できるか検証してみる ● 質問:食事の文化に関して文化庁から表彰された人物は誰ですか? ● 結果:24ページ目が一番スコアが高くなった(これは正解) その他の ページ 24ページ目

16.

Visual RAGの課題 ● 埋め込みモデルの精度が低い ○ ColQwenの埋め込みモデルの精度が非常にいいとは言えない ○ QwenはOpenなモデルの中ではトップクラスに日本語性能は高いが、まだ改善の余地があるので、それをベース に学習したColQwenについても同様のことが言える ○ 文書画像は非常に情報量が多いため、それを効率よく埋め込むモデルを開発することは簡単ではない ■ ● まだまだ埋め込みモデルの性能を上げる余地がある ページ画像単位で検索するという理念自体は効率的で筋のいい手法であるため、今後埋め込みモデルの精度が上がるに つれてVisual RAGが広まっていくと予想している

17.

まとめ ● 複雑なPDFデータに対して簡易的にRAGを実装する手法 Visual RAGを紹介 ● 日本語でVisual RAGを構築するならColQwenを使おう ● 今後Visual RAGへの注目度は高まっていくと考えられる

18.

おまけ EpicAIは様々なポジションで積極採用中です! 詳細はこちらのQRコードから! Wantedly

19.

参考文献など [1] Gao, Yunfan, et al. "Retrieval-augmented generation for large language models: A survey." arXiv preprint arXiv:2312.10997 2.1 (2023). [2] Onami, Eri, et al. "JDocQA: Japanese document question answering dataset for generative language models." arXiv preprint arXiv:2403.19454 (2024). [3] Radford, Alec, et al. "Learning transferable visual models from natural language supervision." International conference on machine learning. PmLR, 2021. [4] Faysse, Manuel, et al. "Colpali: Efficient document retrieval with vision language models." arXiv preprint arXiv:2407.01449 (2024). このスライド中にあるPDFデータのスクリーンショット画像は、全てJDocQA [2] のPDFデータから取得したものです。したがって、そのスクリ ーンショット画像はCC-BY-SA 4.0ライセンスとなります。本スライドのそれ以外の部分についてはCC-BY-SA 4.0ライセンスとはなりません。