章节三十七:RAG技术框架与评估

一、RAGFlow框架概述

1.1 RAGFlow的概念

RAGFlow:一个结合了RAG(检索增强生成)技术的工作流框架,用来搭建基于大模型的知识库问答系统。

RAG(检索增强生成):先让AI去知识库里搜相关资料,再基于搜到的内容生成回答。好处是答案更准确,不会瞎编。

RAGFlow的核心特点:

第一,工作流程化。把文档处理、索引构建、检索、生成等环节串成一条流水线,每个环节都能灵活配置。

第二,模块化设计。包含文档加载器、处理器、嵌入模型、向量存储、检索器、生成器等模块,想换哪个换哪个。

第三,可视化监控。提供可视化界面和性能监控,方便调试和优化。

第四,评估与优化。内置评估框架,能测出系统哪里弱、怎么改。

应用场景:企业知识库问答、文档智能搜索、个性化推荐等需要结合外部知识的AI应用。

1.2 使用RAGFlow的意义

以前做知识库,要处理各种格式的文档(Excel、Word、PDF、PPT),每种都要写不同的提取脚本,清洗、分块、入库,非常麻烦。RAGFlow提供了统一方案:

第一,可以创建多个独立的知识库空间。

第二,通过可视化界面上传、管理文档,支持各种常见文件类型。

第三,系统自动解析文档内容并存储,不用手写脚本。

第四,创建知识助手来掌握不同的知识库,打造行业专家。

第五,通过对话方式查询知识库,答案会标注信息来源。

二、RAG工作流搭建

2.1 硬件要求

  • CPU:至少4核(x86架构)
  • 内存:至少16GB
  • 磁盘:至少50GB

拉取镜像文件大约需要7.6GB空间,建议用云服务器学习。

2.2 安装部署步骤

第一步:购买云服务器,选择4核16GB配置,镜像选Ubuntu。

第二步:安装Docker。更新软件包 -> 安装Docker依赖 -> 添加Docker官方GPG密钥和软件源 -> 安装Docker -> 启动并确认成功。

第三步:修改系统内核参数,增加虚拟内存映射数量(ES等组件需要)。

第四步:创建目录并上传RAGFlow安装包,解压到/opt目录。

第五步:导入Docker镜像(包括ES搜索引擎、Infinity向量数据库、MinIO对象存储、MySQL关系数据库、Valkey高性能键值缓存)。

第六步:修改镜像标签,与配置文件保持一致。

第七步:启动RAGFlow。如果拉取超时,配置Docker加速器后重试。

2.3 配置知识库

第一步:浏览器访问服务器公网IP,注册账号并登录。

第二步:设置界面语言为中文。

第三步:配置大模型API-KEY。推荐用阿里百炼平台,在模型供应商里找到Tongyi-Qianwen并填入。

第四步:设置默认模型。千问系列比较全面,大语言模型、多模态模型、重排模型、向量化模型都能支持。

第五步:创建知识库,填写名称和描述。

第六步:上传文档并解析,支持PDF、Word、Excel等格式。上传后务必点击"解析"按钮。

第七步:创建知识助手。注意:助理描述一定要详细填写,否则API调用时可能无法灵活处理问题。

第八步:测试对话。回答会标注每条信息的来源和源文件,证明是基于知识库检索而非模型瞎编。

第九步:可以创建多个知识库和助手,让不同助手掌握不同知识库。

三、RAG评估与优化

3.1 评估的意义

Agent上线后的好用程度是多因素耦合的结果:切分、索引、召回、重排、图谱、提示词、模型、工具调用等。仅靠主观体验很难定位瓶颈。

评估的核心价值是把"感觉"变成"可量化、可回归、可定位"的工程闭环:

  • 质量量化:用指标把输出质量数字化
  • 回归保障:改了参数后能快速判断整体是否退化
  • 发现短板:精准定位是检索模块的问题还是大模型生成的问题
  • 自动化监控:减少人工验收成本和主观偏差

3.2 主流评估方法

基于数据集的离线评估(Golden Set):准备question + ground_truth,用当前系统跑出answer + contexts,再人工对比打分。优点是可复现、可回归;难点是黄金集建设成本高。

LLM-as-a-Judge(大模型当裁判):让更强的模型对"答案是否正确/是否基于上下文/是否跑题"做判分。代表工具有RAGAS、DeepEval、TruLens等。优点是更贴近语义质量;风险是裁判模型本身有偏差。

3.3 RAGAS评估框架

RAGAS:一套面向RAG系统的评测框架,在缺少人工标注答案的情况下,用相对自动化的方式衡量RAG的关键质量。

RAGAS把一次问答拆成三要素来评估:Question(问题)、Contexts(检索到的上下文证据)、Answer(生成的答案),可选Ground_truth(参考答案)。

常见指标:

指标 说明 判定方式
Faithfulness(忠实性) 答案中的陈述是否能被上下文支撑,越高越不容易"编" LLM参与判定
Answer Relevancy(回答相关性) 答案是否真正回答了问题,是否跑题 embedding相似度判断
Context Precision(上下文精确率) 检索到的内容里,有用内容占比是否高 LLM/embedding
Context Recall(上下文召回率) 是否覆盖了回答问题所需的关键信息 LLM
Answer Correctness(正确性) 生成答案与参考答案的对齐程度 embeddings语义相似度

3.4 评估优化步骤

第一步:准备评测集(问题列表,可来自真实日志抽样/人工构造/AI合成)。

第二步:编写RAGAS的评估程序(初始化评估组件、加载测试数据、运行RAG pipeline、构建评估数据集、执行评估、导出结果并提取bad case)。

第三步:运行评估,生成评估结果。

第四步:定位问题:

  • Context Precision低:检索噪声大,需要重排序、过滤、改embedding或chunk。
  • Context Recall低:检索没找全,需要调整top-k、召回策略或chunk粒度。
  • Faithfulness低:生成在编,需要优化提示词、引用证据、降低温度等。

第五步:bad case分析。

第六步:优化程序。

3.5 Bad Case分析实例

案例一:错失切片

问题:faithfulness较低,context_precision和context_recall为0。说明相关切片没有最终进入提示词中。可能被embedding匹配遗漏、RRF融合过滤掉、或rerank重排序过滤掉。

解决思路:调整切片大小(把最大长度从2000改为500,最小从500改为100),并考虑纳入更多切片到最终提示词中。越大的切片关键词句会被稀释,评分准确度下降。

案例二:提示词问题

问题:各检索指标都不低,但answer_correctness不高。回答太啰嗦、太散、观点不够集中。

解决思路:在prompt中明确要求"直接回答,不要过度解释,控制字数"。

案例三:缺失逻辑

问题:各指标正常,但答案中存在事实性错误。大量噪声干扰了最终答案输出。

解决思路:利用图谱信息。图谱能把内容提纯,减少干扰,提取核心关键点。具体做法包括优化图谱提示词、修改查询流程让图谱查询结果带出description信息、增加触发警告的时机描述。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