其实对于RAG,我的一个很通俗的理解就是,ChatGPT3.5是只能回答2021年之前的问题,问他2021年之后的,他一概不知道,这个大概就是解决此问题的技术之一吧,和fine-tuning都是为了增量续训以及更新模型的知识库?
一、RAG技术概述与工作原理
RAG(检索增强生成)通俗来讲,其实就是一个搜索引擎,将用户输入的内容作为索引,在外部的知识库中进行检索并结合LLM进行生成回答(关键就是可以外接一个实时更新的网络信息世界,实现外部记忆,不需要训练过程,直接搜索外面的玩意就行了,成本很低)
RAG的工作原理:
三大板块:提问(索引)---检索Retrieval(在外部数据库以及自己的数据库检索与问题相关的文档)---生成Generation(将检索到的文档与原始问题一起输入于LLM,生成最终的回答)
二、RAG技术中的数据存储
向量数据库(Vector-DB):RAG技术里专门用于存储外部数据的地方。
主要功能就是:
1.将文本于数据通过预训练模型转换为向量(且这些向量可以捕捉到文本的语义信息,也就是不能改变意思!);
2.还有就是可以根据索引,在向量数据库快速找出最相关的向量(通过一些相似度度量指标啦),主要就是调出与检索最相关的文档,用于后面的LLM的输入;
三、RAG技术流程演示
下图是以一篇新闻稿(奥特曼糟到openai董事会逼宫那件事情),对比了纯LLM的输出和结合RAG技术的LLM的输出的效果,很显然针对这些实时的数据,RAG是能够通过外部的互联网数据库捕捉到信息并结合LLM给出很好的回答的
四、RAG发展进程(具体的流程见下图RAG发展进程)
1.Naive RAG
只有基础的三个板块:索引-检索-生成,三部分构成的最基础的RAG范式
主要用于简单的问答系统和信息检索(普普通通的LLM+Google)
2.Advanced RAG
在检索part前对用户的问题进行拓展,重写等预处理,检索part后对检索到的信息进行总结重排融合等处理,使信息收集处理效率更高,
可用于高级一点的摘要生成/内容推荐等更高阶应用
3.Modular RAG
多模态任务的RAG系统,适用于多模态的任务场景,可以根据特殊业余需求进行定制化服务
五、RAG与模型微调的比较(最关键最重要的一part!!!)
RAG:毕竟RAG就是能够收集外部数据库的信息,能够收集实时更新数据库(外接互联网)(无参数更新)
fine-tuning:而模型微调的本意也是希望能够通过新数据的引入改变大模型的参数,以更新大模型本身的知识储备,增量续训嘛(参数更新训练)
所以两者其实本质上都是为了给大模型扩充他的知识储备,只是一个是外接互联网,一个是通过新的数据训练微调大模型(比如八戒chat还有嬛嬛chat哈哈哈)
关键对比:
1.RAG其实就是适合于需要结合最新信息和实时数据的任务,比如写新闻,或者炒股,就是太依赖外部只是库的质量和范围,毕竟互联网鱼龙混杂
2.Fine-tuning的话就是通过在特定任务的数据进行训练,使其拥有对特定任务的能力,适用于数据可用且需要模型高度专业化的任务,比如特定领域的文本分类和文本生成(比如我就要一个适用于土木工程的LLM),或者搞一个八戒chat或者嬛嬛chat.
这里是一坐标轴,你要看懂啊,X轴是模型任务适配要求,Y是外部数据需求。很显然RAG适用于外部数据需求很广很大(数据库大而广), 模型任务适配要求低的(模型任务需求不特定);Fine-tuning适用于外部数据需求较窄(数据库小而专),模型任务需求特定的。
六、RAG以及LLM的评估指标
七、RAG技术应用-茴香豆部署实战
茴香豆,主打一个智能客服?
其实就是结合RAG技术和LLM,进行技术问答啦。这节课主要还是RAG技术,fine-tuning在后面呢!
看起来确实就是针对于一个群聊助手来开发的喔
茴香豆构建流程如下:其实就是微信等前端中用户提出索引---利用自己的数据库+外部互联网数据库检索---结合本地或远程的LLM结合输出。整个流程中,索引、检索、生成三大版本由茴香豆连接!
外接互联网知识库+LLM
茴香豆的一个工作流程:
索引--检索(原有数据库+互联网+知识库)--对检索结果进行打分选取最相关的文档--并结合提问作为LLM(本地的大模型+远程的大模型接口)的输入--得到输出回答--检验回答安全性
总之,感觉还不错,大概的原理也就是刚刚讲了这么久的RAG技术,这个技术与fine-tuning具有可比性,后一节课学习了fine-tuning再一起实战比较吧!