本质上,重新排序器弥补了 rag 系统的搜索(快速、廉价、嘈杂)和大型语言模型(较慢、昂贵、智能)之间的差距。
技术细节
llamarank 是 llama3-8b-instruct 的微调版本。训练数据包括从 llama3-70b 和 llama3-405b 合成的数据以及来自我们内部数据注释团队的人工标记数据。数据搜索、文档和新闻 qa、代码 qa 以及其他类型的企业相关检索数据。
该模型经过了来自我
们数据注释团队的多次策略反馈迭代。这些注释者在文档查询对的相关性评分方面非常熟练,他们识别并纠正了模型早期版本的错误。这个迭代过程显著提高了 llamarank 的性能。在推理时,llamarank 对(文档、查询)对使用固定的提示模板。根据模型预测的标记概率计算数字相关性分数。推理速度很快,因为每个文档只需要预测一个标记。
绩效评估
我们在四个公共数据集上评估了 llamarank:
squad:基于维基百科的完善问答数据集
triviaqa:一个问答数据集,专注于一般网络数据中的 电报数据 琐事类问题
神经代码搜索 (ncs):由 facebook 策划的代码搜索数据集
trailheadqa:公开的 trailhead 文档和相应测验问题的集合
对于重排序器,n(输入到重排序器的文档数量)和k(重排序器返回的文档数量)的选择对于检索系统的精确度-召回率权衡以及 rag 系统的整体性能至关重要。
为简单起见对于所有数
据集,我们将 k(重新排序器返回到响应 lm 上下文中的文档数量)固定为 8。我们发现这是一个很好的权衡点。当 k=8 时,我们观察到文档召回率相当高。进一步增加 k 会导致成本增加,在某些情况下,由于包含虚假上下文作为干扰因素,实际上会增加响应模型的错误率。
对于所有一般文 可以做以下几件事 档数据集,重新排序器中输入的文档数量 (n) 设置为 64,对于代 电话线索 码数据集,则设置为 256。在生产中,我们观察到 n 的最佳选择可能是 32 到 1024 之间的任何值,具体取决于数据集的特征。如果 n 太低,则检索系统的最佳召回率会很差。增加 n 通常不会影响召回率,但当然会导致系统产生额外的推理成本或延迟。
我们在所有基准测试中都使用了 openai 的text-embedding-3-large嵌入进行语义搜索。作为基准,我们纳入了[zhuang et al.]中提出的查询似然法 (qlm) 。