🤖 AI
Beyond Retrieval: A Multitask Benchmark and Model for Code Search
本文介绍了\textsc{CoREB},这是一个受污染限制的、多任务基准测试以及一个经过微调的重排序器,旨在评估完整的代码搜索流程,结果表明现有模型在处理现实中的简短查询时表现不佳,而只有其专用的重排序器在文本到代码、代码到文本以及代码到代码任务中均实现了持续改进。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在一座庞大而混乱的图书馆中寻找一份特定的食谱。你并不想要任何一本书;你想要的是那本确切能解决你饥饿问题的书。这正是代码搜索为程序员所做的:它帮助他们找到解决特定问题的正确代码片段。
然而,这篇论文的作者认为,我们目前用来评估这些搜索引擎好坏的“测试”已经失效了。这就像在平坦空旷的停车场上测试一辆赛车,而现实世界却是一条颠簸多雨的盘山公路。
以下是他们的新解决方案COREB的故事,用简单的方式解释如下。
问题:“虚假”的测试
论文指出,旧的测试(称为基准测试)存在四个主要缺陷:
- 作弊(数据污染):想象一个学生为了数学考试,通过背诵去年考试的参考答案来学习。许多当前的代码模型正是这样做的。它们之前见过测试题,因为这些题目被用来训练了它们。所以,它们实际上并没有在“解决”问题,而只是在复述背诵过的答案。
- 错误答案(标签噪声):在旧测试中,“正确”答案有时只是猜测。研究人员发现,在一个流行的数据集中,大约一半的“正确”答案实际上是错误的,或者根本与问题不匹配。这就像一位老师在批改试卷,而答案钥匙本身有 50% 的时间是错的。
- 过于简单(退化相关性):旧测试就像“找唯一”的游戏。对于每个问题,只有一个正确答案和一堆错误答案。它并没有测试模型能否将多个好答案与坏答案进行排序。这仅仅是一个“命中或落空”的游戏。
- 缺失第二步:真实的代码搜索系统分两步工作:首先,它们抓取一大份可能的匹配列表(检索),然后由人类或智能过滤器挑选出最好的一个(重排序)。旧测试只关注了第一步,忽略了至关重要的第二步。
解决方案:COREB(“新鲜”的测试)
作者构建了一个名为COREB的新基准测试。可以把它看作是对旧问题的“重新构想”版本。
- “重写”技巧:为了防止模型通过背诵答案来作弊,他们拿真实的编程问题并对其进行“重写”。他们改变了角色名称、背景和措辞,但保持了底层逻辑完全一致。
- 类比:如果原始问题是“爱丽丝需要整理她的书籍”,新版本就是“马库斯需要整理他的收藏”。数学逻辑是一样的,但模型无法说“我记得这个!”,因为词语已经不同了。
- “困难”负样本:他们创建了“困难负样本”,而不是只有一个正确答案。这些是看起来正确但实际上错误的回答(就像一份看起来像蛋糕的食谱,实际上却是一堆面粉)。这迫使模型真正理解好解决方案与坏解决方案之间的区别。
- 两阶段测试:他们同时测试了“搜索”(查找列表)和“重排序”(选出优胜者)。
他们的发现(结果)
他们使用这个新测试评估了 11 种不同的“搜索引擎”(AI 模型)和 5 种不同的“过滤器”(重排序器)。以下是发生的情况:
- 专家胜过通才:一个仅在代码上训练的小型专用模型(0.5 亿参数)往往能胜过那些无所不做的巨型通用模型(80 亿参数)。
- 类比:一位精通木工的大师(专家)在制作椅子方面,胜过一位虽然更大、更出名但只略懂管道、电气和木工的总承包商。
- “关键词”崩溃:当用户输入简短、简单的关键词(如“排序列表”)时,所有模型都惨败。
- 类比:这就像问图书管理员“一本关于狗的书”。如果图书管理员只理解长篇、详细的描述,他们可能会递给你一本关于“犬类生物学”或“犬类训练”的书,但当你只说“狗”时,他们完全无法应对。当前的 AI 模型在处理简短、现实的搜索时表现极差。
- 重排序是一场赌博:“过滤器”步骤很棘手。有些过滤器让结果变得更糟,而不是更好。
- 类比:想象你有 10 个求职者名单。一个糟糕的面试官(重排序器)可能会选中最差的候选人,并解雇最好的那个。作者发现,现成的过滤器经常出错,但他们自己定制训练的过滤器在各方面都表现良好。
- 无人全能:没有单一模型在所有方面都是最好的。有些模型擅长从文本中查找代码,但在从其他代码中查找代码方面却表现糟糕。
结论
论文总结道,要构建真正有用的代码搜索工具,我们需要:
- 更干净的测试,防止作弊(使用重写的问题)。
- 专用模型,而不仅仅是巨大的通用模型。
- 更好的过滤器,专门针对该任务进行训练。
- 针对短搜索的解决方案,这是目前最大的弱点。
他们发布了新的测试数据和他们定制的“过滤器”模型,以便其他开发者可以利用它们构建更好的工具,确保下一代代码搜索能够在现实世界中真正发挥作用。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。