信息检索与事实核查(1):Search-Adaptor: Embedding Customization for Information Retrieval


发布时间(2024ACL)


标题:搜索适配器,为信息检索定制的适配器
为信息检索定制 LLM
sentence-T5 google openai都有文本嵌入
不微调大模型,只使用推理能力
我们引入了一种新颖的排名损失和多个正则化器,可以减少过度拟合和遗忘,从而即使在小数据范围内也能提高检索性能。

摘要

由预训练的大型语言模型 (LLM) 提取的嵌入具有显著的改善信息检索和搜索的潜力。除了传统上使用的零样本设置之外,能够利用相关查询语料库配对数据中的信息可以进一步提升 LLM 功能。在本文中,我们提出了一种新方法 SearchAdaptor,用于以高效且稳健的方式定制用于信息检索的 LLM。 Search-Adaptor 修改了由预训练的 LLM 生成的嵌入,并且可以与任何 LLM 集成,包括仅通过预测 API 提供的 LLM。在多个英语、多语言和多模式检索数据集上,我们展示了 Search-Adaptor 的一致且显著的性能优势 - 例如,在 14 个 BEIR 数据集上,nDCG@10 中的 Google 嵌入 API 平均提高了 5% 以上。

1 引言

信息检索被广泛认为是通过查询语料库数据库来搜索信息的任务,该数据库可能包含许多不同类型的数据,例如文档、网页或日志。它在许多行业都有广泛的应用,包括零售、医疗保健和金融,世界经济的很大一部分都建立在此之上。特别是,语言建模是信息检索的关键部分,因为在大多数情况下,查询和语料库数据都是文本形式。 大型语言模型 (LLM) 已在各种文本处理任务中取得了重大成就,包括问答、总结和数学推理 (Brown 等人,2020 年;Chowdhery 等人,2022 年;Zhang 等人,2022a)。成功实现这些目标的一个关键因素是将原始文本转换为有意义的表示,以保留表示空间中的语义含义 (Ouyang 等人,2022 年)。 对于从推荐到异常检测等广泛的应用,任务被定义为对学习到的表示的显式操作。 这使得文本映射到嵌入的质量变得至关重要。信息检索系统通常使用文本嵌入,相关语料库根据查询和语料库之间的相似性进行排名(Wang 等人,2022 年;Izacard 等人,2021a 年)。

已经提出了各种 LLM 来从原始文本中提取嵌入,其中值得注意的是 Sentence T5 (Ni et al, 2021a)、OpenAI 嵌入 API (ope) 和 Google 嵌入 API (gcp)。然而,预训练 LLM 的一个基本限制是它们不能利用以正相关查询语料库对的形式呈现的检索特定目标任务数据。 即使数量很少,使用此类数据进行调整也有望显著提高信息检索能力。传统的微调 (Howard and Ruder, 2018) 可以成为利用成对查询语料库信息的一种直接方法。然而,如果成对样本的数量很少,调整模型的所有权重可能会导致过度拟合,从而导致泛化能力较差 (Lin et al, 2023),尤其是在存在分布偏移的情况下。此外,从计算角度来看,它可能成本高昂,因为它需要大量内存。有多种参数高效的调整方法,例如即时调整(Lester 等人,2021 年;Li 和 Liang,2021 年)、LoRA(Hu 等人,2021 年)、部分微调(Zaken 等人,2021 年)和各种适配器(Houlsby 等人,2019 年;Rücklé 等人,2020 年)。这些方法仅调整 LLM 参数的子集,旨在降低过度拟合的风险并带来计算收益。作为一个常见的瓶颈,所有这些方法都需要完全访问 LLM 的参数来调整模型,而对于具有基于 API 的仅推理访问的 LLM 来说,这可能是不可能的。

