コンテンツにスキップ

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 で事前にトークン化します:

  1. \w+ トークンを抽出、小文字化。
  2. 1 文字のトークンと小規模な英語ストップワードセットを破棄。
  3. 順序を保ちつつ重複排除。
  4. | で結合して 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 はライセンスを持つアドバイザーのふりをすることを拒否します。

関連項目