混合检索 + 依赖图扩展优于仅嵌入的代码 RAG——可测量、CI 门控

Reddit r/AI_Agents 工具

摘要

Archex 是一款新的开源代码 RAG 工具,通过结合混合搜索(BM25F + 密集嵌入)、交叉编码器重排序和依赖图扩展来改进检索,与纯基于嵌入的方法相比,实现了更高的召回率和令牌效率。

大多数“与你的代码库对话”的工具都是纯向量搜索:嵌入代码片段,按余弦相似度返回 top-k。对于代码来说,这遗漏了很多信息,而且我有数据支持。`archex` 不是仅仅搜索上下文,而是组装上下文。流程如下: 1. **混合检索** — BM25F(词汇) + 密集向量,通过互惠排名融合进行融合。词汇匹配捕获嵌入遗漏的精确符号/标识符匹配;密集匹配捕获语义短语。由于查询集不重叠,融合严格有助于提升(与 CodeRAG-Bench 一致,arXiv 2406.20906)。 2. **本地交叉编码器重排序**,对融合后的候选项进行重排。 3. **依赖图扩展** — 拉入导入链邻居,使得上下文包是依赖封闭的。代理无需手动追踪导入。 4. **上下文组装** — 文件多样性打包,嵌套行范围抑制,生产代码优先于测试代码排序,全部在令牌预算内。输出是一个完整的上下文包,而不是一堆命中结果。 与 cocoindex-code(仅嵌入)相比的结果,在 19 个外部仓库任务上,相同的令牌计数: - 召回率 0.95 vs 0.32 - 精确率 0.51 vs 0.36 - F1 分数 0.66 vs 0.31 - 令牌效率 0.76 vs 0.48 - 完成惩罚令牌(代理完成任务所需的令牌):922 vs 11,188 真正的基准不是另一个索引,而是 grep:召回率 1.00,令牌效率 0.00。这里检索的全部意义在于,用稀疏的令牌获得接近 grep 的召回率。一切都是确定性的,门控在 CI 中运行——测试框架在仓库中,因此你可以复现表格。Apache 2.0,我的项目,alpha 阶段。
查看原文

相似文章

ContextRAG:面向检索增强生成的无抽取层次图构建

arXiv cs.CL

ContextRAG引入了一种无抽取方法,用于构建面向检索增强生成的层次图索引。该方法利用残差量化K均值(Residual-Quantization K-Means)和形式概念分析(Formal Concept Analysis),将大语言模型(LLM)调用和Token数量减少数个数量级,同时在多跳问题上保持具有竞争力的F1分数。

介绍上下文检索

Anthropic Engineering

Anthropic 推出了上下文检索,这是一种结合了上下文嵌入和 BM25 的技术,通过减少检索失败的情况,显著提高了 RAG 的准确性。

Q-RAG:通过基于价值的 Embedder 训练实现长上下文多步检索

Hugging Face Daily Papers

Q-RAG 引入了一种基于强化学习的 Embedder 模型微调方法,以实现高效的多步检索,并在长达 10M token 的长上下文基准测试中取得了最先进的结果。该方法为微调小型 LLM 以处理复杂的多步搜索任务提供了一种资源高效的替代方案。

RAG-Anything:全能型 RAG 框架

Papers with Code Trending

RAG-Anything 是一个全新的开源框架,通过整合跨模态关系和语义匹配来增强多模态知识检索,在复杂的基准测试中表现优于现有方法。