人工智能学习

知识图谱与大模型:微调 vs. 检索增强生成

本文主要是介绍知识图谱与大模型:微调 vs. 检索增强生成,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
大型语言模型的限制及如何克服

许多组织正在考虑将大型语言模型用于业务场景,例如作为聊天机器人或虚拟助手回答问题,或生成创意文本。然而,它们通常会遇到一些限制,比如知识更新不及时、错误生成以及无法根据用户需求进行定制等问题。

应对这些挑战的两种方法是微调和检索增强型。微调一个大规模语言模型(LLM)包括一个监督训练阶段,提供问题和答案的配对以优化LLM的性能。相反,在检索增强生成,LLM作为自然语言接口来访问外部信息,这意味着它不仅依赖于其内部知识来生成答案。

本文探讨了使用微调和RAG来减少大型语言模型(LLMs)局限性的利弊。对于已经利用知识图谱来组织和管理数据的组织,这种方法有何影响。

大语言模型的限制

Midjourney提出的知识图聊天机器人.

2022年11月ChatGPT发布没过多久,人们就开始琢磨将大规模语言模型集成到他们的应用中,以创作创意内容并解决诸如文本摘要和翻译等常见的自然语言处理任务。

直接将LLM应用于业务场景可能会引起严重的问题。下面让我们探讨几个最值得关注的问题。

知识界线

知识截止点是指大型语言模型对其训练结束后的事件一无所知。例如,,如果你询问ChatGPT关于2024年发生的事件,你会得到这样的回答:

ChatGPT的知识截止时间。作者供图。

如果你询问大型语言模型关于其训练数据集中没有的任何事件,也会面临相同的问题。虽然截止日期前的所有公开信息都是相关的,但对于截止日期前的私人或保密信息,大型语言模型同样一无所知。

例如,许多公司有一些不对外公开的内部机密信息,但他们可能有兴趣使用一个定制的LLM来回答关于这些信息的问题。另一方面,公开的信息可能已经在LLM的认知中过时了。

幻听/幻视

我们不能盲目地相信LLMs产生的所有东西。

大型语言模型被训练产生听起来真实的内容,但这些信息未必总是准确。有些错误信息更难被发现,尤其是当缺少数据时,大型语言模型更可能编造出一个听起来合理但实际上错误的答案,而不是承认自己缺乏这方面的知识。

例如,研究或法院引文可能更容易验证。2023年,一名律师因为盲目信任ChatGPT生成的法院引文而遇到了麻烦。从那以后,人们对像ChatGPT和Gemini这样的公开的大规模语言模型生成的信息变得更加谨慎,但风险依然很大。

大型语言模型(LLM)会持续生成虽然自信但却是虚假的信息,关于任何类型的识别号码,例如Wikidata ID:

ChatGPT的错误。图片由作者提供。

在上面的截图中,ChatGPT坚定地回答,但这是不正确的。ChatGPT给出的Wikidata ID实际上指向的是一位俄罗斯歌手。

其他问题和困扰

大型语言模型还有一些其他的问题:

  • 偏见 — LLMs 可能会从其训练数据中继承偏见,导致输出带有歧视性或不公平的内容。
  • 提示注入 — 恶意用户可以精心设计提示,使 LLM 生成有害或误导性的内容。
  • 常识推理 — LLMs 在处理需要常识推理或理解情境的任务时常常表现不佳。
  • 可解释性 — 理解输出背后的推理或来源可能很困难,这会降低对其输出的信任,并使调试更加复杂。

为了省略细节,我们不会详细探讨这些。相反,我们来探讨你第一个克服这些挑战的选项:有监督的微调方法。

大型语言模型的监督精细调整

微调是一种针对大型语言模型的精细化训练。它指的是在监督学习过程中,通过提供额外的问题和答案对来优化大型语言模型的表现。通过不断处理这些数据样本,大型语言模型能够提高其理解能力,并提升其在特定领域内回答问题或生成文本的能力。

微调让您在利用大型语言模型现有功能的同时,根据您的具体需求进行调适。若将微调与特定领域的预训练结合,您将得到一个[特定领域的大型语言模型],用于在特定领域,比如金融行业,执行专业操作,从而提高其准确性。

注: 对于大型语言模型(LLM)的微调,两个主要应用场景是更新和扩展其内部知识库,以及为特定任务(如文本摘要或将自然语言转化为数据库查询)进行微调。你也可以准备模型用于创意目的,例如生成个性化艺术作品,并分析用户偏好和行为模式,以便进行内容过滤和推荐。本文将讨论使用微调技术更新和扩展LLM内部知识的第一个应用场景。

