RAG 整合搜尋
按下 Ctrl+K,工作區的所有作業痕跡都會匯集到單一搜尋框。即使詞彙不完全相符,也能以語意找出,而且嵌入全部在本機計算,因此程式碼不會外洩。
6 個搜尋來源
Section titled “6 個搜尋來源”| 來源 | 索引對象 | 範例提問 |
|---|---|---|
code | 文字·程式碼檔案(40 種以上副檔名) | 「儲存密碼的函式」 |
db | 資料表·檢視表·索引·觸發程序·常式定義 | 「加總訂單金額的檢視表」 |
git | 提交訊息·diff | 「上週修正編碼錯誤的提交」 |
chat | AI 聊天對話內容 | 「昨天問 AI 的部署方法」 |
work_event | 面板活動紀錄(開啟·編輯·執行查詢等) | 「最近開過的遷移檔案」 |
doc | Markdown·文件檔案 | 「API 認證程序文件」 |
不只是程式碼,連「上週那個資料表是怎麼改的?」這類作業脈絡也能搜尋。
混合搜尋引擎
Section titled “混合搜尋引擎”一個查詢會同時分兩路執行。
- 向量搜尋 — sqlite-vec KNN。語意相近時,即使詞彙不同也能找到。
- 關鍵字搜尋 — FTS5 BM25。對精確的識別碼·錯誤訊息很強。
兩個結果以 RRF(Reciprocal Rank Fusion)融合決定最終排名。一方漏掉的結果由另一方補足,因此比單一方式持續地獲得更好的結果。deprecated / legacy / .bak 路徑會自動扣分。
重新排序(opt-in)
Section titled “重新排序(opt-in)”若想進一步提升搜尋品質,可開啟重新排序器。
- 由 cross-encoder 模型(
bge-reranker-base,含韓文的多語言)將前 40 個候選與查詢 1:1 對照後重新排序。 - 最新性權重 — 對最近 30 天的結果加分,超過 1 年的舊區塊則衰減。
- 引用次數權重 — AI 回答中實際引用的次數越高,越會排到前面。
懂程式碼的分塊
Section titled “懂程式碼的分塊”程式碼檔案不會單純每 N 行切割。透過 tree-sitter AST 解析在函式·類別·方法邊界分塊(預設 6 KB),搜尋結果就不會是「函式的半截」,而是完整的語意單位。
| 支援語言 | 分塊方式 |
|---|---|
| Python · JavaScript · TypeScript · TSX | tree-sitter AST |
| C# · Java · Go · Dart | tree-sitter AST |
| 其他語言 · 超大型檔案 | 行單位安全回退 |
本機嵌入模型
Section titled “本機嵌入模型”嵌入模型以 transformers.js 為基礎,在應用程式內執行。無需 API 金鑰,也無需網路傳輸。首次使用時只下載一次模型,之後即使離線也能運作。
| 模型 | 維度 | 大小 | 備註 |
|---|---|---|---|
multilingual-e5-small | 384 | 約 110 MB | 預設值,快速 |
multilingual-e5-base | 768 | 約 280 MB | 建議用於韓文 — 搜尋品質明顯提升 |
| MiniLM · bge 系列 | 384 | 90~130 MB | 供以英文為主的專案,輕量 |
embeddinggemma-300m | 768 | 約 600 MB | Beta |
-
按
Ctrl+K開啟整合搜尋框。 -
以自然語言輸入。
儲存 SSH 密碼的部分上週修正的編碼錯誤在 orders 資料表新增 amount 欄位的提交 -
用來源篩選晶片(code · db · git · chat · work_event · doc)縮小範圍。
-
點選結果卡片會展開內容,按下 ▶ 按鈕會跳至原始檔案·位置。
與 AI 聊天的自動連動
Section titled “與 AI 聊天的自動連動”AI 聊天在使用者傳送訊息前,會用 workspace_search 工具自動搜尋索引。將相關程式碼·過去對話·DB 結構描述作為脈絡取回,以提高回答的準確度。無需另外操作,引用的檔案會顯示在回答下方的 「參考:」 區段。
- 偵測到儲存檔案或 DB 結構描述變更時,會在背景增量索引。
- 模式選擇 — 在聊天設定中選擇
eco/balanced/fast,調整 CPU 使用量與反映速度的平衡。 - 狀態儀表板 — 在聊天設定 → RAG 索引狀態 分頁中,即時確認各來源的區塊數與索引佇列。
自動尊重 .gitignore,下列路徑為預設排除。
node_modules/ .git/ dist/ build/若需要額外排除,請在專案根目錄的 .termeditignore 檔案中填寫(gitignore 語法)。DB 物件以 [db] 區段中的 glob 模式排除。
# .termeditignore 範例vendor/*.generated.tscoverage/
[db]*.tmp_*BACKUP_*儲存模式後,已索引的相應區塊也會立即清理。
索引清理工具
Section titled “索引清理工具”在老舊的工作區中若索引變得肥大,請使用儀表板的清理工具。
| 工具 | 職責 |
|---|---|
| Orphan Scan | 移除已刪除檔案的殘留區塊 |
| Pattern Purge | 以路徑模式(例:dist/**)批次移除 |
| Stale Cleanup | 清理長期未被引用的區塊 |
| 失敗重試 | 重新處理索引失敗的項目 |
索引儲存位置 & 大小
Section titled “索引儲存位置 & 大小”索引以各工作區的 SQLite 檔案(workspace.sqlite)儲存。移動工作區資料夾後會重新索引。
大小負擔不大。以 1 萬區塊為基準,向量資料約 15 MB。
搜尋框打不開
→ 請使用 Ctrl+K。若輸入焦點與其他快速鍵衝突,請先點一下空白區域再重試。
沒有結果或結果奇怪
→ 首次執行後立即,在模型載入·下載完成前,結果可能是空的。請在索引狀態儀表板確認進度。若雜訊多,請用 .termeditignore 排除不必要的路徑。
一直出現舊的結果 → 請執行索引狀態分頁 → Orphan Scan 或 Stale Cleanup。若剛變更模型,請等待重新索引完成。
變更嵌入模型後,既有的索引呢? → 變更模型後,既有索引會自動刪除並從頭重新索引。依專案規模可能需要數分鐘。
遠端(SSH/SFTP)資料夾也會被索引嗎?
→ 目前尚未支援。在遠端專案資料夾中,RAG 程式碼搜尋會停用,AI 會用 file_list_dir + file_read 工具直接探索。
AI 回答中程式碼引用錯誤
→ 調整來源篩選,或用 .termeditignore 排除雜訊檔案,可改善引用品質。開啟重新排序選項後,相關性低的區塊會被往後排。