摘要:在当前的大型语言模型(LLM)实践中,我们面临着许多挑战,因为 LLM 目前的局限性和无法低成本的融合外部知识,因此在企业实践时,我们需要通过外部数据库将企业知识和大模型进行连接。目前的主流方案是我们尝试将企业文档存储在向量库中,然后通过检索相关的 chunk
M
作者:王豫翔 - 微软最有价值专家(MVP)
排版:Alan Wang
Abstract
在当前的大型语言模型(LLM)实践中,我们面临着许多挑战,因为 LLM 目前的局限性和无法低成本的融合外部知识,因此在企业实践时,我们需要通过外部数据库将企业知识和大模型进行连接。目前的主流方案是我们尝试将企业文档存储在向量库中,然后通过检索相关的 chunks 传递给大模型,通过大模型的理解能力生产高质量的回复,这个技术我们称为检索增强(Retrieval-Augmented Generation, RAG)技术。
然而,在实际应用中,我们团队发现该方案并未有效解决 LLM 的幻觉问题。因此,本文旨在基于我们的实践经验,提出一个新的解决方案。我们认为,仅依赖向量库并不能得到理想的结果,而应更加依赖 LLM 的原生能力推理进行尝试,以此得到更为满意的结果。
在此论文中,我们将讨论以下几个问题:幻觉的不同场景类型,为何现有的增强搜索无法改善幻觉,以及我们如何尝试 LLM 的原生推理能力解决这些挑战。
Introduction
大型语言模型(LLM)在多个领域都展示出其卓越的性能。然而,由于 LLM 的数据集是固定的,一旦我们查询的知识超出了模型的训练集范围,就可能出现所谓的“幻觉”,导致模型给出错误的答案。
目前,我们通常采用两种方案将企业的知识与大模型结合,以实现企业智能知识库的构建。
我们可以通过人工智能搜索在知识库中根据查询上下文找到可能的段落,然后将这些段落提交给大模型,由其进行总结并提供答案。
我们可以将企业的知识存储在向量库中,在向量库中检索与用户查询最匹配的 chunks,然后将这些 chunks 提交给大型模型,由其进行理解并提供答案。
然而,无论我们采用哪种方案,最终的结果可能依然令人失望。因为无论是人工智能搜索还是向量检索,都可能存在一定的偏差,这种偏差可能会影响提交给大模型的数据质量,从而导致大模型基于这些被影响的数据提供可能让人失望的答案。
我们的团队发现,大模型对文本的理解能力和推理能力非常出色。因此,我们希望在进行检索之前,先让大模型对一组特定的信息进行理解和推理,以便我们能更精确地锁定知识范围。随后,我们将更精确的知识上下文数据集提交给大模型,利用其出色的理解能力,从而获得更精确的答案。我们将这个过程称为“Reasoning-Retrieval-Augmented Generation”。
Definition
Reasoning-Retrieval-Augmented Generation 的工作流程是:当用户提出一个问题时,首先将知识库内所有预设的文档概要及文档元数据提交给 LLM,让其对文档进行初步的推理判断,以确定答案最有可能出现在哪些文档中。在获得 LLM 的初步筛选后,我们就可以精确地在向量库中精确的对这些文档的 Chunks 进行检索,明显提升召回的质量。
我们将这些高质量的知识块再次让 LLM 进行推理,判断这些知识块中是否存在与用户的问题匹配的知识。
经过两次的推理后,我们将得到一组相对干净的内容,以这些内容作为上下文,LLM 可以输出我们满意的答案,出现幻觉的概率被急剧降低。
为了阐释我们设计 Reasoning-Retrieval-Augmented Generation 的原因,我们首先需要讨论传统的 RAG 方式的不足之处。我们观察到,传统的 RAG 方法在以下两种常见场景中都表现出了明显的缺陷。
Out-of-Bound Queries
定义
Out-of-Bound Queries 是指用户提出了一个在现有知识库向量集中不匹配的问题,但我们仍然从知识库向量集中找到了一些资料,这些资料被提交给大语言模型(LLM),然而,LLM 发现这些资料与用户提出的问题之间毫无关系。因此,LLM 根据预训练数据集进行回答,无论其回答正确与否,均视为一种"Out-of-Bound Queries"现象。
案例
我们使用 LLM 为一家虚构的律师事务所建立了一个企业知识向量集,这个企业知识向量集仅包含法律文件。但是当用户提出了一个自然科学的问题,例如"为什么天空是蓝色?"。知识库依然对"为什么天空是蓝色?"这个问题给出了回复。
分析
向量库进行向量相似度搜索时,是计算查询向量和集合中具有指定相似性度量的向量之间的距离,并返回最相似的结果。因此向量库总是会返回结果,无论这个结果和查询向量是否具有高度匹配。
因此如果用户提出的自然科学的问题"为什么天空是蓝色?",传统的 RAG 方案会将"为什么天空是蓝色?"的查询向量在法律文件向量集合中进行检索。我们总是能从向量集合中获取到一组经过排序的 chunks。但由于我们无法判断这些 chunks 是否与用户的问题匹配,我们只能将这些 chunks 提交给 LLM。因此,LLM 在得到了与用户问题完全无关的一些信息后,必然会放弃我们所给的上下文,而是在自己的预训练数据集中寻找相关问题的答案,或者编造一些答案。这就是” Out-of-Bound Queries”。
High Similarity Chunks
定义
在向量库中,大量高度相似的 chunks 可能对检索结果产生显著干扰,导致获取的信息存在矛盾或异常。
案例
为了深入理解这一问题,我们使用 LLM 为一家虚构的家电企业建立了一个企业知识库,该知识库包含了该企业所有产品的操作说明书。这些产品涉及多种类型的家电,如冰箱、洗衣机、微波炉和电视机等,其操作说明书可能都会包含设备如何安全启动和关闭、使用 Wi-Fi、童锁设定,以及设备错误代码的相关信息。
但是用户的如下提问都没有获得预期的回复:
“A 型号的冰箱的童锁如何操作?”
“洗衣机的出现了 EE 代表什么错误?”
“我的电视机怎么连接到 Wi-Fi”
知识库总是会输出不确定的答案。
分析
因为这些说明书中产品型号的具体描述可能仅在前言部分出现,而在正文部分,不论是关于设备如何安全启动和关闭、使用 Wi-Fi、童锁设定,或是设备错误代码的信息,都可能没有再次明确指出具体的产品型号。因此,当用户提出例如“我想知道某一种型号的冰箱的童锁如何设置”的问题时,我们可能从向量库中返回的是所有与童锁相关的 chunks。由于这些 chunks 并未明确指出对应的家电型号,且不同型号的家电设备的操作方式可能存在差异,这些信息可能会带来大量的矛盾。
如果这些矛盾和混乱的信息被提交给大语言模型(LLM)进行处理,LLM 可能会因此推导出错误的信息,而非用户期望的准确答案。这种现象的根源在于向量库中的信息过于相似,无法进行精确的知识检索,从而导致了信息的混乱和矛盾。
Reasoning-Retrieval-Augmented Generation(RRAG)
在实现 Reasoning-Retrieval-Augmented Generation(RRAG)的过程中,我们设计了以下几个关键步骤。
文档预处理:文档概要描述和知识元数据描述
LLM 对文档知识集合筛选推理:理解用户提问,通过文档概要推理可能具有帮助的文档
Orientation RAG:在筛选集合中参考知识元数据进行向量集合搜索
召回有效性推理:对 RAG 返回的 chunks 再次使用 LLM 进行推理获得最后干净的上下文
LLM 最后输出:在最后上下文上,对用户的提问做出回答
Document Preprocessing
我们建议对每份文档进行简明的描述,阐明其应用范围和作用。同时,我们还建议为每份文档提供一些元数据,例如文档的作者、文档的有效性描述,以及其他可能被认为重要的信息,甚至对文档中关键片段设计元数据。这些元数据有助于大模型更好地理解文档内容,从而提升 LLM 的推理精度。
Filtering Reasoning
在用户提出问题后,将知识库中所有文件描述提交给 LLM,让 LLM 通过对文件描述的判断,确定哪些文件可能包含了对用户问题有价值的信息。
Orientation RAG
在推理后获得的文件集合范围内进行定向向量化查询。对文件定义的元数据也被参与到向量匹配中。
比如我们可以将家电操作手册正文的不同章节设计元数据,这些元数据可能是章节内容的定义,比如:Wi-Fi、童锁、错误号等,这些元数据可以更让向量搜索更精准的返回匹配用户提问的 chunks。
Recall Validity Reasoning
此阶段处理为一可选过程,仅在对 chunks 精度有较高要求时才需要执行。在此环节中,我们可以利用 LLM 对 chunks 进行再一次推理,以便确认 chunks 中是否包含与用户问题相关的信息。因此,可以将此过程视为对 Out-of-Bound Queries 的校验。
Reasoning-Retrieval-Augmented Generation 完整过程
因为我们目前无法扩展 LLM 的知识范围,对向量集合搜索结果的干预能力也较低,RAG 在一些场景下无法很好地达到我们的预期,因此我们需要在向量集合存储之前对知识进行梳理,也需要在 Recall 后对向量集的搜索结果进行再次验证。
RRAG 比 RAG 在有些场景下有更出色的表现。
结语
在 RAG 的基础上检索向量库给大模型之前,我们先做了一次让大模型进行内容选择的过程,通过这个过程,我们观察到大模型获得的资料内容质量明显得到了提高。以此文和大家分享我们的经验。
王豫翔
微软最有价值专家(MVP)
王豫翔,拥有20余年编程经验,Microsoft AI MVP,一直致力于分享 Azure AI 相关技术。曾在多个大型研讨会担任讲者,包含 TechEd、Tech Summit、Ignite China、Al Bootcamp 等。专注人工智能领域技术创新,尤其是自然语言对话方向的颠覆性机会。微软最有价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。31年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。
MVP 是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP 致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用 Microsoft 技术。
更多详情请登录官方网站:https://mvp.microsoft.com/zh-cn
来源:opendotnet