跳转到内容

RAG 通用检索

Ctrl+K,工作区的所有工作痕迹会汇聚到一个搜索框中。即使词语不完全一致也能按语义找到,嵌入全部在本地计算,因此代码不会外泄。

来源索引对象示例问题
code文本·代码文件(40 多种扩展名)“保存密码的函数”
db表·视图·索引·触发器·例程定义”汇总订单金额的视图”
git提交消息·diff”上周修复编码 bug 的提交”
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 年以上的旧 chunk 衰减。
  • 引用次数权重 —— 在 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 密码的部分
    上周修复的编码 bug
    给 orders 表添加 amount 列的提交
  3. 用来源过滤 chip(code · db · git · chat · work_event · doc)缩小范围。

  4. 点击结果卡片会展开内容,按 ▶ 按钮 会跳转到原始文件·位置。

AI 聊天 会在用户发送消息前用 workspace_search 工具自动检索索引。它会将相关代码·过往对话·DB 架构作为上下文带入,提高回答的准确度。无需额外操作,被引用的文件会显示在回答下方的 “参考:” 区域。

  • 检测到 文件保存DB 架构变更 时,会在后台增量索引。
  • 模式选择 —— 在聊天设置中从 eco / balanced / fast 中选择,以调节 CPU 使用率与反映速度的平衡。
  • 状态仪表盘 —— 在聊天设置 → RAG 索引状态 标签中实时查看各来源的 chunk 数和索引队列。

自动尊重 .gitignore,以下路径默认排除。

node_modules/ .git/ dist/ build/

若需额外排除,可在项目根的 .termeditignore 文件中写入(gitignore 语法)。DB 对象在 [db] 区段中用 glob 模式排除。

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

保存模式后,已索引的对应 chunk 也会立即清理。

旧工作区中索引臃肿时,请使用仪表盘的清理工具。

工具作用
Orphan Scan移除已删除文件的残留 chunk
Pattern Purge按路径模式(如 dist/**)批量移除
Stale Cleanup整理长期未被引用的 chunk
失败重试重新处理索引失败的条目

索引以各工作区的 SQLite 文件(workspace.sqlite)保存。移动工作区文件夹后会重新索引。

大小不会造成负担。以 1 万 chunk 计,向量数据约 15 MB。

搜索框打不开 → 请使用 Ctrl+K。若输入焦点与其他快捷键冲突,请先点击一次空白区域再重试。

没有结果或结果异常 → 首次运行后,在模型加载·下载完成前结果可能为空。请在索引状态仪表盘中查看进度。若噪声较多,请用 .termeditignore 排除不必要的路径。

总是出现旧结果 → 在索引状态标签 → 运行 Orphan Scan 或 Stale Cleanup。若刚更换模型,请等待重新索引完成。

更换嵌入模型后既有索引怎么办? → 更换模型后既有索引会自动删除并从头重新索引。视项目规模可能需要数分钟。

远程(SSH/SFTP)文件夹也会被索引吗? → 暂不支持。在远程项目文件夹中 RAG 代码检索会被禁用,AI 会用 file_list_dir + file_read 工具直接探索。

AI 回答中引用了错误的代码 → 调整来源过滤,或用 .termeditignore 排除噪声文件,引用质量会改善。开启重排选项后,相关性低的 chunk 会被挤后。


与其他功能配合使用的方法,请参阅 AI 聊天编辑器DB 客户端 文档。