見出し画像

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化”の方法

僕が最終的に落ち着いたのは、この流れです:

  1. AdobeでPDFをWordに変換

  2. Word上で不要な改行・空白などを軽く整形

  3. GPTsに「チャンク化プロンプト」を渡して処理する

この方法でようやく、

  • 意味の通るチャンク

  • テーマごとの分類

  • 検索・ナレッジ化できる構造

が手に入ったわけです。
「完璧」じゃないけど、“そこそこ使える形”にはなったという実感があります。


もっと良い方法はきっとある。でも、遠回りには意味がある

正直、普段からRAGを扱っている人が見たら、
「いや、それ遠回りすぎでしょ」
「もっと簡単な方法あるよ」
って言われると思います。

自負なんてまったくありません。

でも、それでもこうして書き残しておきたいと思ったのは

「自分もやってみたい」と思った誰かが、少しでも楽になったらいいなと思ったからです。

これから個人がアプリやサービスを作れる様になるので、こういう人が増えると思ったからです。


おわりに:AIは魔法じゃない。でも、鍛えれば応えてくれる


私は素人です。
でも、プロンプトの精度を高めて、構造を整えて、AIとの対話を続けることで、ここまで来られました。

AIは魔法ではありません。
でも、向き合って、試行錯誤して、対話を重ねれば、必ず応えてくれる
それをこのプロセスの中で、実感することができました。


(補足)
ちなみに、今回用いたPDFファイルは画像PDFではなく、テキストベースのPDFです。それでもレイアウトがバラバラだったり、表やグラフがあったり、縦書きの文字があるだけで、これだけ大変でした。画像データのPDFだったら、もっともっとこの何倍も大変なんだと思います。
想像するだけで気分が落ちますが、必要ならやるしかありません。今はまだ必要ないですが、もしかしたら今後チャレンジすることになるかも知れません。その際はまた報告させていただきます。



最後まで読んでくれてありがとう!

気づきやアドバイス、「もっといい方法あるよ!」などあれば、ぜひ教えてください。
こうして、遠回りの記録が誰かにつながったら、それだけで報われます。


おすすめ記事(これまでの記事):

自己紹介:


いいなと思ったら応援しよう!