【要約】『どのPDFの何ページ目?』をAIが自動で答えてくれる社内Q&Aアプリを独学で作った話【ChromaDB×Gemini】 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、社内マニュアル(主にPDF形式)をAIに読み込ませ、正確な回答を得る仕組みを作ろうとした際に、以下の課題に直面した。
- ・PDFは描画命令の集合であり、単純なテキスト抽出が困難である。
- ・固定長での分割では、意味のまとまりが分断され検索精度が落ちる。
- ・ChromaDBで日本語を扱う際、デフォルトモデルによる上書きが発生する。
- ・スキャンされた画像形式のPDFでは、文字情報が取得できない。
// Approach
開発者は、情報の検索精度と出典の明示性を両立させるため、以下の手法を採用した。
- ・pypdfを用いてPDFからテキストを抽出する。
- ・見出し行に基づいたセクション単位のチャンキングを行う。
- ・ファイル名とページ番号をメタデータとしてChromaDBに登録する。
- ・EmbeddingとDocumentを同時に渡すことで、ChromaDBの仕様問題を回避する。
- ・Streamlitを用いて、チャットUIと出典表示機能を実装する。
// Result
開発者は、ユーザーが質問に対し、根拠となる資料を即座に特定できるアプリを実現した。
- ・複数ファイルの横断検索が可能となった。
- ・回答と同時に出典(ファイル名・ページ番号)を表示できる。
- ・プロンプト変更により、業務用途への転用が容易となった。
- ・新しいファイルをフォルダに置くだけで、DB更新が可能となった。
Senior Engineer Insight
> プロトタイプとしては極めて実戦的である。特にメタデータの活用と、ファイル形式に応じたチャンキング戦略の使い分けは、検索精度を左右する重要な視点だ。ただし、本番運用ではインメモリDBの揮発性に留意せよ。Cloud Run等のサーバーレス環境では、データが消失する。スケーラビリティと永続性を確保するには、Vertex AI Vector Search等のマネージドサービスへの移行が必須となる。