Claw チャット(RAG)¶
Claw は Claw ページのチャットインターフェースです。自由形式の質問——英語でも中国語でも——をすると、Claw は あなた自身の過去のシグナルを取得 し、OpenRouter 経由でルーティングされた Claude または Qwen クラスの LLM でそれらを合成して回答します。
現在のリトリーバル状態(2026-04-22)
以下のハイブリッドパイプラインは 半分稼働中 です:BM25 / Postgres 側は動作しており、Claw が現在質問に答えるのに使っているのはこれです。dense / ChromaDB 側は設計されリトリーバルコードに接続済みですが、embedding_worker.py はまだ TODO: Implement スタブです——つまりシグナルはまだ実際には埋め込まれておらず、dense リトリーバルはクエリごとに空リストを返します。したがって RRF 融合は当面 BM25 のみに degrade します。embedder の完成はフォローアップ作業として追跡中です。
リトリーバルパイプライン¶
あなたの質問
│
├────── dense search ──────► ChromaDB (計画中; embedder スタブ)
│ paraphrase-multilingual 埋め込み
│
└────── BM25 キーワード検索 ──► Postgres tsvector
クエリをトークン化 → "term1 | term2 | …" (OR マッチ)
summary_en + summary_zh + tickers 上で
│
▼
Reciprocal Rank Fusion (RRF, k=60)
│
▼
top-6 融合シグナル、RLS であなたのものにフィルタ
│
▼
プロンプト組立て → OpenRouter LLM → 回答
│
▼
rag_query_logs に行を書き込み
BM25 トークナイザー¶
ユーザークエリは自然言語文で届きます("Should I buy NVDA right now?")。Postgres の websearch_to_tsquery はデフォルトですべての単語を AND マッチするので、ほぼ何もヒットしません。rag/bm25_search._build_or_tsquery で事前にトークン化します:
\w+トークンを抽出、小文字化。- 1 文字のトークンと小規模な英語ストップワードセットを破棄。
- 順序を保ちつつ重複排除。
|で結合してto_tsqueryに渡す。
"Should I buy NVDA right now?" → "buy | nvda" → いずれかの単語に言及するすべてのシグナルにマッチし、ts_rank でランク付け。LLM が top-6 から関連サブセットを選びます。
取得されるもの¶
- あなた自身のシグナルのみ。 dense と lexical の両経路でユーザー分離を強制します——Chroma は
where={"user_id": ...}メタデータフィルタ経由、Postgres はダッシュボードを保護するのと同じ RLS ポリシー経由。誤って他ユーザーの履歴をクエリすることはできません。 - 連結ではなく融合。 dense リトリーバルは意味的パラフレーズを捕捉します(中国語の質問が英語のシグナルを見つける、"supply chain" が "downstream manufacturers" にマッチする、など)。BM25 は dense 埋め込みが逃しうる正確なティッカーや名前を捕捉します。RRF は非常に異なるスコアスケールを較正する必要なく 2 つのランク付きリストをマージします。
- バイリンガル。 embedder(
paraphrase-multilingual-MiniLM-L12-v2、384 次元)は英語と中国語の要約を同じ意味空間に配置するので、どちらの言語のクエリでも両言語のコンテンツを取得できます。
回答の見え方¶
Claw は以下のようにプロンプトされます:
- 使う事実には、取得シグナルにキーとなる括弧付き番号
[1]、[2]で引用する。 - 質問と同じ言語で返答する。
- リトリーバルが関連するものを何も返さなかったときは「シグナルがそれを支持しない」と言う——ハルシネーション詳細は出さない。
- リストが必要な質問でない限り、約 250 語未満に抑える。
すべての呼び出しは rag_query_logs に以下とともに記録されます:
- クエリテキストと回答
- 取得シグナル id のリスト
- top-1 コサイン類似度(リトリーバル品質のプロキシとして有用——0.30 未満は通常、質問がスコープ外であることを意味する)
- モデル名とレイテンシ
Claw が最も有用なとき¶
- 「なぜ NVDA は今日下落した?」 — 最近の NVDA タグ付きシグナルを引き出し、why ナラティブを合成。
- 「今週の FLASH シグナルをまとめて」 — ウィンドウ内の全 FLASH ティアシグナルを取得してロールアップを返す。
- 「中国の半導体政策状況はどうか?」 — まさに単一カードでは伝えきれないマルチシグナル、マルチエージェントの集計タイプ。
- 「最近 AI 芯片需求方面有什么信号?」 — 完全な中国語ラウンドトリップも動作。
そうでないとき¶
- 現在価格 / 見積。 Claw はシグナルを読み、ライブ市場データは読みません。ダッシュボードのインデックスバーや株式カードを使ってください。
- クロスユーザー集計。 RLS がセッションから他人のシグナルを隠します——Claw は「グローバル」ビューを持ちません。
- 助言。 Claw はライセンスを持つアドバイザーのふりをすることを拒否します。