Agent学习--RAG(1)

最近经过了一段时间的学习,察觉到自己本身对于RAG的掌控还只停留在运用,但还不太懂其中的底层逻辑,换言之,就跟我们平时用智能体平台一样,使用者只需要将文件上传,就会看到有分块的设置选项,知识库节点会显示用的是倒排索引、重排等方法,虽然这看起来不会影响使用,但是从长远来看却是会降低使用的效率。

主要是因为,许多智能体平台的开发初衷是为了让初学者也可以自如地通过配置工作流、chatflow、agent来实现各种不同的功能,但实际上,节点里agent的配置(提示词工程),知识检索这些内容,都需要用户来完成,或许一些简单的功能可以实现,但是只要稍微复杂一些,没有基础的用户变会一头雾水。

基于打下坚实基础的目的,打算重新温习agent的相关知识,并梳理、记录一些关键的要点

核心思想

RAG的核心思想,主要就是在其流程上:分块-检索-增强-生成。

  • 分块:核心在于分块的策略,一般是用正则去区分符号,将不同的段落分成块,但核心点是,不同的文本,并不是简单地用段落去分就行的,本质是在保证语义完整、检索精准的前提下,避免检索到大量的不相关文本。像学术类文本这种架构清晰,概念可能跨越多个段落的,就很适合用递归分块,如果是邮件类,或者产品描述这类自然语言居多的,就比较适合用语义分块

  • 检索:将用户问题转为向量在向量数据库中进行检索,检索的方式一般是关键词匹配+语义相似度检索。但是这里很容易漏掉一个知识点:为什么用向量数据库,向量数据库是如何高效匹配的。实际上,类比为生活中的例子,普通的数据库匹配可以看作是一页一页地去做匹配,但是向量数据库则是会先看目录,定位到具体的位置再去匹配,效率会显著提升。这是因为向量数据库在匹配时,会用到许多索引,起到可以"跳着匹配"的作用。比如,倒排索引便是这样,将不同分词与文档块像字典对应那样,这样在匹配时,就可以先看分词对应哪些文档块,再进行匹配,并进一步通过RRF评分进行重排、筛选,从而提高效率

  • 增强:将检索到的文档块,用户原始问题,系统指令(规则,执行步骤等)打包成一个结构化的提示词,让模型知道可以参考什么来回答,回答时要注重什么,必要的时候可以给出一些例子供模型学习

  • 生成:LLM根据提示词来生成答案

相关推荐
清辞8537 分钟前
入门大模型工程师第十课----学习总结
大数据·人工智能·深度学习·学习·语言模型
弗锐土豆31 分钟前
自动化-程序员从抽象与具象的角度学习自动化
学习·程序员·自动化·抽象·具象
bush435 分钟前
嵌入式linux学习记录十二,mmap
java·linux·学习
共享家95271 小时前
OpenClaw的通道配置
人工智能·学习·openclaw
小刘|1 小时前
揭秘RAG:检索增强生成技术解析
langchain·rag
MartinYeung53 小时前
[论文学习]基于梯度迭代上下文优化的 LLM 隐私越狱攻击框架
学习·区块链
MartinYeung53 小时前
[论文学习]大型语言模型中 PII 洩漏的系统性调查
学习
菜到离谱但坚持4 小时前
【小白零基础】RAG+LangChain 搭建私有知识库问答系统(完整可运行代码+超详细教程+避坑指南)
python·langchain·rag
.千余4 小时前
【C++】C++手写Vector容器:从底层源码模拟实现
开发语言·c++·经验分享·笔记·学习
HappyAcmen5 小时前
2.PDF长文档完整读取
python·pdf·rag