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

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.lryc.cn/news/2396917.html

相关文章:

  • 列表推导式(Python)
  • 嵌入式RTC工作原理及应用场景
  • 一天搞懂深度学习--李宏毅教程笔记
  • Go语言常见接口设计技巧-《Go语言实战指南》
  • python打卡训练营打卡记录day43
  • Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗libvega_face.so人脸属性(年龄,性别,肤色,微笑,种族等)检测流程详解
  • 解决:输入SSH后,仍无法通过网址登录以及紧接着的新问题Permission denied(publickey,password).
  • 【QT控件】QWidget 常用核心属性介绍 -- 万字详解
  • uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)
  • HTTPS加密通信详解及在Spring Boot中的实现
  • 如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?
  • 【第16届蓝桥杯 | 软件赛】CB组省赛第二场
  • SQL进阶之旅 Day 10:执行计划解读与优化
  • AR/MR实时光照阴影开发教程
  • Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用
  • 【汽车电子入门】一文了解LIN总线
  • JVM学习(七)--JVM性能监控
  • 关于 java:5. Java IO 与文件操作
  • 【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)
  • 【笔记】MLA矩阵吸收分析
  • 600+纯CSS加载动画一键获取指南
  • 开源的JT1078转GB28181服务器
  • 智能守护电网安全:探秘输电线路测温装置的科技力量
  • Java垃圾回收算法及GC触发条件
  • 【Hot 100】118. 杨辉三角
  • useMemo useCallback 自定义hook
  • ffmpeg 的视频格式转换 c# win10
  • 【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection
  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【Doris基础】Apache Doris中的Version概念解析:深入理解数据版本管理机制