随着 大语言模型 (LLM) 在各种问答系统中的普及, 检索增强生成 (RAG) 流程也成为焦点。RAG 流程将 LLM 的生成能力与外部数据源和检索机制相结合,使模型能够访问微调期间可能不存在的特定领域信息。
RAG 性能很大程度上取决于底层文本嵌入模型的质量。嵌入模型不佳会导致检索结果欠佳,进而降低 RAG 系统的整体性能。在处理企业特定的内部数据时尤其如此,因为开箱即用的模型可能无法提供所需的准确性。
为确保 RAG 系统能够有效处理您的特定数据,您必须评估预训练嵌入模型在语料库中的表现是否良好。此评估所需的标注数据与最终用户提交的查询类型非常相似。例如,带标注的样本数据集可能包括以下内容:
Question: How do I reset my enterprise VPN password?
Passage: To reset your VPN password, visit the IT help portal, select ‘Reset Password,’ and follow the on-screen instructions.
Answer: Visit the IT help portal and select 'Reset Password'
在许多情况下,现有嵌入模型在应用于特定领域的数据时无法产生最佳结果。这就需要使用与企业语料库共享相同分布的标注数据来定制这些模型。
在本文中,我们将讨论如何使用新的 NVIDIA 合成数据生成 (SDG) 流程创建合成数据,以评估和自定义嵌入模型。通过生成高质量的合成标注,您可以增强嵌入模型的性能,并针对企业特定用例优化检索准确性。
自定义和评估 Embedding 模型
嵌入模型通过将文档语料库和用户查询转换为密集数值向量,在 RAG 系统中发挥着至关重要的作用。这些嵌入存储在数据库中,使 RAG 系统能够高效检索与给定查询最相关的文档。
虽然预训练嵌入模型适用于通用文本,但它们通常无法捕获特定领域数据的细微差别。这种差距会导致搜索结果不可靠、连接中断以及 RAG 性能不佳。
为解决这一问题,必须使用特定领域的数据评估和定制嵌入模型。这种自定义可调整模型的内部权重,使其能够更好地理解与目标企业应用相关的上下文含义。
例如,在不同上下文中考虑“pitch”一词:
- 体育:“ 棒球 pitch 非常棒 ”。这里的“pitch”是指一次抛球。
- 业务:“初创公司为投资者提供了一个很好的 pitch ”。在本例中,“pitch”是指演示。
如果嵌入模型主要基于体育数据进行训练,则“pitch”的向量倾向于体育语境。在用于业务查询时,这可能会导致检索不准确。
通过在业务特定文本上微调模型,“pitch”的嵌入会转变为表示其与业务相关的含义,从而提高该领域文档检索的准确性。
为嵌入模型创建评估和自定义数据极具挑战性
公开可用的数据集在应用于企业特定数据时通常缺乏相关性。这些数据集通常从公开可用的来源收集,其中的词汇、上下文和结构可能与企业内部发现的特定领域的内容不匹配。
因此,使用公共数据集评估或定制 RAG 系统可能会导致性能评估不准确和模型微调欠佳。
创建人工标注的 enterprise-specific 数据集既昂贵又耗时。此过程需要领域专家对大量数据进行标记,确保标注能够捕获行业的特定术语和上下文。此外,这种方法难以扩展,尤其是考虑到企业的需求会随着时间的推移而变化。
使用 NVIDIA NeMo Curator 生成高质量的合成数据
NVIDIA NeMo Curator 通过大规模处理用于训练和定制的文本、图像和视频数据,提高生成式 AI 模型的准确性。它还提供用于生成合成数据的预构建流程,以自定义和评估嵌入模型。
用于生成 RAG 评估数据的 SDG 流程经过专门设计,可生成高质量的问答 (QA) 对,以评估嵌入模型的表现。它由三个关键组件组成,每个组件均可确保生成的数据与上下文相关、具有适当的挑战性,并以源材料为基础:
- QA 配对生成 LLM
- 嵌入模型即评判,为问题轻松度
- 用于接地的 Answerability filter
NVIDIA NeMo Retriever 是 NVIDIA NeMo 平台的关键组件,它还利用打包为 NVIDIA NIM 微服务的优化模型,通过更快、更精确的多模态数据提取和检索来增强 RAG 应用。为域自定义嵌入模型后,使用 NeMo Retriever 部署这些模型,以在生产流程中进行评估和扩展。
QA 配对生成 LLM
此组件使用任何 NVIDIA NIM LLM 从种子文档中生成问答对。我们提供经过优化的系统提示,指导 LLM 创建更符合上下文且更相关的问题。
Example Input:
Seed Document:
"Our enterprise offers cloud-based cybersecurity solutions to prevent data breaches."
Example Output:
Question: "What type of solutions does the enterprise offer?"
Answer: "Cloud-based cybersecurity solutions."
通过使用专为这项任务设计的系统提示,LLM 生成与种子数据上下文相符的问题,确保更高质量的输出。
嵌入模型即评判,为问题轻松度
为确保生成的问题涵盖一系列困难,此组件使用 embedding model 来评估每个问题的复杂性并对其进行排序。
嵌入模型可用作判断工具,根据生成的问题与上下文文档的余弦相似度过滤掉这些问题。通过使用手动标注的数据集进行校准以模拟人类判断来确定阈值,并且可以轻松定制这些阈值以满足特定需求。
可以通过更改这些 thresholds 来控制数据集的难度分布。降低 thresholds 可能会导致更难回答的问题的百分比更高,并且有助于生成更难回答的评估数据集。
通过应用这些值,管道可确保最终数据集均衡地混合了简单、中等和困难的问题,从而提高模型评估的可靠性。
用于接地的 Answerability filter
最后一个组件充当过滤器,确保生成的每个问题都直接基于种子文档。此步骤可防止数据集中包含不相关或有幻觉的问题,从而保持评估数据的质量和可靠性。这可确保仅保留由源材料直接支持的材料,从而提高最终数据集的可信度和相关性。
NeMo Curator 还提供了为嵌入模型生成自定义数据的流程。除了评估流程中的组件外,它还添加了一个 Hard Negative Mining 模块。
了解 Hard-Negative Mining
硬负在提高嵌入模型的对比学习性能方面发挥着至关重要的作用。这些样本被定义为难以区分正样本但包含不包含查询答案的上下文的样本。
通过整合 hard negatives,模型被迫学习更具判别性的特征,从而提高其区分相似但不同的数据点的能力。这种方法有助于微调模型的决策边界,从而实现更稳健、更通用的表示。
在定制期间,目标是增加负面文档嵌入与问题文档嵌入之间的距离,同时缩短正面文档与问题文档嵌入之间的距离。此过程有助于模型学习更好地区分相关信息和不相关信息。
对于大多数嵌入模型而言,问题与无关文档之间的距离已经很远。因此,仅使用随机的负值文档并不会显著影响模型的学习。
相反,模型使用 hard negatives 来训练,即由于嵌入与问题具有更高的余弦相似性(cosine similarity),因此更难区分的负文档。通过专注于这些更困难的案例,该模型能够进一步理解细微差别,从而获得更准确的检索结果。
您可以使用以下方法使用 hard negative documents:
- Top-K 选择:系统识别与问题具有最高余弦相似性的顶部 K 个负文档。通过选择此类负数,训练模型可以更好地分离向量空间中接近的相关文档和不相关文档。这是最简单的方法之一。
- 基于阈值的选择: 替代方法是为负数和问题之间的 cosine similarity 设置最小和最大阈值,并选择位于这些阈值内的顶部 K 个负值文档。这可确保在训练期间仅使用最具挑战性的负数,从而进一步微调模型的决策边界。
- 积极感知挖掘:该方法使用正相关性分数作为锚定值,以更有效地消除假阴性。 这种方法旨在解决为对比学习选择高质量的硬性否定段落的挑战。我们将最大负相似度值定义为正分数的百分比。此方法表现非常好,将值设置为正分数的 95%。如需了解有关消融研究的更多信息,请参阅 NV-Retriever:通过有效的硬阴性挖掘改进文本嵌入模型 。
借助 hard-negative mining,您可以生成高质量数据来自定义嵌入模型,并提高 RAG 应用的准确性。
总结
在本文中,我们讨论了 NeMo Curator 的 SDG 流程如何简化高质量数据集的生成,从而实现文本嵌入模型的精确评估和自定义。
借助这些增强型数据集,您可以有效地评估和微调 RAG 性能,深入了解检索系统的性能,并确定提高准确性和相关性的方法。
有关如何开始使用的更多信息,请参阅以下资源:
借助 NeMo Retriever 嵌入微服务 ,您可以进一步优化多模态文档检索,以显著降低成本大规模提高 RAG 应用的整体准确性。