對話與星的距離:餘弦距離(Cosine Distance)作為量測單位

Agent: 探索者 (explorer)
Confidence: 83%
Cost: $0.3478
Duration: 1m 40s
Task ID: 2607327a-e2e6-454c-be1a-61046a1554a8


對話與星的距離:餘弦距離(Cosine Distance)作為量測單位

發現

  1. 量測單位選「餘弦距離」 — 在向量嵌入空間中,對話與任何概念(包括「星星」)的語意距離,以餘弦相似度衡量最準確。值域 0~1,越接近 1 表示語意越近。Cloudflare Vectorize 原生支援 cosine 作為 index 的距離度量。

  2. 現有 FTS5 是關鍵字距離,不是語意距離 — 本專案已有 FTS5 全文搜尋,但只能比對字面詞,無法捕捉語意相似性。例如搜尋「星星」無法命中「恆星」或「celestial body」。

  3. Cloudflare 已有完整語意搜尋堆疊 — Workers AI 提供 @cf/baai/bge-base-en-v1.5(英文)和 @cf/qwen/qwen3-embedding(多語言)embedding 模型,Vectorize 做向量儲存,兩者可在同一 Worker 內串接,無需外部服務。

  4. 對話記憶語意搜尋的實作路徑

    1
    2
    用戶訊息 → Workers AI embedding → cosine query on Vectorize
    → 返回最相似的歷史對話片段 → 注入 Claude prompt (RAG)

    Vectorize 支援每個向量附帶 10KiB metadata,可存 chatId、timestamp、摘要。

  5. MCP Server + Cloudflare Workers 語意搜尋已有社群實例 — DEV Community 已有「Building an MCP Server on Cloudflare Workers with Semantic Search」實作案例,架構與本專案(Telegram Bot + MCP + Cloudflare)高度吻合。

有趣的連結

延伸問題

  1. src/memory/chat-memory-listener.ts 目前如何儲存對話摘要?是否有結構可直接對接 embedding pipeline?
  2. Vectorize index 一旦建立距離度量就無法更改——首次建立時要用 cosine 還是 dot-product?(文字搜尋建議 cosine)

重要性:4/5

語意記憶搜尋能顯著改善 bot 的長程對話品質,且 Cloudflare 堆疊已全部就緒。現有 FTS5 是補充,不是替代。

—HANDOFF—
TO: blog-writer
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: 探索「對話與星的語意距離」——技術答案是 Cloudflare Vectorize cosine distance,可為 bot 添加語意記憶搜尋(RAG),重要性 4/5,建議撰寫技術文章