Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HN記事RAGチャットボット

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 既存の記事蓄積をそのまま知識源にできる

仕組み(質問が来てから回答まで)

  1. 会話履歴を踏まえ、質問を「単体で意味が通る独立した質問」に書き換え(追い質問対応)
  2. 書き換えた質問をベクトル化し、ChromaDB から関連チャンクを top-5 取得
  3. 取得チャンクを資料として Claude に渡し、「資料だけを根拠に」回答を生成
  4. 出典(記事タイトル+類似度)は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で動かす構成)。

About

Hacker News記事を知識源にした日本語RAGチャットボット

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages