RAG实操教程langchain+Milvus向量数据库创建你的本地知识库(一)
RAG是的缩写,翻译为中文的意思就检索增强,以基于最新,最准确的数据建立LLM的语料知识库。LLM。
什么是 RAG
RAG
是retrieval-augmented-generation
的缩写,翻译为中文的意思就检索增强,以基于最新,最准确的数据建立LLM
的语料知识库。
LLM
现存的痛点
我们知道 LLM
的知识库是通过现有的网络公开的数据作为数据源来训练的,现在公开的很多模型他们基于的训练数据会比我们现在网络上公开的数据早很多,那自然就会产生一种问题,网络上最新的数据和知识 LLM
是不知道。还有一种情况就是很多企业他们对自己的数据的安全做的很好,也就是私有化数据(这些数据是有价值的,也是企业的立足之本)。这些数据网络上肯定是不存在,那自然 LLM
也是不知道的。
我们在提问LLM
对于一些不知道的知识时候,LLM
很多时候是不知道如何回答问题的。甚至会对我们的问题进行胡诌随机回答,也就是瞎说。
为什么要用 RAG
如果使用 pretrain 好的 LLM 模型,应用在你个人的情境中,势必会有些词不达意的地方,例如问 LLM 你个人的信息,那么它会无法回答;这种情况在企业内部也是一样,例如使用 LLM 来回答企业内部的规章条款等。
这种时候主要有三种方式来让 LLM 变得更符合你的需求:
- \1.
Promt Enginerring
:输入提示来指导 LLM 产生所需回应。例如常见的 In-context Learning,通过在提示中提供上下文或范例,来形塑模型的回答方式。例如,提供特定回答风格的示例或包含相关的情境信息,可以引导模型产生更合适的答案。 - \2.
Fine tuning:
这个过程包括在特定数据集上训练LLM
,使其响应更符合特定需求。例如,一个EDA公司会使用其内部文件verilog code
进行Fine tuning
,使其能够更准确地回答关于企业内部问题。但是Fine tuning
需要代表性的数据集且量也有一定要求,且Fine tuning
并不适合于在模型中增加全新的知识或应对那些需要快速迭代新场景的情况。 - \3. RAG (Retrieval Augmented Generation):结合了神经语言模型和撷取系统。撷取系统从数据库或一组文件中提取相关信息,然后由语言模型使用这些信息来生成答案。我们可以把
RAG
想像成给模型提供一本书或者是文档、教程,让它根据特定的问题去找信息。此方法适用于模型需要整合实时、最新或非常特定的信息非常有用。但RAG
并不适合教会模型理解广泛的信息或学习新的语言、格式。
目前的研究已经表明,RAG
在优化 LLM
方面,相较于其他方法具有显著的优势。
主要的优势可以体现在以下几点:
- \1. RAG 通过外部知识来提高答案的准确性,有效地减少了虚假信息,使得产生的回答更加准确可信。
- \2. 使用撷取技术能够识别到最新的信息(用户提供),这使得 LLM 的回答能保持及时性。
- \3. RAG 引用信息来源是用户可以核实答案,因此其透明透非常高,这增强了人们对模型输出结果的信任。
- \4. 透过获取与特定领域数据,RAG能够为不同领域提供专业的知识支持,定制能力非常高。
- \5. 在安全性和隐私管理方面,RAG 通过数据库来存储知识,对数据使用有较好控制性。相较之下,经过 Fine tuning 的模型在管理数据存取权限方面不够明确,容易外泄,这对于企业是一大问题。
- \6. 由于 RAG 不需更新模型参数,因此在处理大规模数据集时,经济效率方面更具优势。
不过虽然RAG
有许多优势在,但这3种方法并不是互斥的,反而是相辅相成的。结合 RAG
和 Fine tuning
,甚至 Promt Enginerring
可以让模型能力的层次性得增强。这种协同作用特别在特定情境下显得重要,能够将模型的效能推至最佳。整体过程可能需要经过多次迭代和调整,才能达到最佳的成效。这种迭代过程涵盖了对模型的持续评估和改进,以满足特定的应用需求。
如何解决上面的问题
那如何让 LLM
知道这些最新/私有的数据的知识呢❓
那就是 RAG
。通过将模型建立在外部知识来源的基础上来补充回答。从而提高 LLM
生成回答的质量。
在基于 LLM
实现的问答系统中使用 RAG
有三方面的好处:
- • 确保
LLM
可以回答最新,最准确的内容。并且用户可以访问模型内容的来源,确保可以检查其声明的准确性并最终可信。 - • 通过将
LLM
建立在一组外部的、可验证的事实数据之上,该模型将信息提取到其参数中的机会更少。这减少了LLM
泄露敏感数据或“幻觉”不正确或误导性信息的机会。 - •
RAG
还减少了用户根据新数据不断训练模型并随着数据的变化更新训练参数的需要。通过这种方式企业可以减低相关财务成本。
现在所有基础模型
使用的是 transformer
的 AI
架构。它将大量原始数据转换为其基本结构的压缩表示形式。这种原始的表示基础模型可以适应各种任务,并对标记的、特定于领域的知识进行一些额外的微调。
不过仅靠微调很少能为模型提供在不断变化的环境中回答高度具体问题所需的全部知识,并且微调的时间周期还比较长。所以科学家们提出了 RAG
,让 LLM
能够访问训练数据之外的信息。RAG
允许 LLM
建立在专门的知识体系之上,以更准确的回答问题,减低幻觉的产生。
安装 langchain
使用下面的命令可以快速安装 langchain
相关的依赖
文档加载器 pdf
在这篇文章中我们使用pdf作为我们的知识库文档。
加载文档的过程一般需要下面的步骤:
- • 解析文档(txt、pdf、html、url、xml、markdown、json)等等为字符串(langchain已经分装了几十种文档加载器,感兴趣的可以去参考官网)。
- • 将字符串拆分为适合模型的对话窗口的大小,称为
chunk
,chunk
的大小需要依据模型的会话窗口设定。 - • 保存拆分好的文档保存到向量数据库中。
- • 设计向量数据库的数据库、集合、字段,索引等信息。
- • 从向量数据库中检索需要的数据
这些步骤 langchain
已经给结合自己的工具连做好了封装,所以我们直接使用 langchain
来构建RAG
。
上面有两个参数需要注意下:
chunk_size=1000
表示拆分的文档的大小,也就是上面所说的要设置为多少合适取决于所使用LLM 的窗口大小。
- • 如果设置小了,那么我们一次查询的数据的信息量就会少,势必会导致信息的缺失。
- • 如果设置大了,一次检索出来的数据就会比较大,LLM 产生的token就会多,费用贵,信息不聚焦等问题。
chunk_overlap=100
这个参数表示每个拆分好的文档重复多少个字符串。
- • 为什么要重复:如果拆分后的
chunk
没有重复,很有可能会产生语义错误。比如这样一段文本:....小米汽车的续航里程为700公里....
如果文本正好从 700的哪里拆分开的话,那给人展示的时候就会产生酒究竟是700m还是700公里才歧义。 - •
chunk_overlap
如果设置比较大的值也不合适。这样每个文档的重复度就会很大,导致有用的信息就会减少,从而 LLM 回复的内容有可能缺少关键的信息。
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
更多推荐
所有评论(0)