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

RAG流程详解

一:基础大模型存在的问题

我们为什么要学RAG,那是因为基础的大模型存在一些问题不能满足我们日常的开发使用。如:

  • LLM 的知识不是实时的,模型训练好后不具备自动更新知识的能力,会导致部分信息滞后
  • LLM 领域知识是缺乏的,大模型的知识来源于训练数据,这些数据主要来自公开的互联网和开源数据集,无法覆盖特定领域或高度专业化的内部知识
  • 幻觉问题,LLM 有时会在回答中生成看似合理但实际上是错误的信息
  • 数据安全性

二:RAG介绍

RAG(Retrieval-Augmented Generation)即检索增强生成,为大模型提供了从特定数据源检索到的信息,以此来修正和补充生成的答案。

一个典型的 RAG 应用有两个主要组成部分:

索引 (Indexing):从数据源获取数据并建立索引的管道 (pipeline)。这通常在离线状态下进行。

检索和生成 (Retrieval and generation):实际的 RAG 链,在运行时接收用户查询,从索引中检索相关数据,然后将其传递给模型。

索引 (Indexing)

  1. 加载 (Load):首先我们需要加载数据。这是通过文档加载器 Document Loaders 完成的。
  2. 分割 (Split):文本分割器 Text splitters 将大型文档 (Documents) 分成更小的块 (chunks)。这对于索引数据和将其传递给模型都很有用,因为大块数据更难搜索,而且不适合模型有限的上下文窗口。
  3. 存储 (Store):我们需要一个地方来存储和索引我们的分割 (splits),以便后续可以对其进行搜索。这通常使用向量存储 VectorStore 和嵌入模型 Embeddings model 来完成。

检索和生成(Retrieval and generation)

  1. 检索(Retrieval):给定用户输入,使用检索器Retriever从存储中检索相关的文本片段。
  2. 生成(Generate):ChatModel使用包含问题和检索到的数据的提示来生成答案。

三:流程解释

1. 用户输入处理

  • 目标:解析并理解用户查询的意图和关键信息。
  • 关键技术
    • 查询解析:提取关键词、实体识别(如 NER)、语义解析(理解深层意图)。
    • 查询扩展:通过同义词替换、上下文联想(例如,用户问 “Transformer 结构” 时,补充 “注意力机制” 相关术语)增强检索效果。
    • 向量化:将查询转换为向量表示(如使用 BERT、Sentence-BERT 等模型),便于后续向量检索。

2. 文档检索

  • 目标:从外部知识库中快速找到与查询最相关的文档或段落。
  • 关键技术
    • 索引构建:预处理知识库文档,构建高效的索引结构(如倒排索引、向量索引 FAISS/HNSW)。
    • 检索算法:
      • 稀疏检索:基于词频的方法(如 BM25),适合关键词匹配。
      • 密集检索:基于语义相似度的向量匹配(如 DPR、ANCE 模型)。
    • 多路召回:结合多种检索策略(如同时用 BM25 和向量检索),提升召回率。

3. 文档后处理

  • 目标:优化检索结果,确保输入生成模型的信息质量。
  • 关键技术
    • 去重与排序:根据相关性(如相似度分数)或多样性筛选结果。
    • 截断与分块:处理长文本(如滑动窗口截断),适配生成模型的输入长度限制。
    • 上下文增强:添加元信息(如文档来源、时间戳)供生成模型参考。

4. 生成回答

  • 目标:基于检索结果和用户输入生成自然、准确的回答。
  • 关键技术
    • 提示工程:将检索到的文档与用户查询拼接为生成模型的输入(Prompt),例如:
    • 生成模型选择:使用预训练生成模型(如 GPT-3、T5、BART)进行条件文本生成。
    • 可控生成:通过 Temperature 调整、Top-k 采样等控制生成结果的多样性和准确性。

5. 后处理与验证

  • 目标:优化生成结果的格式和事实准确性。
  • 关键技术
    • 文本润色:去除重复内容、语法纠错、调整句式。
    • 事实核验:对比检索结果与生成内容,确保一致性(如使用 NLI 模型验证逻辑)。
    • 引用标注:标明答案的来源文档(增强可信度)。
http://www.jsqmd.com/news/669041/

相关文章:

  • 2026年热门的室内安全体验馆稳定合作公司 - 品牌宣传支持者
  • SQL处理分组聚合中的数据一致性_使用事务保证
  • 不止于加载:在Cesium中优化ArcGIS WMTS地图服务的性能与视觉体验
  • 【AGI环境监测革命】:3大颠覆性应用、7类实时预警场景与2025碳中和落地路径
  • 从 0 到 1 构建销售 AI Agent Harness Engineering:线索生成、客户画像与转化预测实战
  • 别再为网络不通发愁了!手把手教你配置ARM与交换芯片的MAC直连模式
  • XML 与 CSS:构建现代网页的关键技术
  • Spark大数据分析实战【1.4】
  • Spring Boot项目里,别再用try-catch了!试试@ControllerAdvice+@ExceptionHandler搞定全局异常
  • ESP32开发环境搭建:手把手教你搞定Python依赖报错(ESP-IDF 4.x/5.x通用)
  • CentOS 7.9 保姆级教程:从零搭建IPFS私有节点,并配置WebUI可视化面板
  • 别再傻傻等编译了!手把手教你给Gradle配上本地+远程缓存,Android构建速度飞起
  • 从家庭路由器到云服务器:一次完整的Web请求,DNS、NAT和ICMP都扮演了什么角色?
  • 2026年热门的烟台沙滩赶海热门推荐 - 行业平台推荐
  • 从理论到实践:一维与二维水污染扩散模型的在线模拟与代码实现
  • AGI用户研究黄金三角模型(SITS2026首次发布|含实时仿真沙盒访问权限)
  • 别再只盯着协议了!手把手教你用示波器实测MIPI D-PHY的HS/LP模式切换波形
  • RuoYi-Vue-Pro邮件系统架构解析:企业级消息通知的异步化设计与全链路监控
  • 如何让导航栏的下落动画效果更慢?
  • 从『红色警报』到现实网络:聊聊关键节点失效与系统鲁棒性(附Python模拟代码)
  • Halcon灰度投影实战:用‘简单’模式搞定二维码的快速粗定位
  • 软件规模-功能点分析法
  • QT账号注册踩坑实录:密码要求太奇葩?邮箱验证卡住了?一篇帮你全搞定
  • 从“面包重量”到“用户停留时长”:产品经理/运营必懂的CDF与PDF实战解读
  • 【AGI落地倒计时18个月】:2026奇点大会实测数据揭示——通用智能商用化窗口正在急速收窄
  • 如何快速下载网页视频:VideoDownloadHelper完整指南
  • Laravel 11.x新特性全解析
  • SketchUp STL插件技术解析:3D打印工作流效率提升85%的架构设计与实现方案
  • STM32 HAL库中断里用HAL_Delay卡死?一个优先级设置帮你搞定(附CubeMX配置)
  • 别再只背课文了!用《新概念英语》Lesson 39的‘鲁莽司机’故事,带你理解软件开发的‘风险无视’陷阱