跳到內容

RAG 整合搜尋

按下 Ctrl+K,工作區的所有作業痕跡都會匯集到單一搜尋框。即使詞彙不完全相符,也能以語意找出,而且嵌入全部在本機計算,因此程式碼不會外洩。

來源索引對象範例提問
code文字·程式碼檔案(40 種以上副檔名)「儲存密碼的函式」
db資料表·檢視表·索引·觸發程序·常式定義「加總訂單金額的檢視表」
git提交訊息·diff「上週修正編碼錯誤的提交」
chatAI 聊天對話內容「昨天問 AI 的部署方法」
work_event面板活動紀錄(開啟·編輯·執行查詢等)「最近開過的遷移檔案」
docMarkdown·文件檔案「API 認證程序文件」

不只是程式碼,連「上週那個資料表是怎麼改的?」這類作業脈絡也能搜尋。

一個查詢會同時分兩路執行。

  1. 向量搜尋 — sqlite-vec KNN。語意相近時,即使詞彙不同也能找到。
  2. 關鍵字搜尋 — FTS5 BM25。對精確的識別碼·錯誤訊息很強。

兩個結果以 RRF(Reciprocal Rank Fusion)融合決定最終排名。一方漏掉的結果由另一方補足,因此比單一方式持續地獲得更好的結果。deprecated / legacy / .bak 路徑會自動扣分。

若想進一步提升搜尋品質,可開啟重新排序器。

  • 由 cross-encoder 模型(bge-reranker-base,含韓文的多語言)將前 40 個候選與查詢 1:1 對照後重新排序。
  • 最新性權重 — 對最近 30 天的結果加分,超過 1 年的舊區塊則衰減。
  • 引用次數權重 — AI 回答中實際引用的次數越高,越會排到前面。

程式碼檔案不會單純每 N 行切割。透過 tree-sitter AST 解析在函式·類別·方法邊界分塊(預設 6 KB),搜尋結果就不會是「函式的半截」,而是完整的語意單位

支援語言分塊方式
Python · JavaScript · TypeScript · TSXtree-sitter AST
C# · Java · Go · Darttree-sitter AST
其他語言 · 超大型檔案行單位安全回退

嵌入模型以 transformers.js 為基礎,在應用程式內執行。無需 API 金鑰,也無需網路傳輸。首次使用時只下載一次模型,之後即使離線也能運作。

模型維度大小備註
multilingual-e5-small384約 110 MB預設值,快速
multilingual-e5-base768約 280 MB建議用於韓文 — 搜尋品質明顯提升
MiniLM · bge 系列38490~130 MB供以英文為主的專案,輕量
embeddinggemma-300m768約 600 MBBeta
  1. Ctrl+K 開啟整合搜尋框。

  2. 以自然語言輸入。

    儲存 SSH 密碼的部分
    上週修正的編碼錯誤
    在 orders 資料表新增 amount 欄位的提交
  3. 用來源篩選晶片(code · db · git · chat · work_event · doc)縮小範圍。

  4. 點選結果卡片會展開內容,按下 ▶ 按鈕會跳至原始檔案·位置。

AI 聊天在使用者傳送訊息前,會用 workspace_search 工具自動搜尋索引。將相關程式碼·過去對話·DB 結構描述作為脈絡取回,以提高回答的準確度。無需另外操作,引用的檔案會顯示在回答下方的 「參考:」 區段。

  • 偵測到儲存檔案DB 結構描述變更時,會在背景增量索引。
  • 模式選擇 — 在聊天設定中選擇 eco / balanced / fast,調整 CPU 使用量與反映速度的平衡。
  • 狀態儀表板 — 在聊天設定 → RAG 索引狀態 分頁中,即時確認各來源的區塊數與索引佇列。

自動尊重 .gitignore,下列路徑為預設排除。

node_modules/ .git/ dist/ build/

若需要額外排除,請在專案根目錄的 .termeditignore 檔案中填寫(gitignore 語法)。DB 物件以 [db] 區段中的 glob 模式排除。

# .termeditignore 範例
vendor/
*.generated.ts
coverage/
[db]
*.tmp_*
BACKUP_*

儲存模式後,已索引的相應區塊也會立即清理。

在老舊的工作區中若索引變得肥大,請使用儀表板的清理工具。

工具職責
Orphan Scan移除已刪除檔案的殘留區塊
Pattern Purge以路徑模式(例:dist/**)批次移除
Stale Cleanup清理長期未被引用的區塊
失敗重試重新處理索引失敗的項目

索引以各工作區的 SQLite 檔案(workspace.sqlite)儲存。移動工作區資料夾後會重新索引。

大小負擔不大。以 1 萬區塊為基準,向量資料約 15 MB。

搜尋框打不開 → 請使用 Ctrl+K。若輸入焦點與其他快速鍵衝突,請先點一下空白區域再重試。

沒有結果或結果奇怪 → 首次執行後立即,在模型載入·下載完成前,結果可能是空的。請在索引狀態儀表板確認進度。若雜訊多,請用 .termeditignore 排除不必要的路徑。

一直出現舊的結果 → 請執行索引狀態分頁 → Orphan Scan 或 Stale Cleanup。若剛變更模型,請等待重新索引完成。

變更嵌入模型後,既有的索引呢? → 變更模型後,既有索引會自動刪除並從頭重新索引。依專案規模可能需要數分鐘。

遠端(SSH/SFTP)資料夾也會被索引嗎? → 目前尚未支援。在遠端專案資料夾中,RAG 程式碼搜尋會停用,AI 會用 file_list_dir + file_read 工具直接探索。

AI 回答中程式碼引用錯誤 → 調整來源篩選,或用 .termeditignore 排除雜訊檔案,可改善引用品質。開啟重新排序選項後,相關性低的區塊會被往後排。


與其他功能搭配使用的方法,請參考 AI 聊天編輯器DB 用戶端 文件。