Hacker News の記事を知識源に、日本語で質問できる RAG チャットボット。 Notion に蓄積した記事だけを根拠にして、出典付きで回答します。
Hacker News の話題は量が多く、英語で、後から「あの記事なんだっけ」を探すのが大変です。 このツールは、自動収集して Notion に貯めた HN 記事を知識源にして、日本語で質問すると その記事群から関連箇所を検索して答えます。一般的なチャットAIと違い、手元に貯めた記事だけを 根拠にし、どの記事を見て答えたか(出典)を必ず表示するので、答えの裏取りができます。
- 日本語で質問 → 蓄積記事から検索 → 出典付きで回答
- 「それ」「さっきの」などの追い質問にも、文脈を踏まえて対応(クエリ書き換え)
- 出典(記事タイトル+類似度)を画面に表示。回答の根拠を確認できる
- 知識源にない質問には「資料には見つかりませんでした」と正直に答える(でっち上げを抑制)
- 埋め込み・検索はローカルで動作(ランニングコストを抑制)
| 役割 | 採用 | 理由 |
|---|---|---|
| 埋め込みモデル | cl-nagoya/ruri-v3-30m | 日本語特化。英語中心モデルでは日本語検索が外れたため切替 |
| ベクトルDB | ChromaDB | ローカルで完結、セットアップが軽い |
| 生成LLM | Claude Haiku 4.5 | 速くて安い。RAGの回答生成に十分 |
| UI | Streamlit | チャットUIを最小コードで構築できる |
| 知識源連携 | Notion API | 既存の記事蓄積をそのまま知識源にできる |
- 会話履歴を踏まえ、質問を「単体で意味が通る独立した質問」に書き換え(追い質問対応)
- 書き換えた質問をベクトル化し、ChromaDB から関連チャンクを top-5 取得
- 取得チャンクを資料として Claude に渡し、「資料だけを根拠に」回答を生成
- 出典(記事タイトル+類似度)はAIに書かせず、検索結果のメタデータから機械的に表示
- 出典をAIに書かせない:AIに出典を書かせると存在しない出典を作ることがある。 検索結果のメタデータからプログラムで出典を出すことで、でっち上げを原理的に防いでいる。
- クエリ書き換えは検索も回答も一本化:追い質問を書き換えた独立質問を、検索と回答の両方に使う (履歴を回答に渡さない)。検索した質問と答える質問がズレず、デバッグもしやすい。
# 1. ライブラリのインストール
pip install -r requirements.txt
# 2. .env を用意(このファイルは公開していません)
# ANTHROPIC_API_KEY=...
# NOTION_TOKEN=...
# 3. 知識源の取り込み(Notion → ベクトルDB)
python ingest_notion.py
# 4. チャットボットを起動
streamlit run app_notion.py- 知識源の取り込みは手動実行(
ingest_notion.py)。定期自動更新は未実装。 - 検索精度に改善余地あり(狙った記事が1位に来ないケースを確認済み。リランキング導入が次の課題)。
- ローカル前提(自分のPCで動かす構成)。