微调到底是什么?

注意: 详细讲解LLM的训练过程超出了本文的范围。如果你感兴趣,可以观看Andrej Karpathy的这个视频来了解LLM及其不同阶段的训练过程。

创建一个LLM的第一步是预训练一个模型来建立基础LLM。基础LLM通常使用庞大的文本语料库进行预训练,这些语料库通常包含数十亿甚至数万亿个标记。训练的成本可能高达数十万甚至数百万美元——这是大多数组织想要避免的情况。

最近刚刚,微软发布的一篇论文(2024年6月发表,链接)表明,使用梯度检查点和低秩适应等技术可以在精调过程中缓解内存瓶颈问题。这将使精调更加节省时间和资金,但到目前为止,我们还没有任何实际例子证明成本确实降低了。

监督微调过程。图片由Tomaž Bratanič提供(见图)。图标来自Flaticon。

因此,最常见的第一步是为您的应用场景选择一个预训练的基础LLM。在做出选择时,您需要考虑几个方面。

  • 大型语言模型(LLM)的参数量决定了其学习和表示数据中复杂模式的能力。更大的模型需要更多的计算能力和内存来进行推断。它们可能需要更长的训练时间。微调这样的模型可能会耗费资源较多,需要强大的硬件设备,如 GPU 和 TPU。
  • 基础 LLM 的许可证规定了你可以如何使用微调后的模型。一些许可证可能对商业用途、分发或修改有限制。开源模型在微调和定制方面提供了更多的灵活性和自由,而专有模型可能提供了更好的性能和特定功能,但许可证更为严格。你必须遵守许可证条款,以避免法律问题。
  • 基础模型中的偏见如果在微调过程中未得到妥善处理,可能会被放大,导致微调后的模型表现出不公平或歧视行为。识别和减轻偏见需要额外的数据预处理和评估,包括采用数据平衡技术、偏见检测工具和公平性感知训练算法。你应选择一个初始训练数据集较无偏见的基础 LLM。
  • 毒性指的是在没有适当控制的情况下,模型可能会生成有毒或有害内容。为了减少毒性、保持积极的用户体验和防止伤害,你需要过滤训练数据并实施安全层和持续监控。如果可能,你应选择一个毒性较少且包含检测和减轻毒性机制的 LLM。

选好基础LLM后,再对它进行一下微调

准备训练数据

首先,准备用于微调基础LLM模型的数据集。

与预训练相比,微调在计算成本方面相对便宜,这得益于像LoRA和QLoRA这样的技术的帮助。然而,构建训练数据集比实际训练过程更为复杂,并且构建成本可能很高。

一些无法承担专职标注团队成本的组织会非常聪明地转向元层面,使用一个大型语言模型(LLM)来构建用于微调其LLM的训练数据集。例如,斯坦福大学的Alpaca训练数据集是通过使用OpenAI的LLM创建的。生成52,000条训练指令的成本约为500美元,这相对便宜。而Vicuna模型则是通过用户在ShareGPT上发布的ChatGPT对话进行微调的,训练这个模型的成本更低,仅为140美元。

H2O 还开发了一个名为 WizardLM 的项目,该项目将文档转换成问答对,用于微调 LLM。

然而,我们尚未见到任何使用知识图谱来准备优质问答对以帮助微调大语言模型并扩展其内部知识的实现。这对那些依赖知识图谱来存储公司特定数据的组织来说是一个令人担忧的问题。从他们的数据存储创建训练数据集可能会对他们构成挑战。微软在Graph RAG提案中提出的一个社区报告摘要步骤可能是一个解决方案,但该想法尚未得到验证。

微调模型的局限

当前LLM面临的一个关键问题是许多未知因素。例如,是否能对同一个问题给出不同的两个答案,这些答案是否会在LLM的内部知识库中以某种方式被整合?

如果你的组织想要使用知识图谱中的数据来训练大模型,考虑一下知识图谱中的某些信息只有在分析其关系时才会变得有意义。是否需要预先定义相关查询以将这些关系整合进训练数据集,还是有更通用的方法来完成这个任务?或者你可以通过生成节点-关系-节点模式(即主语-谓语-宾语表达式)来生成相关的对?

