为了优化 LLM 以更好地利用检索到的文档,需要进行三项关键修改:输入格式调整、架构变更和训练策略更新。这些修改有助于模型区分不同的信息来源、处理更长的上下文,并学习优先处理相关内容。
输入格式 第一步是构建输入,明确将检索到的文档与原始查询分开。可以使用 [DOC]
、[CONTEXT]
或 [SEP]
等特殊 token 来标记文档边界。例如,查询可以格式化为 [QUERY] What causes climate change? [CONTEXT] [DOC1] ...text... [DOC2] ...text...
。这有助于模型识别外部知识的起始和结束位置。此外,可以调整位置嵌入或注意力掩码来优先处理文档段。对于长文档,分块或滑动窗口方法可以避免截断损失。Longformer 的稀疏注意力模式或分层摘要(例如,在完整处理前将每个文档压缩成一个向量)等工具也可以管理上下文长度。例如,系统可以先分别编码每个文档,然后使用交叉注意力层将它们与查询结合起来。
架构调整 修改模型架构以处理检索到的文档通常涉及增强其处理多个上下文源的能力。交叉注意力机制(例如 Fusion-in-Decoder (FiD) 中的机制)允许模型并行处理文档和查询。例如,可以独立编码文档,并在解码过程中融合其表示。稀疏或块状注意力(在 Sparse Transformer 等模型中使用)可以减少处理长文档时的计算开销。另一种方法是添加专门用于集成外部上下文的适配器层。例如,可以在 Transformer 层之间插入一个轻量级适配器模块,以在文档表示与查询交互之前对其进行优化。多头注意力层也可以重新配置,以不同地加权文档 token,例如使用偏差项来提高与文档相关的注意力分数权重。
训练策略 在需要使用文档的任务上对模型进行微调至关重要。这包括使用多任务目标(例如,同时预测答案和文档相关性得分)进行训练,或使用对比学习区分有用文档和干扰项。例如,在训练期间,模型可能会接收到相关和不相关的文档混合,从而学习忽略噪音。MS MARCO 或 Natural Questions 等数据集将查询与检索到的段落配对,非常适合此目的。此外,可以重新训练位置编码方案,以强调文档顺序的重要性(例如,如果文档已排序,则给予第一个文档更高的权重)。损失函数也可以进行调整,以惩罚在提供文档时过度依赖基础模型的参数化知识,确保模型学习“信任”检索到的上下文。
这些改变共同使模型能够有效地解析、优先处理和整合外部文档,从而提高准确性并减少幻觉。