大模型入门指南:RAG检索增强生成与微调技术详解,小白也能看懂!
本文详细介绍了大模型两大核心技术:RAG检索增强生成通过构建外部知识库,让模型检索最新信息并生成准确回答,解决了知识更新问题;微调则通过LoRA等轻量化方法调整模型参数以适应特定任务。文章强调了RAG的实践难点和微调的高成本特性,为开发者提供了选择不同技术场景的参考依据。本文介绍RAG(Retrieval-Augmented Generation)检索增强生成和Fine-tuning(微调)。RA
本文详细介绍了大模型两大核心技术:RAG检索增强生成通过构建外部知识库,让模型检索最新信息并生成准确回答,解决了知识更新问题;微调则通过LoRA等轻量化方法调整模型参数以适应特定任务。文章强调了RAG的实践难点和微调的高成本特性,为开发者提供了选择不同技术场景的参考依据。
本文介绍RAG(Retrieval-Augmented Generation)检索增强生成和Fine-tuning(微调)。
RAG(Retrieval-Augmented Generation)检索增强生成
RAG就是让大模型在外挂的数据库上面找资料,然后再结合找到的资料,优化生成结果,是一种语义检索(向量检索)。也可以理解为开卷考试。
RAG的流程:建库、检索、增强和生成。
第一步,建立知识库
1、这里需要一个向量数据库
2、找一个Embedding模型(模型A),把提供的资料(公司文档、手册、网页等)拆成一页一页的知识片段(文本切片)。
3、把每一页片段都转换成一段数学向量(一串数字密码),然后存进这个向量数据库。这个数据库的特点:意思相近的内容,它们的数字密码也相近,会放在相邻的位置。
第二步,检索
1、模型A会先把用户的问题转换成一段数字密码(向量A)
2、向量A会在这个数据库上进行相似度匹配,把跟向量A相关度最高的K个片段找出来。
第三步,增强和生成
1、增强,增强大模型的知识上下文,把刚才找到的K片段和用户的问题一起打包生成prompt。这里增强的意思,除了大模型学到的知识,也加上知识库找来的知识。
2、生成,大模型看到prompt后,结合自己强大的语言组织能力,消化理解这些知识,然后用最自然、最准确的话生成最终答案。
举个例子演示一下流程:
场景: 你是一家披萨店的老板,用一个大模型做了个客服机器人来回答顾客问题。你的菜单和促销信息(数据库)经常变,但大模型的知识是旧的。
**顾客问题:**你们现在最便宜的披萨是什么?有没有什么优惠?
步骤1:建立知识库
把这周菜单和促销活动放到知识库;
步骤2:检索
快速找到相关内容:
- 资料1(来自菜单文档):
玛格丽特披萨:29元
香肠披萨:33元
超级至尊披萨:38元
(新品)芝士多多披萨:26元
- 资料2(来自促销活动文档):
本周优惠:所有披萨外卖立减5元!
扫码加入会员,免费送可乐一杯。
步骤3:增强和生成
- 增强,把问题和知识整合到prompt
#Prompt
#此处省略角色、任务等部分。
【用户问题】:你们现在最便宜的披萨是什么?有没有什么优惠?
【根据最新资料库找到的答案】:
目前最便宜的披萨是【新品】芝士多多披萨,价格为26元。
当前有一个优惠:所有披萨外卖立减5元!
此外,扫码加入会员,还可以免费获得一杯可乐。
- 生成,大模型结合上述prompt的内容生成内容
【大模型回复】
“您好!根据我们最新的菜单,目前最便宜的披萨是我们新推出的芝士多多披萨,只要26元哦!( ̄▽ ̄)/”
“而且现在有超级优惠:如果点外卖的话,所有披萨还能再减5元,这样算下来就更划算啦!”
“对了,您还可以扫码加入我们的会员,立即免费送您一杯可乐呢!请问您是想堂食还是外卖呢?”
Rerank(重排序)
问题:假如知识库有上百万条数据,也能被检索回来吗?而且是准确的吗?
这里需要细拆检索这个步骤:
1、第一阶段,把问题给到Embedding模型,生成向量A,向量A是需要跟库里的向量比较相似度,通常会把向量A附近的向量都做比较,离向量A比较远的就不做了,因为全部做比较,这个计算量是非常大的。
2、第二阶段,比较完后,假如获取100个片段回来,问题+每个片段,都给到Rerank模型进行打分。
3、最终把最高分k个片段留下来给到prompt,输入给大模型。
上面这个步骤就是重排序的过程,旨在提高速度、降低成本、有效提高检索精度。
Hybrid Search(混合检索)
实际应用中,单纯使用向量检索(即语义搜索)有时并不完美。可以加入关键字检索作为补充。
混合检索的工作流程:
- 并行查询:当用户问题输入后,系统会同时使用关键词检索和语义检索两种方式去知识库中搜索。
- 结果合并与重排序:两种检索方式会各自返回一个结果列表(比如各返回100个片段)。系统会使用一个合并算法(如:加权综合评分、倒数排序融合等)将两个列表合并成一个最终的列表。
- 输出:将合并后得分最高的K个片段作为最终检索结果,送入后续的Rerank或直接生成步骤。
举个例子:
用户问题:“加入会员送的饮料是什么?”
- 关键词检索会匹配到含有“会员”、“送”、“饮料”、“可乐”等关键词的片段,因为它精确匹配了字面词。
- 语义检索可能会匹配到谈论“会员福利”、“免费领取饮品”等语义相近但字面不同的片段。
- 混合检索则会将这两方面的结果都考虑进来,并选出既包含关键词又语义相关的最佳片段,确保【资料2】关于免费送可乐的信息被准确检索到。
难点
从原理上,RAG还是比较容易理解的,但是从实际操作上有很多细活,以下是RAG的一些难点:
1、检索质量不好?比如如何切片?复杂语义无法理解?
2、知识的图片如何处理?
3、找到信息冲突如何处理?
4、知识库如何更新?
5、如何评估设计的RAG好不好?
Fine-tuning(微调)
模型=架构(公式/结构)+参数,微调就是调这个“参数”。微调就是已经在训练好的模型基础上,进一步调整,让模型的输出更符合预期。
现在微调的门槛比过去低了很多,非技术人员更应关注什么情况下需要微调以及微调的相关数据准备。
什么情况下需要微调?
1、Few -Shot、Agent、RAG等技术确实无法做到足够效果的情况下。
2、微调所需要的数据数量以及数据质量都能保障的情况下。
以上是主要的两个方向,但记住非必要不微调。正如微调如炼丹,微调要有数据、要有显卡、要不断调超参、各种试错实验,结论是试错成本高,没有100%成功的流程,结果不确定。
微调的方法
现在主流的微调方法是轻量化微调(Parameter-Efficient Fine-Tuning) ,其中低秩适应微调(Low-Rank Adaptation,LoRA)是最常见的方案。
核心思想:训练过程中,在不改变大多数模型参数的情况下,新增一些低秩调整参数。
举个例子解释一下:
矩阵的加法
3*3矩阵+3*3矩阵
矩阵乘法
3*3矩阵A 与 3*3矩阵B相乘
- c0=A矩阵中第1行 点乘 B矩阵中的第1列
- c1=A矩阵中第1行 点乘 B矩阵中的第2列
- c2=A矩阵中第1行 点乘 B矩阵中的第3列
- c3=A矩阵中第2行 点乘 B矩阵中的第1列
- c4=A矩阵中第2行 点乘 B矩阵中的第2列
- c5=A矩阵中第2行 点乘 B矩阵中的第3列
- c6=A矩阵中第3行 点乘 B矩阵中的第1列
- c7=A矩阵中第3行 点乘 B矩阵中的第2列
- c8=A矩阵中第3行 点乘 B矩阵中的第3列
计算看着挺复杂,不用纠结,这里不是重点,重点是下面。
不同矩阵相乘
- 3x3的矩阵 * 3x3的矩阵 = 3x3的矩阵
- 3x2的矩阵 * 2x3的矩阵 = 3x3的矩阵
- 3x1的矩阵 * 1x3的矩阵 = 3x3的矩阵
- 2x3的矩阵 * 3x2的矩阵 = 2x2的矩阵
- 1x3的矩阵 * 3x1的矩阵 = 1x1的矩阵
- 2x3的矩阵 * 3x1的矩阵 = 2x1的矩阵
- 2x3的矩阵 * 3x4的矩阵 = 2x4的矩阵
- 2x3的矩阵 * 4x3的矩阵 格式错误、 无法相乘
可以看出,矩阵乘法的规则:
- 两个矩阵可以相乘的条件是:第一个矩阵的列数必须等于第二个矩阵的行数。
- 结果矩阵的行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。
之前的文章聊过GPT-3的Wq神经网络,它的参数是12289*12288,如果我们对这组参数来调参,我们按照LoRA的核心思想。原来Wq(12289*12288)所有参数冻结,增加一组ΔW(12289*12288)做加法。
即:Wq+ΔW(ΔW是12289 * 12288的矩阵 )
将ΔW转换为A*B,得
Wq + A*B( A是12289 * r 的矩阵, B是r * 12288 的矩阵),其中r常见取值为4、8、16、32
最终使用LoRA方法,只需新增A矩阵和B矩阵即可,不需要重新训练一个12289*12288的矩阵,这就是LoRA的核心思想。
参数差距对比
原始微调参数量:12289 * 12288 ≈ 1.51 亿
假设r=8,12289*8+8*12288 ≈ 19.6 万
参数量相差了近770倍。
思考
Transformer中会微调哪些矩阵?
总结
结合上一篇,介绍完Prompt、Function Calling、RAG、Fine-tuning。
Prompt,多试多练,总会有收获的。
Function Calling,大模型链接外部世界,Agent+Workflow是目前构建企业级AI应用的主流方向。
RAG,知易难行,需要不断实践,根据场景找到适合RAG设计。
Fine-tuning,非必要不微调。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】
更多推荐
所有评论(0)