Jetbrains Blog
构建面向语义代码搜索的RAG流水线:开发者日志与实战笔记
JetBrains团队分享构建语义代码搜索RAG管线的经验,并推出JetBrains Context。第一部分聚焦解析、分块与向量化。传统关键词和grep搜索要求预先知道准确文本,难以适应抽象代码检索,因此需要按语义索引和检索。分块应结构感知,基于解析器将源文件拆成语法节点,保留足够上下文;支持Kotlin、Java、Python等九种语言,其他语言回退按行切分。分块经归一化后连同相对路径元数据嵌入,并用LLM作为评审评估分块质量。向量化阶段为控制大规模代码库的存储成本,采用二值量化保留全部维度,以Hamming距离比较;但二值量化会压缩相似度分布,不适合需要绝对相关性阈值的场景,此时保留16位浮点。索引与查询分别优化吞吐和延迟,路径过长时截断中间、保留首尾。隐私方面不存储源码内容,也不将数据用于训练,采用本地部署的开权重嵌入模型。后续将讨论存储、毫秒级查询、持续评估与智能体集成。