RAG for 开发者 — 为代码而建,而非仅限文本(请求审阅)
发布: (2025年12月14日 GMT+8 05:42)
3 min read
原文: Dev.to
Source: Dev.to

面向代码的 RAG 工具 — 征求开发者反馈
我们一直在构建一个 code‑first 的 RAG 工具,它真正理解代码库的工作方式,而不仅仅是文本在嵌入空间中的外观。目标很简单:当你提出问题时,返回正确的函数、相关调用以及支撑代码,而不是随机的相邻片段。
内容概览
- 基于 AST 的代码分块,使用 Tree‑sitter(支持 Python、JavaScript、TypeScript)
- 显式提取 函数、类、导入、调用、文档字符串
- 干净的异步摄取流水线,严格遵循 工具 → 代理 → 存储 边界
- 语义向量检索 作为起点,而非终点
- 内存中的依赖图扩展
- 从块元数据懒惰构建
- 无持久化、无全局变量、无后端捷径
- 稳定的限定 ID(
file::entity) - 通过 BFS 在调用和导入上进行 上下文扩展,拉取真正关联的代码
- 后端无关的向量存储层,存储方式可更换而无需重写逻辑
为什么我们认为这很有用
- 获得相关的代码路径,而不仅仅是相似的文本
- 上下文保持小巧、相关且易于调试
- 架构避免隐藏状态和扩展时的意外
我们希望得到的反馈
如果你曾在大型仓库或构建 RAG 系统的过程中有经验,期待你的想法:
- “图作为派生状态” 的设计
- 块元数据的选择(调用、导入、QID)
- 检索 + 扩展流程
- 任何你认为在真实生产代码库中会出现的边缘情况
即使是快速的感受或直觉判断也非常欢迎。