在本文中,我们的重点是定制 LLM 以获得用于信息检索的优质嵌入,特别是从如何最好地利用可用的特定于检索的调整数据并在广泛的范围内获得稳健的改进的角度,使用一种低成本的调整方法,甚至适用于具有基于 API 的仅推理访问的 LLM。图 1 概述了所提出的方法 Search-Adaptor。在此设置中提高调整性能需要一系列创新。我们建议在固定 LLM 之上集成一个低容量适配器模块(针对目标数据集进行定制)以修改预训练的嵌入。为了有效调整,我们引入了一种新的可微排名损失,它可以直接利用正查询和语料库对的信息。此外,我们包括多个正则化器来改善这种小数据范围内的泛化,如果没有干预,预训练的 LLM 最终会导致灾难性的遗忘。通过这种设计方法,Search-Adaptor 的一个主要优势是它不需要访问预训练的 LLM 的参数——只需要 LLM 的推理输出。表现出最先进性能的商业嵌入 API 通常不提供对其模型参数的访问。在这种情况下,与其他调整方法相比,Search-Adaptor 仍可用于进一步改进这些基于 API 的嵌入模型。我们使用 Google 和 OpenAI 嵌入 API 在 14 个 BEIR 数据集(Thakur 等人,2021 年)和 17 个 MIRACL 多语言数据集(Zhang 等人,2022b 年)上展示了 Search-Adaptor 的有效性,并在其上应用了 Search-Adaptor。此外,我们还使用开源 Sentence T5 模型(Ni 等人,2021a 年)评估了 Search-Adaptor 的性能改进。 总体而言,Search-Adaptor 与其他替代方案相比提供了显著的改进,并且在不同的数据集和模型中保持一致。本文的贡献如下:
我们为信息检索应用提出了一种新颖的自适应框架,可以显著改善预训练的 LLM。
• 我们引入了一种新颖的排名损失和多个正则化器,可以减少过度拟合和遗忘,从而即使在小数据范围内也能提高检索性能。
• 我们通过一系列数据集(从 1K 到 500K 个正向查询语料库训练数据对)为检索性能提供一致且显著的改进。
• 我们表明,较小 LLM 上的 Search-Adaptor 可以在零样本设置中接近较大 LLM 的性能,强调了其在模型蒸馏方面的潜力。
• 我们将 Search-Adaptor 的应用扩展到多模态学习和工具使用场景,展示了其显著的优势。

2 相关工作

用于零样本检索的预训练 LLM
SearchAdaptor 可应用于任何预训练的 LLM 嵌入模型,以定制其嵌入,实现卓越的检索性能。

嵌入定制
另一方面,Search-Adaptor 可以在没有完全访问 LLM 参数的情况下应用

3 问题公式化

我们用给定的查询-语料库配对数据集来制定检索问题。假设查询集表示为 Q = {q1, …, qN } ∈ Q,语料库集表示为 C = {c1, …, cM} ∈ C。查询和语料库之间的每个正关系都表示为三元组 rij = (qi , cj , yij ),其中 yij > 0 表示 qi 和 cj 之间关系的强度。 我们将所有其他三元组视为负关系(yij = 0)。所有查询语料库关系的集合表示为 R = {(qi , cj , yij )}i=1:N,j=1:M = Rp∪Rn,其中 Rp = {(qi , cj , yij ) ∈ R|yij > 0} 是正关系集,Rn = {(qi , cj , yij ) ∈ R|yij = 0} 是负关系集。注意,yij 可以是二进制的,也可以是连续的。

检索系统旨在找到给定查询 (qi) 和语料库 (cj) 之间的关系,使得预测关系与基本事实关系 (yij) 高度相关。评分函数 f : Q × C → R 将查询和语料库数据作为输入,并输出它们之间关系的分数估计。最佳分数是与每个查询的基本事实关系具有相同顺序的分数

4 方法

图 2 概述了 SearchAdaptor 的组件,将在以下章节中描述。

4.1 调整预训练的 LLM

4.2 排名目标

4.3 正则化

4.4 训练

结论

在本文中,我们专注于推动 LLM 在信息检索和搜索方面的能力。我们提出了一种规范高效的自适应方法 Search-Adaptor,该方法也可以应用于 LLM,即使只有推理访问权限。Search-Adaptor 是一种低成本的调整方法,可在不同的训练数据大小、编码器类型和语料库集范围内显著且持续地提高检索性能。这是通过其适配器模块的合理设计以及训练目标和方法实现的。我们还研究了 Search-Adaptor 在多模态学习和工具使用场景中的扩展,强调了嵌入定制对于此类应用的重要性。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值