動作確認とトラブルシューティング
実際に動かしてみよう!
- コードを
app.pyとして保存 - ターミナルで実行:
streamlit run app.py - サイドバーでAPIキーを入力
- PDFをアップロード
- 「処理を開始」ボタンをクリック
- 処理が完了したら「Ask My PDF(s)」ページへ移動
- 検索キーワードを入力して検索!
よくあるトラブルと解決方法
「APIキーが無効です」というエラー
これはよくあるエラーです。以下を確認してください: - APIキーが正しくコピーされているか(前後に空白が入っていないか) - OpenAIのダッシュボードでAPIキーが有効になっているか - クレジットが残っているか(無料枠を使い切っていないか)
「PDFが読み込めません」というエラー
PDFには2種類あります: - テキストPDF:文字データが含まれている(こちらが必要) - 画像PDF:スキャンした画像だけ(これは読めません)
テキストが選択できるPDFか確認してください。スキャンPDFの場合は、OCRツールで先に文字認識する必要があります。
処理が遅い
大きなPDFだと処理に時間がかかります。最初は10ページ程度の小さなPDFで試してみてください。また、インターネット接続が遅いと、APIとの通信に時間がかかります。
コストについて(重要!)
OpenAI APIの料金(2025年9月時点): - Embedding: 1000トークンあたり約$0.00002(ほぼ無料) - 10ページのPDFで約1円程度
つまり、実験レベルならほとんどお金はかかりません。ただし、何百ものPDFを処理する場合は注意してください。
ベクトルDBに保存されたデータの確認
データが本当に保存されているか確認したいですよね。以下の方法で確認できます:
Pythonで確認する方法
# 別のPythonファイルで実行
from qdrant_client import QdrantClient
client = QdrantClient(path="./local_qdrant")
# コレクション情報を取得
info = client.get_collection("my_pdfs")
print(f"保存されたチャンク数: {info.points_count}")
# 実際に検索してみる
from openai import OpenAI
client_openai = OpenAI(api_key="your-api-key")
# 検索クエリ
query = "売上"
# クエリをEmbeddingに変換
response = client_openai.embeddings.create(
model="text-embedding-3-small",
input=[query]
)
query_embedding = response.data[0].embedding
# 検索実行
results = client.search(
collection_name="my_pdfs",
query_vector=query_embedding,
limit=3
)
# 結果表示
for result in results:
print(f"スコア: {result.score}")
print(f"テキスト: {result.payload['text'][:200]}...")
print("---")
ファイルシステムで確認
Qdrantはローカルにフォルダを作ってデータを保存します:
ls -la ./local_qdrant/
# collections/
# └── my_pdfs/
# ├── ... (いろんなファイル)
このフォルダがあれば、データが保存されている証拠です!
まとめ
非常に長い章になってしまいました。本当にお疲れ様でした!でも、ここまで来たあなたはすごいです。以下のことができるようになりました:
今回学んだこと
✅ Streamlitでマルチページアプリを作る方法 複数ページの切り替えができるアプリが作れるようになりました。これで複雑なアプリも作れます!
✅ PDFからテキストを抽出する方法 PyPDF2を使って、PDFの中身を取り出せるようになりました。これは色んな場面で役立ちます。
✅ 長いテキストを適切に分割する方法 tiktokenを使った正確なトークン計算で、最適なチャンク分割ができるようになりました。
✅ OpenAI Embeddings APIの使い方 文章を数値(ベクトル)に変換する方法を学びました。これがAIアプリの基礎です。
✅ Qdrantベクトルデータベースの基本 Embeddingを保存して検索できるデータベースの使い方を習得しました。
次回予告
次の章「PDFに質問しよう(後編)」では、いよいよ本格的な質問応答システムを作ります!
作る機能: - ChatGPT APIを使った回答生成 - 関連文書を使ったプロンプト作成 - ストリーミング応答(リアルタイムで回答が表示される!) - 会話履歴の管理 - より高度な検索機能
楽しみにしていてください!PDFに「この資料の要点を3つ教えて」とか「売上が最も高かった月は?」みたいな質問ができるようになります。
さらに学びたい人へ
チャレンジ問題: 1. 複数のPDFを同時にアップロードできるように改造してみよう 2. チャンクサイズを変更できるUIを追加してみよう 3. アップロード履歴を表示する機能を追加してみよう
参考リソース: - OpenAI公式ドキュメント - Streamlit公式ドキュメント - Qdrant公式ドキュメント
最後まで読んでくれてありがとうございます!プログラミングは「習うより慣れろ」です。エラーが出ても諦めずに、一つずつ解決していけば必ずできるようになります。
わからないことがあれば、エラーメッセージをそのままChatGPTに聞いてみるのも良い方法です。「このエラーが出たんだけど、どう直せばいい?」って聞けば、優しく教えてくれますよ。
次の章でお会いしましょう!頑張ってください!🚀