本文作者:蔡冠杰,碧桂园服务后端开发高级工程师,拥有8年开发经验。
1 (RAG)检索增强生成技术介绍
1.1 检索增强生成是什么?
举个例子,比如我作为员工,直接问大模型:
提问:我们公司几点下班?
大模型在没有“接触”过我们公司《员工手册》等企业私有数据的情况下,大模型往往难以给出正确答案。RAG的能力在于能够让大模型结合企业私有数据,完成特定领域的知识问答。RAG把这类问题拆成两个步骤:
基于用户的提问,到《员工手册》里找到最相关的N个内容片段。
把用户提问和N个内容片段一起送到大模型中,获得答案。
上边这个例子“我们公司几点下班?”就变成:
提问:请参考员工手册,回答以下问题:我们公司几点下班?
员工手册内容如下:遵守上班时间不迟到、不早退......工作时间每周一至周五上午8:40到下午6:10......
大模型回复:
回复:下班时间是下午6点10分。
LLM是一种通过大量数据训练的模型,可以回答任何问题或完成任务,并利用其参数化记忆。然而,这些模型有一个知识截止日期,取决于它们上次训练的时间。比如当被问及超出其知识范围或在知识截止日期之后发生的事件时,模型会产生幻觉。
Meta公司的研究人员发现,通过提供与手头任务相关的信息,模型在完成任务时表现得到显著改善。例如,如果询问模型关于截止日期之后发生的事件,则提供该事件作为背景信息并随后提问,可帮助模型正确回答问题。
但由于LLM上下文窗口长度有限,所以在处理当前任务时只能传递最相关的知识,而且添加到上下文中的数据质量也会影响模型生成响应结果的质量。因此,机器学习从业者在RAG流程的不同阶段使用多种技术来改善LLM的性能。
1.2 RAG如何工作?
RAG架构和管道包括三个主要阶段:数据准备、检索和生成。
数据准备阶段:包括确定数据源、从数据源中提取数据、清理数据并将其存储到数据库中。
检索阶段:包括根据手头的任务从数据库中检索相关数据。
生成阶段:包括利用检索到的数据和手头的任务生成输出结果。
输出的质量取决于数据的质量和检索策略。下文将详细介绍每个阶段。
2 大模型结合RAG在企业知识库问答的落地
2.1 基于LangChain+LLM的本地知识库问答
2.1.1 什么是LangChain?
LangChain是一个开源的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如API和数据库。
LangChain旨在为六个主要领域的开发人员提供支持:
- LLM和提示:LangChain使管理提示、优化它们以及为所有LLM创建通用界面变得容易。此外,它还包括一些用于处理LLM 的便捷实用程序。
- 链(Chain):这些是对LLM或其他实用程序的调用序列。LangChain为链提供标准接口,与各种工具集成,为流行应用提供端到端的链。
- 数据增强生成:LangChain使链能够与外部数据源交互以收集生成步骤的数据。例如,它可以帮助总结长文本或使用特定数据源回答问题。
- Agents:Agents 让LLM做出有关行动的决定,采取这些行动,检查结果,并继续前进直到工作完成。LangChain提供了代理的标准接口,多种代理可供选择,以及端到端的代理示例。
- 内存:LangChain有一个标准的内存接口,有助于维护链或代理调用之间的状态。它还提供了一系列内存实现和使用内存的链或代理的示例。
- 评估:很难用传统指标评估生成模型。这就是为什么LangChain提供提示和链来帮助开发者自己使用LLM评估他们的模型。
2.1.2 什么是LLM?
LLM(英文:Large Language Mode),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。
LLM的特点是规模庞大,包含数千亿的参数,帮助它们学习语言数据中的复杂模式。这些模型通常基于深度学习架构,如转化器,这有助于它们在各种NLP任务上取得令人印象深刻的表现。
自ChatGPT为代表的大语言模型出现以来,由于其惊人的人工智能(AGI)的能力,自然语言处理领域掀起了新一轮的研究和应用的浪潮。特别是随着ChatGLM、LLaMA等较小规模的LLM开源,使得平民玩家也能够运行这些模型,业界涌现出了许多基于LLM的二次微调或应用的案例。
常见底座模型细节概览:
1、知识库构建
(1)文本加载和读取
加载文件:这是读取存储在本地的知识库文件的步骤。
读取文件:读取