把这些担忧放在一边,让我们假设你生成了一个基于知识图的训练数据集,包含问答对。结果,LLM 现在更新了知识。然而,模型的微调并没有解决知识截止的问题;它只是将知识截止的时间往后推了。

此外,虽然微调方法可以减少生成不准确信息,但不能完全消除它们。在提供答案时,LLM 无法引用来源。因此,你无法确定答案的来源,无法知道答案是来自预训练数据、微调数据集,还是LLM自己编造的。如果你用LLM创建微调数据集,那么虚假信息的来源也总是可能的。

一个微调过的模型也无法自动根据提问的人的不同提供不同的回答。同样的,没有访问限制,这意味着任何人与该大型语言模型互动都可以访问其所有信息。

何时该进行微调

考虑到微调的限制,我们建议仅通过微调技术来更新那些变化缓慢的数据,以更新大规模语言模型内部的知识。

例如,你可以使用一个经过微调的模型来提供有关历史旅游景点的信息,只要它不需要任何特定的时间依赖信息。一旦你想在响应中加入实时的或个性化的促销信息,你就会遇到问题。

这些模型对于需要分析公司过去一周新增多少客户的流程而言,不太适合。

微调在您的应用程序需要模型在高度专业化任务或领域中表现优异时最为有用。通过在特定数据集上的训练,您可以自定义模型的响应,使其更好地适应特定领域的细微差别和细节。这一过程使模型的内在理解和生成能力得到了增强,使其更擅长处理专业查询并生成更准确、更具上下文相关性的输出。

生成增强检索

使用提取增强型LLM应用的思路是避免仅依靠内部LLM的知识来生成答案。

RAG 使用大语言模型来处理诸如从自然语言构建数据库查询和根据外部提供的信息或通过插件或代理检索信息来构建答案等任务。因此,RAG 让你可以利用大语言模型作为公司或私人信息的自然语言接口,而不是依赖大语言模型自身的知识库。

增强型检索生成是怎么运作的

检索增强生成。图片由 Tomaž Bratanič。图标来自 Flaticon

RAG 使用一个智能搜索工具来为你的大语言模型提供合适的问题措辞和从你的数据存储中提取的相关文档。然后,它根据数据源中的信息生成答案。这意味着你无需依赖大语言模型内部知识来生成答案。相反,大语言模型仅用于从你提供的文档中提取并总结相关信息。

引入代理和工具调用支持起到了推动作用,推动了RAG的发展。

代理充当中介,将大语言模型连接到外部知识来源,如数据库和API。因此,大语言模型可以访问大量实时数据,克服了知识限制,使它们能够获取最新信息。代理还可以将事实核查服务和验证工具集成到模型的工作流程中,从而通过降低错误风险来增强模型输出的可信度。

本机工具调用功能更进一步拓展了这一能力。大型语言模型可以直接调用外部工具来完成特定任务,如复杂的计算或数据分析,从而能处理更广泛的问题并扩展其功能。例如,ChatGPT工具用于从网络获取响应和上传文件以辅助写作或分析,可以被视为大型语言模型应用中的RAG方法之一。由于ChatGPT界面可以访问互联网资源,该模型可以通过搜索互联网获取最新信息,并利用这些信息来构建最终答案:

ChatGPT带浏览功能插件。图作者绘。

在这个例子中,ChatGPT 可以回答谁赢得了 2024 年 NBA MVP 的问题。不过,由于 ChatGPT 的知识截止日期是 2022 年 1 月,它无法用内部知识回答 2024 年 NBA MVP 的问题。相反,它通过其 使用 Bing 浏览功能 访问了网上的外部信息,从而能够用最新的信息回答问题。这些功能提供了一个集成的增强机制。

实现检索增强型的生成

你可以用多种方法在你的系统中应用RAG。

LangChain,一个用于使用LLM开发和部署应用程序的库,提供了将LLM与检索与生成技术集成的工具。您可以使用LangChain让LLM能够实时访问各种来源的信息,比如谷歌搜索、向量数据库或知识图谱。

例如,LangChain 添加了一个 Cypher 搜索链,该链将自然语言问题转换成 Cypher 语句,利用它从图数据库(例如 Neo4j)中检索信息,并根据提供的信息构建最终答案。借助 Cypher 搜索链,LLM 不仅用于构建最终答案,还用于将自然语言问题翻译成 Cypher 查询,就像一个翻译工具一样。

在 LangChain 中的 Cypher 搜索。Tomaž Bratanič 拍摄.

