Jean's Blog

一个专注软件测试开发技术的个人博客

0%

RAG系统如何优化

RAG的流程图看优化

image-20250801144330897

  • 核心优化方向:完整RAG流程包含多个可优化组件,每个节点都是潜在的优化方向
  • 关键组件详解:

    • 文档切块策略:设置不同切块大小($ Chunk \times Size $)会影响最终检索效果,需考虑重叠($Overlap$)处理

    • 嵌入策略:模型选择直接影响系统表现,除传统E5/BERT外,国内BGE等新型嵌入模型表现优异

    • 文档检索器:不同检索器实现方式会显著影响系统最终效果

    • 上下文生成:提示词工程(Prompt)设计是重要优化点

    • 大模型选择:不同供应商模型(如DeepSeek与OpenAI)在特定任务上表现差异显著

    • 评估维度:系统通过多指标评估模型表现,典型评分示例:

      • 生成响应得分:0.91
      • 评估响应得分:0.75
      • 最佳模型得分:0.74
    • 评估指标体系:

      • 传统指标:BLEU/METEOR
      • 新兴指标:BERT Score/ROUGE Score
      • 专有系统:ABACUS.AI评估框架

更详细的图进行展示

image-20250801145516274

  • 系统化优化框架:形成从文档加载到评估的完整知识图谱
  • 全流程技术分解:
    • 预处理阶段:文档加载→分块优化(语义分块/智能分块)→嵌入→索引构建→向量数据库选型
    • 检索阶段:查询优化(扩展/分解/澄清)→路由策略(逻辑路由/语义路由)→多路检索
    • 后处理阶段:结果重排(时序加权)→压缩校正→主动生成
    • 评估体系:量化指标包括BLEU/METEOR/BERT Score/ROUGE等
  • 方法论特点:不仅指出问题节点,更提供具体优化技术如:
    • 分层索引机制(LA mer index/Raptor策略)
    • 多模态处理能力
    • 模块化RAG架构
  • 优化实施要点:
    • 知识图谱构建:建立组件-方法映射关系,如检索前处理对应查询路由技术
    • 问题定位能力:根据项目特征判断核心优化点(如分层索引需求或结果重排需求)
    • 技术选型原则:
      • 逻辑路由:按问题类型分配至关系型/向量数据库
      • 语义路由:动态选择提示词模板(#1/#2)
      • 时序加权:对近期访问内容增加检索权重

从总图看到优化点,接下来从以下环节细节点进行详细说明

文档加载

image-20250801145931439

  • 加载器类型:
    • Unstructured加载器:支持txt/excel/csv等基础文件格式
    • Json/XML加载器:处理结构化数据格式
    • PDF加载器:支持PyPDF/Unstructured/PyMuPDF等多种解析引擎
  • 解析关键:
    • 复杂文件(如PDF)需要特殊解析处理,避免丢失原有结构
    • 不同文件类型(如markdown)需保留其特有格式特征
  • 常见问题:
    • 不当解析会导致有价值的结构化信息变为”数据垃圾”
    • 建议通过项目实践积累不同文档类型的处理经验

文档分块

image-20250801150121110

  • 分块必要性:
    • 便于向量数据库存储和检索
    • 错误分块会导致信息割裂(如GDP表格的表头与数值分离)
  • 分块策略:
    • 按字符/段落分割:基础但可能破坏语义连贯性
    • 语义分块:智能识别内容边界(如代码按类/函数分割)
    • 重叠分块:保留前后200字等上下文信息
  • 优化效果:
    • 合理分块可提升检索准确率30%以上
    • 保持内容完整性(如表格数据与表头不分离)
    • 特殊场景需定制分块规则(如金融报告中的表格处理)

嵌入

image-20250801150324123

  • 稀疏嵌入:如TF-IDF、BM25等传统方法,特征向量中大部分元素为0(例如”sat”: [1,0,0,0,0,0,0,0,0]),适合精确匹配场景
  • 密集嵌入:如embed-multilingual-v3.0等现代模型,生成连续稠密向量(例如”cat”: [0.25,-0.73,0.91,0.12]),能捕捉语义相似性
  • 专用嵌入:通过Fine-Tuning在特定领域(如医疗、法律)优化的模型,示例显示不同模型对同一词生成的向量差异($cat^2$[0.8,0,0,0,3,0,0,0,0] vs $cat^4$ [0.25,-0.73,0.91,0.12])

索引

image-20250801150500296

  • 父子文档索引:分块时建立层级关系,大文档与小文档分别存储,便于分层检索
  • 分层索引:为每个块生成摘要形成summary块,检索时先定位摘要再关联细节块
  • 多表示索引:同一文档用不同embedding模型生成多种向量表示(如bge-large-en和text-embedding-3-small),利用不同模型优势提升检索全面性
  • 多向量检索器:将单个文档拆分为多个向量表示,适用于需要多维度表征的场景

向量数据库

image-20250801150627245

  • 核心功能:存储数十亿级向量并支持高效最近邻搜索(如Faiss/chroma/Elasticsearch)
  • 索引算法:
    • 近似最近邻算法:HNSW/LSH
    • 量化技术:PQ/OPQ
    • 工业级方案:Milvus/Weaviate/Qdrant/Pinecone
  • 选型关键:根据数据规模选择合适索引,百万级与十亿级数据需要不同优化策略

查询构建

image-20250801150802347

  • 检索前处理:
    • 查询重写:优化模糊查询(如”黑神话悟空设定”)
    • HYDE技术:先生成假设文档再检索(示例:通过假设文档比较提升相关性)
    • 查询分解:将复杂问题拆解为子问题(如”孙悟空师傅的弟子关系”)
  • 查询路由:
    • 向量数据库:处理语义查询(如游戏设定分析)
    • 关系数据库:处理结构化查询(如”九月份销量统计”)
    • 图数据库:处理关系网络查询(如人物关系图谱)
  • 跨库查询:
    • Text-to-SQL:自然语言转关系查询(示例:$Text-to-SQL$转换)
    • Text-to-Cypher:自然语言转图查询(示例:$Text-to-Cypher$实现)
    • 元数据过滤:结合语义和结构化条件进行混合检索

检索有处理

image-20250801151310042

  • 核心功能: 位于检索之后,对检索结果进行优化处理
  • 处理对象: 检索到的文档集合(可能达200-1000个)
  • 必要性: 避免将所有文档直接输入给大模型生成回答

主要处理方法

  • 重排(Reranking)
    • 方法选择: 可采用多种方法组合使用
    • 典型技术:
      • $RRF$(Reciprocal Rank Fusion)
      • $CrossEncoder$
      • $ColBERT$
      • $RankGPT$
      • $RankLLM$
  • 压缩(Compression)
    • 压缩依据: 基于文档相关性和冗余度
    • 实现目标: 将文档压缩成小量级同时保留主要信息
    • 技术代表:$RAG-Fusion$
  • 校正(Validation)
    • CRAG机制: 通过大模型判断检索结果可靠性
    • 工作流程:
      • 将检索文档输入大模型评估
      • 不靠谱结果触发重新检索
    • 实现方式: 需使用$LangGraph$等强大agent设计模式
    • 状态转换: 从状态b校正后返回状态a重新检索

生成

image-20250801151612036

  • 阶段定位: RAG流程的最终环节
  • 核心任务: 由大语言模型生成最终回答

关键考虑因素

  • 模型选择:
    • 推荐使用强大模型(如OpenAI的$GPT-4o$系列)
    • 阿里$32B$模型等替代方案
  • 输出控制:
    • 格式解析($Pydantic$解析器)
    • $JSON$模式处理
    • 工具调用($Function/Tool Calls$)

主动生成机制

  • 质量反馈: 基于回答质量判断是否需要:
    • 查询重写
    • 重新检索
  • 迭代过程: 可反复执行检索-生成循环直至质量达标

评估

image-20250801151827224

1.评估的重要性

  • 定制化需求: 评估是RAG系统的重要环节,但现有评估标准较少,需要根据自身数据和系统特点制定个性化的评估方案
  • 主观性挑战: 现有开源框架(如ragas)提供的忠实度、扎实性、安全性等指标过于主观,主要依赖大语言模型的提示词判断

2.量化评估方法

  • 关键词匹配: 通过检查生成答案中是否包含特定关键词来量化评估
  • 文档链接验证: 确认答案是否正确链接到具体文档编号或文档块
  • 评估标准: 建立100%匹配具体文档/文档块的量化标准

3.评估指标选择

  • 精确率(Precision): 关注检索结果中相关文档的比例
  • 召回率(Recall): 关注系统检索到所有相关文档的能力
  • F1分数: 精确率和召回率的调和平均数
  • MAP/MRR: 适用于排序质量的评估指标
  • P@K: 前K个结果的精确率

4.生成评估指标

  • BLEU/ROUGE/METEOR: 文本生成质量的自动评估指标
  • 忠实度评估: 检查生成内容与检索结果的一致性
  • 数据集构建: 需要建立包含标准答案的评估数据集

5.评估实践建议

  • 指标侧重: 根据应用场景选择侧重精确率或召回率
  • 评估流程: 从简单数据集开始逐步构建完整的评估体系
  • 持续优化: 评估结果应反馈用于改进检索和生成模块

高级RAG

image-20250801152024288

  • 图RAG(Graph RAG): 通过知识图谱增强系统,但存在冗余信息多、成本高、token消耗大等问题。知识图谱的关联性界定是当前主要挑战,但其对系统的加持效果毋庸置疑。
  • 模块化RAG(Modular RAG): 采用模块化设计思路,便于系统扩展和维护。
  • 自主RAG(Agentic RAG): 与Agent技术结合是必然趋势,探讨Agent在执行任务时如何实现RAG功能。
  • 多模态RAG(Multi-Modal RAG): 支持多种数据模态的检索增强生成。
  • 发展现状:
    • 领域进展快速,部分技术昙花一现,部分将成为长期解决方案
    • 图RAG是长期发展方向,但需解决实际应用中的效率问题
    • Agent与RAG的结合是最值得关注的重点方向
  • 实践建议:
    • 需要区分短期热点和长期价值技术
    • 关注知识图谱优化方法以降低计算成本
    • 探索Agent场景下的RAG实现方案