前置知识: AI工程

代码库RAG与跨仓库语义搜索

00:00
3 min Advanced

2026年每个严肃工程组织都运行理解语义的内部代码搜索:tree-sitter解析、函数/类级分块、混合搜索(稠密+BM25)、重排序、带引用的回答。构建处理2M行代码跨10个仓库的系统,在每次git push时存活增量重新索引。

问题

到2026年每个前沿编码代理都配备代码库检索层,因为上下文窗口本身不能解决跨仓库问题。Claude的1M token上下文有帮助;它不消除对排序检索的需求。朴素余弦搜索在生成代码、monorepo重复和罕见导入符号长尾上毒害结果。生产答案是AST感知分块上的混合(稠密+BM25)搜索加重排序器,由符号引用图支持。

你通过索引真实舰队——不是一个教程仓库——来学习这一点,并测量MRR@10、引用忠实度和增量新鲜度。失败模式是基础设施性的:100k文件monorepo、触及一半文件的push、需要跨四个仓库才能正确回答的查询。

核心架构

摄取管线

  1. 克隆与解析。 Git clone + tree-sitter解析为AST。
  2. 分块。 函数级和类级分块,保留符号边界。
  3. 嵌入。 稠密嵌入(代码模型)+ BM25稀疏索引。
  4. 符号图。 构建跨仓库引用图(谁导入谁)。

混合检索

稠密搜索捕获语义相似性;BM25捕获精确token匹配。生产系统两者都运行并合并结果。重排序器(bge-reranker-v2-gemma风格)对合并候选重新排序。

增量索引

每次git push触发增量重新索引:仅重新解析变更文件更新影响嵌入更新符号。2M行代码完整重新索引需要小时;增量在秒级完成。

评估

MRR@10(前10结果中正确答案的倒数排名)、引用忠实(回答是否正确归属源代码)、增量新鲜push久新代码出现在搜索结果中)。

关键术语

术语常见说法实际含义
Hybrid search混合搜索”稠密+BM25组合检索
AST-aware chunking”AST感知分语法结构而非固定切分代码
Symbol graph符号图”跨仓库导入/引用关系
MRR@10”倒数排名前10结果中正确答案排名评估指标
Incremental re-index增量重新索引更新变更文件索引

延伸阅读

  • Sourcegraph Amp — 企业代码搜索
  • Cursor codebase answers — IDE集成代码搜索
  • Augment enterprise graph — 代码知识图谱

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式