另一个流行的用于增强检索的LLM工作流的库是LlamaIndex,之前叫做GPT Index。LlamaIndex 是一个全面的数据框架,它使LLM能够利用私人或定制的数据,从而提升LLM的性能表现。

LlamaIndex 提供数据连接器,便于从各种数据来源和格式(如 API、PDF、文档、SQL 数据或图数据等)中导入数据,将现有数据整合进大语言模型(LLM)中。它还提供了高效的方法来使用索引和图结构化导入的数据,确保数据适合与 LLM 结合使用。其先进的检索和查询接口允许用户输入一个 LLM 提示,并返回从上下文中检索并增强的知识输出。

LlamaIndex 支持创建和连接到属性图索引以从非结构化数据构建丰富的知识图谱,然后灵活地查询它,以发现信息中的见解和关联。如果您已经在如 Neo4j 之类的图数据库工具中已有知识图谱,您也可以跳过创建知识图谱,并在您的 LlamaIndex 项目中直接使用它。

由于 Neo4j 自带的属性图模型,构建在 Neo4j 图数据库上的知识图谱可以将事务数据、组织数据和向量嵌入结合到一个数据库中,简化整体应用设计。搭配 LlamaIndex 的属性图索引,你可以创建定制解决方案来查询图中的特定信息。

增强提取生成的利与弊

相比微调技术,检索增强的方法在很多方面都更胜一筹(fine-tuning)。

  • 这使你能够验证信息来源并根据需求更改或更新底层信息。
  • 因此出现错误信息的情况较少,因为大语言模型不再依赖其内部知识来回答问题,而是使用相关文档中提供的信息。
  • 由于将问题转变为数据库的维护、查询和上下文构建,因此更容易更改、更新和维护大语言模型使用的底层信息。
  • 回答可以根据用户的特定情况或权限进行调整。

不过,记得RAG的一些限制:

  • 答案的质量取决于智能搜索工具的好坏。你的智能搜索工具必须能够提出正确的问题,并附上相关的文档。
  • 应用程序需要访问你的特定知识库,无论是数据库还是其他形式的数据存储。
  • 如果忽略语言模型内部的知识,会限制可以回答的问题数量。
  • 有时大语言模型可能无法遵循指令,因此上下文信息可能被忽略,或者如果上下文中没有找到相关信息,仍可能出现错误。
大语言模型的微调与检索增强生成对比

以下是两种方法的关键区别,如下表所示:

微调过程非常适合领域明确且定义清晰,并且能够访问大量标注数据的任务,例如情感分析或针对特定产品的数据库查询生成。它可以利用新数据来更新基础LLM的上下文,并完全消除对外部数据来源的依赖。

然而,RAG更准确(参见这项研究和这项研究以了解更深入的分析),这意味着它更适合处理需要访问最新信息或与现有知识库集成的任务,例如问答系统和客服聊天机器人。

使用图数据库(如Neo4j)的RAG带来了多个优势。访问一个包含相互连接实体的更丰富知识库,可以提供更全面的答案,更好地适应新领域和不断发展的知识,并洞察RAG生成答案时所使用的关联和数据点。它还提供了比细调更胜一筹的解释能力,并且能获取最新的信息,而经过微调的LLM则依赖于静态训练数据。

微调可以用来补充RAG,特别是在需要高度专业化知识的特定领域时。然而,对于大多数应用来说,RAG提供了一种更经济、更高效的选择。它允许你直接使用一个预训练的LLM和知识库,而不需要准备训练数据集或经历监督训练阶段。RAG也不需要像微调那样高水平的技术知识。

实际上,大多数公司并不一定需要为特定技能创建专门的大型语言模型。通过将预训练的大型语言模型与领域特定的数据结合,使用检索增强生成(RAG),公司就可以利用自己的数据来增强其强大的语言模型,这种方法因此变得非常有吸引力。

许多团队正在研究如何有效地将RAG与图数据库结合使用的方法。术语“GraphRAG”正变得流行起来,来自像微软和位于亚特兰大的埃默里大学的团队分享了他们关于如何最好地将图技术与RAG结合以优化RAG系统性能的想法。想了解更多,请参阅Neo4j的GraphRAG宣言,该宣言对此进行了详细的解读和阐述。

开始使用 Neo4j 和 LLM

我们正在提供一个免费的GraphAcademy课程、讲解如何将Neo4j知识图与生成式AI模型结合使用LangChain。

这篇关于知识图谱与大模型:微调 vs. 检索增强生成的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!