PDFをRAG化するまでの遠い道のり
〜AI初心者がGPTと試行錯誤してたどり着いた、“そこそこ正解”への記録〜
はじめに:RAGってなんだ?からの挑戦スタート
生成AIをビジネス活用したい──。
そんな思いで、AIを使って企業向けのSaaSビジネスを作ろうとしたとき、僕が最初にぶつかったのが「PDFの読み込み精度の低さ」でした。
背景:
当初、私はWEB上にある有用な情報を拾ってきて、それをAIに分析すれば、すごい提案ができそうという今思えば浅い考えを持っていました。
けれども実際は違いました。
そのままAIに問いを投げても、一般的な答えしか得ることはできずに、有用な答えにはならない。
なんとか「AIに有用な提案をさせたい」
そんな私がたどり着いたのが、RAG(Retrieval-Augmented Generation)という考え方でした。
RAGとは、簡単にいえば「AIに”自前の情報を”読み込ませて、その状況だけに最適化された回答を引き出す」技術。
でも、それを実現するための第一歩=「PDFのRAG化」が、とんでもなく大変だったのです。
最初の失敗:「AIにPDFを投げればいいじゃん」で大崩れ
最初は単純でした。
PDFを、ChatGPTにそのまま貼り付けて、「要約して」と指示。
でも……
セクションはバラバラ
表の情報は飛ばされ
順序もぐちゃぐちゃ
一見、良さそうでしたが、元のファイルと比べると要約というには、ほど遠いものでした。
これじゃまともな情報にならない。
DeepResearchなどを用いても同じでした。chatGPT,perplexity,claude,gemini ・・・何やってもダメでした。
当たり前だろう!と言われると思いますが、その時の私は、そんな知識すらなく、色々やってみて分かりました。
「人間にとっての“読みやすさ”と、AIにとっての“読みやすさ”は違うんだな」と痛感しました。
次のステップ:プロンプト設計をAIに助けてもらう
それなら……と次に試したのは、プロンプトの設計です。
手がかりにしたのは、OpenAIが出しているプロンプト設計ホワイトペーパー。
そこに書かれていたのは、構造化、明示性、期待される出力の指示などの重要性。
ただ、いちいちそれを参考にプロンプトを書くのは面倒だし難しすぎる。
そこで私は、「プロンプトを作るためのプロンプト」をGPTに書かせるという、ちょっと変わったやり方をしてみました。
「OpenAIのホワイトペーパーを参考にして、PDFをチャンク化するための良いプロンプトを作ってください」
すると、かなりそれっぽいプロンプトを出してくれた。
そのプロンプトでRAG化を試して、ダメだったところを修正してということを繰り返しました。
何度も何度も試行錯誤を繰り返しました。
表は飛ばして
段落はつながるように
小見出しごとに意味を分けて
文脈を壊さないように
チャンクは1チャンク500文字程度で
メタデータもつけて
……と、要求はどんどん増え、プロンプトはめちゃくちゃ長くなっていきました。
でも、精度もどんどん良くなっていった。
「ちゃんと設計すれば、AIはちゃんと応えてくれるんだ」
と思えた瞬間でした。
自動化にも挑戦:MAKE × Dify × PDF.coは断念
次に私がやったのはこれです。
RAG化したいファイルは沢山ある = 手作業でやるのは限界がある
なんとか自動化できないか・・・・
そう思って、MAKE(旧Integromat)を使った自動化にも挑戦しました。
構成としては:
Google DriveにPDFを保存
MAKEがトリガーを検知
PDF.coでテキスト化
Difyへ送信してチャンク化&登録!
……という夢のワークフロー。
でもここで問題が。
PDF.coの処理コストが高く、時間もかかる
1回の処理で○千円かかりました。。。。(涙)
DifyやMAKEの最新UI/仕様にGPTが追いついておらず、GPTの答えが全く的外れ・・・・そのため
設定が進まない
エラーが出てもGPTがフォローできない
結局、初心者には対応しきれない仕様変更の壁にぶつかり、断念しました。
Adobeにも頼ってみた。でも完璧じゃなかった
もうお金で時間を買おう
そう思って、
次に試したのが、Adobe Acrobat Pro。
テキスト化ができるのかと思ったら出来ませんでした。
できるのは
リッチテキスト化、パワポ、エクセル、ワード、JPEG、JSON、・・・
最初に「リッチテキスト化」してGPTに渡してみたのですが──
これは見た目は綺麗でも、AIには逆に読みにくかったようで、うまく認識してくれませんでした。
じゃあ「Excelに変換して構造を再現しよう!」と思ってやってみたら……
これが最悪。文章の構造が崩壊してしまい、意味の通る形にはなりませんでした。
最終的に、辿り着いたのは「Wordに変換」して整形するという方法。
これは意外とうまくいきました。
結局たどり着いた“そこそこ良いRAG化”の方法
僕が最終的に落ち着いたのは、この流れです:
AdobeでPDFをWordに変換
Word上で不要な改行・空白などを軽く整形
GPTsに「チャンク化プロンプト」を渡して処理する
この方法でようやく、
意味の通るチャンク
テーマごとの分類
検索・ナレッジ化できる構造
が手に入ったわけです。
「完璧」じゃないけど、“そこそこ使える形”にはなったという実感があります。
もっと良い方法はきっとある。でも、遠回りには意味がある
正直、普段からRAGを扱っている人が見たら、
「いや、それ遠回りすぎでしょ」
「もっと簡単な方法あるよ」
って言われると思います。
自負なんてまったくありません。
でも、それでもこうして書き残しておきたいと思ったのは
「自分もやってみたい」と思った誰かが、少しでも楽になったらいいなと思ったからです。
これから個人がアプリやサービスを作れる様になるので、こういう人が増えると思ったからです。
おわりに:AIは魔法じゃない。でも、鍛えれば応えてくれる
私は素人です。
でも、プロンプトの精度を高めて、構造を整えて、AIとの対話を続けることで、ここまで来られました。
AIは魔法ではありません。
でも、向き合って、試行錯誤して、対話を重ねれば、必ず応えてくれる。
それをこのプロセスの中で、実感することができました。
(補足)
ちなみに、今回用いたPDFファイルは画像PDFではなく、テキストベースのPDFです。それでもレイアウトがバラバラだったり、表やグラフがあったり、縦書きの文字があるだけで、これだけ大変でした。画像データのPDFだったら、もっともっとこの何倍も大変なんだと思います。
想像するだけで気分が落ちますが、必要ならやるしかありません。今はまだ必要ないですが、もしかしたら今後チャレンジすることになるかも知れません。その際はまた報告させていただきます。
最後まで読んでくれてありがとう!
気づきやアドバイス、「もっといい方法あるよ!」などあれば、ぜひ教えてください。
こうして、遠回りの記録が誰かにつながったら、それだけで報われます。
おすすめ記事(これまでの記事):
自己紹介:
