当前位置: 首页 > news >正文

RAG理论基础总结

目录

概念

流程

文档收集和切割

读取文档

转换文档

写入文档

向量转换和存储

搜索请求构建

向量存储工作原理

向量数据库

文档过滤和检索

检索前

检索

检索后

查询增强和关联

QuestionAnswerAdvisor查询增强

高级RAG架构

自纠错 RAG(C-RAG)

自省式 RAG(Self-RAG)

检索树 RAG(RAPTOR)

多智能体 RAG


概念

检索增强生成,给AI配个知识库,回答前先查一查特定的知识库然后结合获取的知识回答

流程

文档收集切片、向量转换和存储、将用户问题也转化为向量表示并过滤后进行相似度搜索(文档过滤和检索)、将检索到的相关文档与用户问题组合成增强提示然后喂给大模型得到结果(查询增强和关联)

文档收集和切割

ETL(抽取、转换、加载)

读取文档

使用DocumentReader组件从数据源(如本地文件、网络资源、数据库等)加载文档。

转换文档

根据需求将文档转换为适合后续处理的格式,比如去除冗余信息、分词、词性标注等,可以使用DocumentTransformer组件实现。

TextSplitter分割器

MetadataEnricher元数据增强器(补充更多的元信息)

  • KeywordMetadataEnricher:使用Al提取关键词并添加到元数据
  • SummaryMetadataEnricher:使用Al生成文档摘要并添加到元数据。

ContentFormatter内容格式化工具(用于统一文档内容格式)

写入文档

使用DocumentWriter将文档以特定格式保存到存储中,比如将文档以嵌入向量的形式写入到向量数据库,或者以键值对字符串的形式保存到Redis等KV存储中

FileDocumentWriter:将文档写入到文件系统

VectorStoreWriter:将文档写入到向量数据库

向量转换和存储

VectorStore接口:SpringAI中与向量数据库交互的核心接口,提供增删改查

搜索请求构建

SearchRequest构建相似度搜索请求

SearchRequest request = SearchRequest.builder()
.query("问题?")
.topK(5)                  // 返回最相似的5个结果
.similarityThreshold(0.7) // 相似度阈值,0.0-1.0之间
.filterExpression("category == 'web' AND date > '2025-05-03'")  // 过滤表达式
.build();List<Document> results = vectorStore.similaritySearch(request);
向量存储工作原理

向量数据库

直接使用阿里云百炼的VectorStore API

基于PGVector,是PostgreSQL的扩展

文档过滤和检索

Spring AI 把整个文档过滤检索阶段拆分为:检索前、检索时、检索后,并在每个阶段提供了一系列组件

检索前

优化用户查询,如查询重写、查询翻译、查询压缩

检索

文档搜索(DocumentRetriever)、文档合并

检索后

查询增强和关联

将检索到的文档和用户查询结合起来,为ai提供必要的上下文

QuestionAnswerAdvisor查询增强

把用户提示词和检索到的文档等上下文信息拼成一个新Prompt,再调用ai

高级RAG架构

自纠错 RAG(C-RAG)

生成后验证

自省式 RAG(Self-RAG)

看看是否需要RAG

检索树 RAG(RAPTOR)

拆解复杂问题

多智能体 RAG

多智能体协作

http://www.xdnf.cn/news/776467.html

相关文章:

  • ps曲线调整
  • JavaSE:面向对象进阶之内部类(Inner Class)
  • 使用autoGen处理多agent
  • ps黑白调整
  • 碳中和新路径:铁电液晶屏如何破解高性能与节能矛盾?
  • 无线错误排查、排错命令
  • 【电赛培训课程】测量与信号类赛题知识点讲解与赛题解析
  • 2 Studying《Effective STL》
  • Day43 Python打卡训练营
  • 人工智能在智能制造业中的创新应用与未来趋势
  • 电磁场与电磁波公式汇总
  • PH热榜 | 2025-06-02
  • AIGC 基础篇 高等数学篇 01函数与极限
  • Arch安装botw-save-state
  • P1803 凌乱的yyy / 线段覆盖
  • Python中sys模块详解
  • 云服务器突发宕机或无响应怎么办
  • 【PCB设计】STM32开发板——电源设计
  • Java注释详解:单行、多行与文档注释的区别与应用
  • c++泛型编程入门与STL介绍
  • ps色阶调整
  • 样本量计算:两独立样本定量资料——平均值差的置信区间法
  • Dify 部署问题处理
  • 本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
  • MySQL触发器与视图
  • 什么是阻抗匹配
  • Python训练营---Day43
  • 一键解决Github无法访问或时断时续的问题-Linux环境
  • 页岩油开采的阶段
  • 无畏契约 directx runtime修复