07 RAG生成:大模型与Prompt提示工程
本门课程为精品小课,不标配音频。
你好,我是常扬。
我们本节课正式开始讲解 RAG 生成流程。
如上图所示,经过RAG索引流程外部知识的解析及向量化,RAG检索流程语义相似性的匹配及混合检索,系统进入RAG生成流程。生成流程中,首先需要 组合指令,指令将携带查询问题及检索到的相关信息输入到大模型中,由 大模型理解并生成 最终的回复,从而完成整个应用过程。
RAG的本质是通过为大模型提供外部知识来增强其理解和回答领域问题的能力,类似于为大语言模型配备插件,使其能够结合外部知识作出更为精准和符合上下文的回答。大模型在RAG系统中起到大脑中枢的作用,尤其在面对复杂且多样化的RAG任务时,大模型的性能直接决定了整个系统的效果和响应质量,可以说 大模型是整个系统的大脑。
提示词工程 是生成流程中的另一关键环节。通过 有效的指令的设计和组合,可以帮助大模型更好地理解输入内容,从而生成更加精确和相关的回答。精心设计的问题提示词往往能显著提升生成效果,反之则可能导致结果偏差。
这节课我们将深入探讨 大模型的选择 与 提示词工程,提升RAG系统的生成效果。
大模型发展
自2022年OpenAI公司发布ChatGPT以来,AI 2.0时代 “ Scaling Law” 大模型技术范式在全球范围内引发了人工智能学术与产业热潮。
根据中文大模型综合性测评基准SuperCLUE组织发布的2024年8月报告阐述,AI大模型2023-2024年关键进展大致可以分为四个阶段。
- 准备期: ChatGPT发布后国内产学研迅速形成大模型共识
- 成长期: 国内大模型数量和质量开始逐渐增长
- 爆发期: 各行各业开源闭源大模型层出不穷,形成百模大战的竞争态势
- 繁荣期: 更多模态能力的延伸和应用
在OpenAI公司领衔的GPT系列及Sora的推动下,全球AI大模型技术进入了快速发展的新阶段。国内各大模型同步迅速跟进,市场从活跃到爆发,企业纷纷加大研发投入,推动了大模型技术从学术研究走向实际应用。在不到两年的时间里,新技术和新产品的迅速涌现,带来了行业的深度变革,标志着AI 2.0时代的加速到来。
同时SuperCLUE组织也发布了 中文大模型全景图,展示了2024年值得关注的中文大模型,从 通用、 多模态、 行业 三个层面进行了详细分类,各领域的大模型应用层出不穷。RAG中目前更关注 通用大模型,比如闭源的文心一言、通义千问、腾讯混元、字节豆包、Kimi Chat等都是可选择的大模型组件,如果需要私有化部署,Qwen系列、GLM系列、Baichuan系列都在可考虑范围。
更多包含机构和学术背景且具有明确来源的大模型信息,可以访问实时更新的 中国大模型列表,全面记录中国大模型的发展动态。
大模型原理
一切始于Google在2017年发表的论文 《Attention Is All You Need》,引入了 Transformer模型,它是深度学习领域的一个突破性架构,大型语言模型的成功得益于对Transformer模型的应用。
与传统的循环神经网络(RNN)相比,Transformer模型不依赖于序列顺序,而是通过自注意力(Self-Attention)机制来捕捉序列中各元素之间的关系。Transformer由多个堆叠的编码层(Encoder)和解码层(Decoder)组成,每一层包括自注意力层、前馈层和归一化层。这些层协同工作,逐步捕捉输入数据信息特征,从而预测输出,实现强大的语言理解和生成能力。
Transformer模型的核心创新在于位置编码和自注意力机制。位置编码帮助模型理解输入数据的顺序信息,而自注意力机制则允许模型根据输入的全局上下文,为每个词元分配不同的注意力权重,从而更准确地理解词与词之间的关联性。这种机制使得Transformer特别适用于语言模型,因为语言模型需要精确捕捉上下文中的细微差别,生成符合语义逻辑的文本。
上图展示了Transformer模型的架构及其核心机制的可视化示例。左图中,Transformer模型由编码器和解码器两部分组成。编码器负责理解输入信息的顺序和语义,解码器则输出概率最高的词元。
右上图中的示例显示了输入句子中的填空任务,解码器依据输入句子的特征和已生成的部分句子,生成了“She”作为模型的预测结果。生成“She”的核心原因在于右下图所示的注意力机制,其中需要填空的部分对输入句子中的词元“The Doctor”和“Nurse”分配了较高的注意力权重,从而提高了“She”作为输出词元的生成概率。
大语言模型的突破始于2022年年底OpenAI发布的ChatGPT。其核心优势体现在 庞大的参数规模(数百亿甚至数千亿)、基于 PB 级别数据的训练所带来的卓越语言理解与生成能力,以及其显著的涌现能力。大语言模型不仅在传统的自然语言处理任务中展现了卓越表现,还具备了解决复杂问题和进行逻辑推理等高级认知能力。
基于Transformer模型通过预测下一个词元的原理,大语言模型在分析了海量的语料库后,能够在逻辑上精准补全不完整的句子,甚至生成新的句子。这一推理模式赋予了大语言模型生成连贯且上下文相关文本的能力,使其在文本生成、翻译、问答系统等多个领域得到广泛应用。
RAG中如何选择大模型?
在如今大模型层出不穷的情况下,如何在RAG应用场景中选择合适的模型呢?我们面对的是开源与闭源的选择、大参数与小参数的对比,成本的考虑以及云端与私有化部署的抉择。针对这些问题,我们需要结合测评和具体的应用场景进行综合考量。
从 测评角度 来看,前面已经介绍了中文通用大模型的综合性测评基准 SuperCLUE,它对中文场景中的多个任务分支进行测试,涵盖基础能力、专业能力以及中文特性多个方面。每个任务分支又包含多个维度,例如语义理解、生成与创作、代数、生物、成语、诗词等。下图展示了这些维度的具体内容,SuperCLUE每月都会更新测评结果,确保其反映大模型的最新表现。
尤其需要关注的是 SuperCLUE-RAG 检索增强生成测评,在RAG场景中,大模型的检索能力表现是核心。SuperCLUE针对RAG应用场景进行了独立测试,具体评估了大模型在检索和生成过程中的表现,测试数据如下图所示(2024年9月5日数据)。
在SuperCLUE官网的SuperCLUE-RAG检索增强生成分支页面上,可以查看其总榜及四大基础任务的测评结果。选择模型时可以根据 总分,以及模型在 答案及时性、信息整合能力、拒答能力、检错和纠错能力 等方面的表现,进行综合评估,作为场景选型参考。
其次,也是最重要的,我们需要根据 实际应用场景 来考量并选择适合的大模型,以下几个维度是关键:
-
开源与闭源:开源模型适用于数据敏感性高或有严格合规要求的场景,通过自托管实现对数据的完全掌控,确保隐私与安全。而闭源模型则适合数据敏感度较低的应用场景,其维护与服务相对完善,能够降低运维复杂度。
-
模型参数规模:大参数模型在复杂任务中的推理与生成能力较强,但并非所有应用场景都需要高精度模型。小参数模型(如7B)在满足简单逻辑任务时,具备更优的响应速度、成本控制和资源利用效率。因此,模型规模应依据应用复杂性及算力预算进行合理匹配。
-
国内与国外部署:模型选择还需考虑部署环境。如果应用主要在国内进行,虽然调用国外大模型的接口是可行的,但可能会遇到稳定性、网络延迟、注册认证、充值付费等方面的实际问题。此外,数据合规性是重要考量,尤其对于需要遵循国内隐私和数据安全法规的场景,选择国内大模型或本地化部署更为合适。
综上所述,模型的选择应结合RAG应用场景的需求和限制,更好地选择合适的大模型以最大化其效果。
最后对 闭源和开源大模型 做个分析和推荐。闭源与开源大模型在RAG应用中的选择需要结合参数规模、性能差异、成本及数据安全等多重因素加以考虑。
闭源大模型,如 通义千问、文心一言、混元大模型、豆包大模型和 Kimi Chat 等,由于参数量较高,在RAG应用中的实际表现差异其实较小,此类大模型的选择更多地取决于成本需求。
开源大模型,基于其在国内的广泛使用和优异表现,推荐以下三个系列:
阿里云自研的Qwen系列(Qwen-1.8B、Qwen-7B、Qwen-14B、Qwen-72B等)在包含3万亿token的海量数据集上进行训练,数据源涵盖互联网文档、百科、书籍等,特别侧重于中英文双语的多语言数据。Qwen系列在长上下文处理上表现出色,采用了NTK感知插值、窗口注意力等技术,将Qwen-14B的上下文长度从2K扩展至8K以上,Qwen-1.8B/7B则从8K扩展至32K个Token。同时,LogN注意力缩放技术进一步提升了模型在长上下文场景下的效率和表现,非常适合需要深度语义理解的RAG任务。
百川发布的Baichuan-7B和Baichuan-13B模型,在接受了约2.6万个Token训练后,尤其在数学和编码任务中展现出卓越的性能。此外,百川系列模型在安全性方面经过了深入的评估,显示出比其他开源模型更强的安全性保障,这使其在需要高安全标准的RAG应用场景中更具吸引力。
由清华智谱研发的ChatGLM系列(包括ChatGLM-6B、ChatGLM2-6B、ChatGLM3-6B等)在中英双语数据集上训练,并对中文问答与对话任务进行了优化。ChatGLM通过引入高效训练和长上下文处理技术,使得ChatGLM2-6B-32K模型能够处理多达32K个Token的上下文。这种能力对于RAG场景中的长文本检索和生成尤为关键。
提示工程
提示工程(Prompt Engineering)是为生成式 AI 模型设计输入以获取最佳输出的实践。这些输入被称为 提示(Prompt),而编写这些提示的过程就是提示工程。其核心理念是,通过提供更优质的输入,可以让生成式 AI 模型(如大型语言模型)生成更符合需求的结果。这意味着模型能够更好地执行各种任务,包括问答、编写邮件、生成代码、分析和合成文本、与客户通过聊天机器人互动等。
提示工程是一门较新的技术,旨在通过 开发和优化提示来有效利用语言模型的潜力。提示工程师的任务不仅仅是设计提示,而是通过深刻理解模型的功能和局限性,创造能够与模型输入产生最佳互动的提示。研究人员和开发人员通过提示工程来提升模型在执行常见和复杂任务(如问答、推理等)中的能力。提示工程不仅仅是设计和开发提示,而是包含了一系列的技能和技巧,这些技能和技巧有助于与语言模型的有效互动和功能扩展。
一个提示通常包含以下几类元素:
- 指令(Instruction):指明模型要执行的特定任务或操作。
- 上下文(Context):为模型提供额外信息或背景,可以帮助引导模型生成更准确的响应。
- 输入数据(Input Data):我们希望模型回答的问题或感兴趣的输入内容。
- 输出指示符(Output Indicator):指定模型的输出类型或格式,例如格式、是否要求生成代码、总结文本或回答具体问题。
这些元素的组合和优化是提示工程的关键,能够直接影响大模型的性能和输出质量。
RAG中提示工程的技巧
在RAG场景中,提示工程不仅能够提升生成质量,还可以解决常见的RAG问题,如缺失内容、格式错误、缺乏细节和回答不全面等。以下是一些在RAG任务中常用的提示工程技巧。
- 具体指令法
通过向大模型提供具体、清晰的指令,能够提高输出的准确性。模糊的指示往往导致模型产生不理想的结果,而具体指令则有助于模型明确任务目标,生成更符合预期的内容。
- 示例学习
通过给模型提供多个参考示例,模型可以基于这些示例进行模式识别,进而模仿、思考并生成类似的答案。这种方法在无需对模型进行进一步训练的情况下,有效提升了模型的输出质量。
以下是两个关于银行业的分析示例,请按照这种格式对新的报告进行分析:
- 示例 1:**市场趋势**:由于政策放宽,银行贷款增长迅速。
- 示例 2:**政策影响**:新的利率政策可能会对中小企业贷款产生负面影响。
请对下面报告进行同样的分析。
- 默认回复策略
当模型无法从文档中获取足够信息时,通过设定默认回复策略,避免模型产生“幻觉”,即生成虚假的答案。这可以确保模型仅基于文档中的事实进行回答。
- 任务角色设定
通过为模型设定特定的角色身份,可以帮助模型更好地理解任务要求和角色责任,从而输出更加一致、专业的内容。
- 解释理由法
在编写提示时,向模型解释为什么某些任务需要特定的处理方式。这样可以帮助模型更好地理解任务背景,从而提高输出的质量和相关性。
- 文档基础说明
为模型提供文档的背景信息和文本来源可以帮助奠定任务基础,让模型更好地进行任务推理和回答。
通过这些提示工程技巧,RAG任务的输出质量可以高效、低成本地提升,解决常见生成问题。
总结
这节课我们讲解了RAG生成流程中大模型与提示词工程。
- 大模型与提示工程的作用
大模型是RAG系统的核心大脑,承担中枢功能,处理输入信息并生成准确的回答。同时,提示工程通过设计有效且精确的提示词,可以显著提升RAG系统中大模型的生成效果。
- 大模型
自ChatGPT发布以来,大模型技术迅速发展,其演进过程可划分为准备期、成长期、爆发期和繁荣期。SuperCLUE基准测评为中文大模型提供了月度更新的详尽性能评估数据,开发者可依据大模型在RAG检索场景的测评结果,并结合具体应用场景的需求,合理选择适用的大模型。
- 提示工程
提示工程通过为大模型设计高效且精确的提示词,能够有效引导大模型理解输入信息,从而提升生成的准确性与相关性。提示工程的核心在于设计任务指令、上下文信息、输入数据和输出格式的合理组合,通过具体指令、示例学习、默认回复策略、角色设定等技巧,有效解决生成过程中可能出现的缺失信息、格式错误等问题,提升RAG系统回答的生成效果。
思考题
在提示工程中,过于具体的指令可能会限制模型的创造性,过于宽泛的提示则可能导致生成偏差。如何在提示设计中找到合适的权衡点,既能够引导模型生成高质量结果,又不过度限制模型的灵活性?请分享你在实际场景使用大模型提示工程中的经验。