RAG完成編1 ~ 概要 | SkillhubAI(スキルハブエーアイ)

RAG完成編1 ~ 概要

序章

前編では、PDFからテキストを取り出して、Embeddingを作成し、ベクトルDB(Qdrant)に保存するところまで進めました。 ここまでできていれば、「関連する内容を探す」準備は整っています。 後編では、この検索結果をうまく使って質問に答える機能(RAG)を完成させていきます。LangChainは使わず、やさしい実装で一歩ずつ組み立てます。

RAG(Retrieval-Augmented Generation) 検索(Retrieval)で見つけた文脈をプロンプトに加えて(Augmented)、LLMに答えを作ってもらう(Generation)手法です。


完成イメージ

[質問] → (Embedding化)
           ↓
       [Qdrantで検索] → 類似チャンク(文脈)
           ↓
     (文脈をプロンプトへ)
           ↓
        [LLMが回答生成]
           ↓
[回答] と [参照した文脈] を画面に表示

  • 検索で見つけた「関連チャンク」をプロンプトに入れて、ChatGPTに答えてもらいます。
  • 回答と一緒に参照した文脈(根拠)も表示して、納得感を大切にします。

この後編でできるようになること

  • RAGの完成:PDFに基づいて質問に答えるアプリを仕上げる
  • 根拠表示:回答と一緒に参照チャンクも見られるUI
  • UIの改善:見やすく、使いやすい回答画面
  • 共有対応(任意):Qdrant CloudでベクトルDBをクラウド化

事前準備(前編の確認)

  • 次のライブラリが導入済み:streamlit, PyPDF2, openai, qdrant-client, tiktoken
  • 前編のアプリで、PDFアップロード → テキスト抽出 → チャンク分割 → Embedding作成 → Qdrant保存 ができる
  • 「Ask My PDF(s)」で類似チャンクの検索が動く
  • OpenAI APIキーを設定済み(サイドバーから入力)

この状態であれば、後編の実装にそのまま進めます。


目次(この後の流れ)

レッスン1(いまここ):序章と目次

  • 前編の振り返り
  • RAGの全体像
  • 目標と進め方の確認

レッスン2:検索結果を“答え”につなぐ(最小実装)

  • 類似チャンクをまとめてプロンプトを組み立てる
  • ChatGPTを呼び出して回答を生成する
  • まずは動く最小構成(MVP)を完成

レッスン3:UIを整える(回答+根拠の見やすさ)

  • 回答表示の体裁を整える
  • 参照チャンク(スコア付き)を折りたたみで表示
  • 「分からないときは分からない」と伝えるプロンプト方針

レッスン4:精度のチューニング

  • top_k など基本パラメータの考え方
  • PDFが大きい/薄い場合の扱い
  • うまくいかないときのチェックリスト

レッスン5(応用):Qdrant Cloudで共有

  • ローカルのQdrantからクラウドQdrantへ切り替え
  • 環境変数でのAPIキー管理
  • チームで同じ知識ベースを使う

レッスン6:まとめと次の一歩

  • 実装の振り返り
  • 会話履歴を生かした対話型QAへの拡張
  • LangChain版との違いと使い分け

ミニ用語集(やさしい言い換え)

  • Embedding:文章の意味を数字の並び(ベクトル)にしたもの
  • ベクトルDB(Qdrant):似ている文章をすばやく見つけるための専用データベース
  • チャンク:長い文章を扱いやすく分けた小さな断片
  • RAG:検索した文脈を足がかりに、LLMが答えを作る方法

大切にする方針

  • 無理に答えを作らない:不明なときは「分かりません」と返す
  • 根拠を添える:回答と一緒に参照チャンクを表示
  • 小さく作って試す:まずは最小構成で体験を完成させる
  • 安全に運用:APIキーなどは環境変数で管理

次回予告(レッスン2)

既存の search_similar_chunks() を活かしながら、 プロンプトの組み立て → ChatGPT呼び出し → 回答+参照表示 までをつなげます。 ここを越えると、「検索ツール」から「質問に答えるアプリ」へしっかりと形になります。