1. RAG系统概述

1.1 什么是RAG

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与大语言模型生成能力相结合的架构。其核心思想是:在模型生成回答之前,先从外部知识库中检索相关文档片段,然后基于检索到的内容指导模型生成更准确、更可信的输出。RAG架构由三个关键环节构成:

  1. 检索(Retrieval):根据用户查询,从向量数据库或文档库中搜索最相关的文档片段(Chunks)
  2. 增强(Augmented):将检索到的文档片段与用户原始查询拼接,构建增强的上下文Prompt
  3. 生成(Generation):将增强后的Prompt输入大模型,生成包含引用来源的最终回答
💡 为什么RAG如此重要 RAG是目前企业级AI应用中最主流的落地范式。相比纯LLM,RAG能有效缓解幻觉问题、引入领域知识、实现可追溯的来源引用,特别适合金融、法律、医疗等对准确性要求极高的行业。银行内部的知识库问答系统几乎都基于RAG架构构建。

1.2 为什么需要专门测试RAG系统

传统的大语言模型评测(如MMLU、C-Eval等基准测试)主要衡量模型的通用知识能力,无法反映RAG系统在特定领域知识库下的实际表现。RAG系统引入了检索和知识注入环节,整个系统的质量取决于"检索质量 × 生成质量"的乘积效应——任何一个环节的短板都会导致最终答案的严重偏差。因此,需要建立一套系统性的RAG测试方法论来回答以下问题:

1.3 RAG系统的质量挑战

RAG系统的质量挑战横跨数据、检索、生成三个层面,且各个环节之间存在耦合关系。以下是主要的挑战分类:

挑战维度具体问题影响
文档预处理 分块粒度不当、文档格式混乱、表格/图表无法解析 检索时无法定位到准确信息片段
语义匹配 向量相似度无法捕捉逻辑关系、同义词映射失效 语义相近但逻辑不符的内容被错误召回
检索召回 知识覆盖不全、多义查询混淆、首次命中率低 缺失关键信息导致回答不完整或错误
上下文窗口 检索文档过多超出模型上下文限制、关键信息被截断 模型只能看到部分信息,回答片面
生成幻觉 模型脱离检索内容生成虚假信息、编造数据 用户无法区分哪些信息有来源依据
多源冲突 知识库中存在矛盾文档,新旧版本并存 模型引用矛盾信息,回答前后不一致
时效性 文档更新后向量索引未同步、缓存未失效 用户获取到的是已过时/废止的信息

2. 检索质量测试(核心)

检索环节是RAG系统的第一道关口,其质量直接决定了后续生成的上限。检索质量测试关注的是:对于给定的查询,系统能否从知识库中准确、完整地找到最相关的文档片段。

2.1 检索准确率指标

评估检索准确率的核心指标包括 Top-K 命中率、MRR(Mean Reciprocal Rank)和 NDCG(Normalized Discounted Cumulative Gain)。这些指标从不同角度衡量检索结果的质量。

指标定义衡量重点适用场景
Top-K 命中率
(Hit Rate@K)
在前K个检索结果中至少有一个相关文档的查询比例 检索结果是否"覆盖"了正确答案 要求至少有一个相关文档的场景
MRR
(Mean Reciprocal Rank)
第一个相关文档出现位置的倒数,对所有查询取均值 正确答案在结果中的排名 关注首个正确答案位置,排名越靠前越好
NDCG
(Normalized DCG)
考虑排序位置和相关性分级的归一化折损累计增益 排序质量的综合评估 有多级相关性标注的场景(强相关/弱相关/不相关)
Precision@K 前K个结果中相关文档的占比 检索结果的"纯度" 用户仅浏览前几条结果的场景
Recall@K 前K个结果中相关文档占全部相关文档的比例 检索的完备性 需确保不遗漏关键信息的场景(如合规查询)
✅ 实践建议 在实际测试中,建议同时关注 Hit Rate@3 和 MRR,两者结合能同时衡量"能不能找到"和"找得靠不靠谱"。对于金融合规场景,优先关注 Recall@5 确保不遗漏关键条款。

2.2 召回率测试

召回率测试的核心目标是验证系统在不同类型的查询下能否将知识库中所有相关的文档片段检索回来。测试时需要构建包含"已知正确答案"的标注数据集(Ground Truth),标注每个查询对应的期望文档列表。

召回率测试的关键场景:

2.3 检索延迟测试

在用户体验中,检索延迟直接影响系统响应速度。向量检索虽然能在大规模数据中高效搜索,但仍需关注以下性能维度:

⚡ 性能红线 对于面向用户的交互式知识库问答系统,端到端响应时间(检索+生成)通常要求在 3秒以内。其中检索环节一般应控制在 500ms 以内。超过此阈值用户体验会显著下降。

2.4 分块策略(Chunk Size)测试

文档分块策略是影响检索质量的关键预处理参数。Chunk 过大(如 2000 token)可能包含过多噪音,降低检索精度;Chunk 过小(如 100 token)可能导致语义碎片化,丢失上下文关联。测试需要对比不同分块策略下的检索效果:

测试方法:使用同一份标注数据集,固定检索策略(如相同的 Embedding 模型和 Top-K),仅改变分块参数,对比 Hit Rate@3 和 MRR 的变化。

2.5 混合检索测试

混合检索(Hybrid Search)结合了语义检索(向量相似度)和关键词检索(BM25等稀疏检索)的优势。语义检索擅长理解意图和同义表达,关键词检索对精确术语、专有名词和代码片段效果更好。测试应对比以下模式:

检索模式优势劣势适合场景
纯语义检索 理解语义意图,同义表达友好 专有名词/代码匹配弱 自然语言问答、模糊查询
纯关键词检索(BM25) 精确匹配,术语/代码命中率高 无法理解同义改写 精确搜索、法规条款查询
混合检索(RRF融合) 结合两者优势,互为补充 参数调优复杂,计算开销增加 企业知识库、多类型混合文档
重排序(Re-rank) 在粗排基础上精细筛选 增加额外延迟和计算成本 对准确率要求极高的场景

3. 生成质量测试

生成环节是RAG系统面向用户的最终产出,其质量直接影响用户的信任度和使用体验。生成质量测试的核心原则是:答案必须基于检索文档,而非模型的内部知识

3.1 忠实性(Faithfulness)

忠实性是RAG系统生成测试中最重要的指标。它衡量的是:生成答案中的每一个事实声明,是否都能在检索到的文档中找到依据。高忠实性的答案意味着"所说即所查",不会编造任何不在检索文档中的信息。

测试方法:将生成答案拆解为原子事实声明(Atomic Claims),逐条与检索文档对照,计算能找到依据的声明比例。

# 忠实性评估示例
生成答案:"贷款利率为3.45%,由人民银行2024年1月发布。"

拆解声明:
1. "贷款利率为3.45%"     → 检索文档中找到依据 ✅
2. "由人民银行发布"      → 检索文档中找到依据 ✅
3. "2024年1月发布"       → 检索文档中未找到 ❌(幻觉)

Faithfulness = 2/3 = 66.7%(此项不达标)
⚠️ 忠实性的重要性 在金融场景中,一条包含幻觉的回答可能引发严重的合规风险。例如虚构利率、伪造政策条款或错误描述业务流程,都可能导致用户做出错误决策。忠实性应是金融RAG系统的"一票否决"指标。

3.2 答案相关性

答案相关性(Answer Relevancy)衡量的是生成答案是否真正回答了用户的问题,而非答非所问或绕圈子。即使答案忠实于检索文档,如果与用户原问题不匹配,仍然是一次失败的交互。

3.3 幻觉检测

幻觉(Hallucination)是RAG系统最棘手的问题之一。即使有了检索增强,模型仍可能在以下情况下产生幻觉:

  1. 拼凑式幻觉:将不同文档中的信息违法拼接,产生文档中不存在的新事实
  2. 补全式幻觉:检索文档信息不完整时,模型用内部知识"补充"了缺失信息
  3. 推理式幻觉:基于正确事实进行错误推理,得出看似合理但错误的结论
  4. 格式式幻觉:编造不存在的引用编号、章节编号、表格行号等

测试策略:构建"陷阱测试集"——包含模型内部知识中有但检索文档中不存在或被故意修改的信息点,验证模型是否严格遵守检索文档而非自身知识。

3.4 引用准确性

引用准确性测试验证生成的答案是否正确标注了信息来源。在银行合规场景中,来源追溯是刚性需求,用户必须能够通过引用回到原始文档进行验证。

3.5 上下文利用率

上下文利用率衡量的是模型是否充分利用了检索到的所有相关文档。常见的问题是模型仅依赖排名最高的1-2个文档,而忽略了后续文档中包含的关键信息。测试方法:

4. 端到端测试

端到端测试将RAG系统视为一个完整的黑盒,模拟真实用户的使用场景,从输入到输出全面评估系统表现。

4.1 完整流程的质量评估

端到端评估的核心要素包括:

评估维度评估方法关键指标
答案质量 人工标注 + LLM自动评分 忠实性、相关性、完整性、准确性
响应时间 压测工具监控 P50/P95/P99 延迟、首Token时间
用户体验 满意度问卷 + 行为分析 NPS、答案采纳率、追问频率
系统稳定性 长稳测试/混沌工程 错误率、OOM频率、服务可用率
知识覆盖 知识库覆盖率扫描 文档覆盖率、盲区识别率

4.2 多轮对话中的上下文保持

实际使用中,用户往往通过多轮追问来逐步获取信息。RAG系统需要在多轮对话中正确理解上下文继承关系:

4.3 边界情况测试

RAG系统的边界情况测试尤为重要,因为边界场景往往是生产环境中最容易出问题的地方:

⚡ 关键边界场景:知识盲区 知识盲区的处理方式是衡量RAG系统成熟度的重要标志。一个成熟的系统应在检索置信度低于阈值时主动降低回答的确定性,加上"根据当前知识库"等限定词,并建议用户提供更多信息或转向人工客服。

4.4 用户满意度评估

用户满意度评估需要结合人工评估和自动评估两套体系:

5. RAG评估框架与工具

5.1 RAGAS评估框架

RAGAS(RAG Assessment)是目前最主流的RAG系统开源评估框架,由Exploding Gradients团队维护。它提供了一套标准化的评估指标,覆盖检索和生成两个环节:

指标评估对象计算方式理想值
Faithfulness 生成答案的忠实性 将答案拆解为claims,逐条与检索文档对比 ≥ 0.90
Answer Relevancy 答案与问题的相关性 基于答案反向生成问题,计算与原问题的语义相似度 ≥ 0.85
Context Precision 检索上下文的精确度 检索文档中相关文档的排序位置 ≥ 0.80
Context Recall 检索上下文的召回率 检索文档覆盖Ground Truth的比例 ≥ 0.90
Context Relevancy 检索文档与问题的相关性 检索内容中不必要的冗余句子比例 ≥ 0.70
Answer Correctness 答案的事实正确性 与Ground Truth答案的语义相似度+F1 ≥ 0.85
🔧 RAGAS快速上手 pip install ragas 即可安装。RAGAS支持与LangChain、LlamaIndex等主流框架集成,评估时只需传入 question、answer、contexts、ground_truth 四个字段,即可一键计算所有指标。

5.2 TruLens评估

TruLens 是由TruEra推出的RAG应用评估与可观测性框架。相比于RAGAS更偏重离线批量评估,TruLens的优势在于提供了在线监控能力,可以在生产环境中持续追踪RAG系统的质量变化。其核心功能包括:

5.3 自定义评估方案的构建

通用评估框架虽然便捷,但在金融等垂直领域往往需要定制化评估方案。构建自定义评估方案的关键步骤:

  1. 构建领域测试集:由业务专家创建标注了标准答案和期望引用文档的问答对(建议至少200+条)
  2. 定义评估维度:根据业务场景确定核心评估指标(如合规性、风险提示、免责声明等金融特有维度)
  3. 设计评分标准:制定1-5分的评分细则(Rubrics),降低人工评分的主观差异性
  4. 自动化评估管线:使用LLM-as-Judge实现批量自动评分,抽取20%样本进行人工交叉验证
  5. 持续迭代:根据生产环境反馈的不良案例(Bad Cases),不断补充测试集和优化评分标准

6. 银行业RAG系统的测试重点

6.1 银行知识库问答系统的特殊性

银行知识库问答系统(对标行内"智能问答系统"等智能助手)在RAG系统测试上有其独特的要求。金融领域对信息的准确性、合规性和可追溯性有着远高于通用场景的标准:

6.2 金融文档检索的质量要求

银行知识库中包含的文档类型多样,对检索质量提出了差异化要求:

文档类型检索难点测试关注点
政策法规 条文编号体系、法律术语密集、更新频繁 条款级精确检索、生效/废止时间判断
操作规程 步骤编号、流程图、条件分支逻辑 步骤完整性、条件分支覆盖
产品说明书 表格数据(利率表、费率表)中的结构化信息 表格数据提取准确性、数值范围匹配
培训材料 非正式表述、口语化内容、新旧知识混杂 核心概念的准确提取、过时内容的识别
问答FAQ 问题相似度高、答案简短难以匹配语义 问法多样性的鲁棒性

6.3 合规性验证

合规性验证是银行业RAG系统测试中不可缺失的环节,主要包括:

🏦 监管红线 银行RAG系统若提供错误的金融建议(如误导性产品推荐、错误的风险评级),可能触发《银行业监督管理法》《个人信息保护法》等法规的合规问责。测试中应将合规性指标作为发布门禁,不达标不予上线。

6.4 我处可能涉及的RAG系统测试场景

结合AI测试的工作范围,以下RAG系统测试场景具有较高的落地可行性:

7. 常见坑点

以下是RAG系统测试和生产运营中最常见的坑点,提前了解有助于规避风险。

7.1 检索不到关键文档时的降级策略

当知识库中确实不存在相关信息(或检索无法召回关键文档)时,系统必须具备合理的降级策略。常见的问题和应对:

坑点表现应对策略
强行编造 检索为空时,模型仍生成了看似合理的答案 在Prompt中强制约束:"如果检索结果为空,只需回答'未找到相关信息'"
过度降级 轻微检索不足就放弃回答,用户体验差 设置检索置信度阈值,低于阈值时主动引导用户细化问题
无提示降级 使用了通用知识替代但未告知用户 明确标注答案来源,区分"知识库内容"和"通用知识补充"
盲目重试 检索失败后机械重试,延长响应时间 限制重试次数和总超时,设置熔断机制

7.2 多源文档冲突的测试

在企业知识库中,文档冲突是一个普遍存在的问题。常见冲突类型包括:

测试方法:在知识库中刻意放入矛盾文档,构造能触发冲突的查询,验证系统的冲突处理策略(应优先引用最新、最高层级、最权威的文档)。

7.3 文档更新后的缓存问题

知识库文档更新后,RAG系统的各层缓存可能未同步更新,导致用户看到的是过期内容:

测试验证:在知识库更新后,构造针对新增/修改/删除内容的查询,验证检索和生成结果是否在预期时间内(如15分钟内)反映了最新内容。

💡 缓存策略建议 建议建立文档版本号与检索/生成结果的映射关系。在文档更新时主动使相关缓存在一定窗口期内失效,并在测试中纳入"缓存失效时间 ≤ 业务SLA"作为验收标准。

8. 实战演练

以下三个实战任务由浅入深,帮助快速上手RAG系统的测试实践。建议按顺序完成,每个任务预计耗时 30-60 分钟。

任务1:搭建RAG测试环境

目标:使用 LangChain + ChromaDB 搭建一个简易RAG系统,并完成基本的检索质量评估。

环境准备:

# 创建虚拟环境
python -m venv rag-test-env
source rag-test-env/bin/activate  # Windows: rag-test-env\Scripts\activate

# 安装依赖
pip install langchain langchain-community chromadb sentence-transformers ragas openai

操作步骤:

  1. 准备知识库文档:准备 3-5 份银行制度相关文档(如贷款管理办法、风控政策等),放入 ./docs/ 目录
  2. 构建向量索引:使用 LangChain 的 TextLoader + RecursiveCharacterTextSplitter(chunk_size=512)对文档分块,调用 sentence-transformers 生成向量,存入 ChromaDB
  3. 搭建检索链:创建 RetrievalQA 链,指定检索 Top-K=3
  4. 评估检索质量:准备 10 个标注了期望文档的查询,计算 Hit Rate@3 和 MRR
🔧 快速替代方案 如果想跳过环境搭建,可直接使用 RAGAS 官方快速入门。它提供了开箱即用的评估数据集和评估管线,运行 pip install ragas && python -c "from ragas import evaluate" 即可体验。

任务2:检索质量对比测试

目标:对比不同配置对检索质量的影响,找到适合银行文档的最优参数组合。

对比维度:

对比项方案A方案B方案C评估指标
Chunk Size 256 token 512 token 1024 token Hit Rate@3 / MRR
Embedding 模型 text2vec-large-chinese BAAI/bge-large-zh m3e-base Hit Rate@3 / MRR
检索策略 纯语义检索 混合检索(BM25+向量) 混合检索+Rerank Hit Rate@5 / NDCG@5

操作要点:

📊 预期发现 通常银行制度文档在 Chunk Size=512~768 时表现最佳;bge-large-zh 这类专门针对中文检索优化的模型在金融文本上效果优于通用模型;混合检索在涉及精确术语(如"第十三条"、"LPR利率")的查询上优势明显。

任务3:RAG端到端质量测试

目标:设计银行制度问答场景,使用 RAGAS 评估生成答案的整体质量。

场景设计:以下为 10 个典型的银行制度问答场景,覆盖不同查询类型:

编号查询类型示例问题期望行为
1精确查询个人住房贷款的最低首付比例是多少?检索到具体条款,输出精确数值并引用来源
2模糊查询办房贷需要什么条件?召回贷款申请条件,列出关键要求
3流程查询企业开户的完整流程是什么?检索操作规程,按步骤输出并标注每步依据
4数值对比一年期和三年期定存利率分别是多少?检索利率表,输出精确数值并注明生效时间
5跨文档查询风控审批和贷后管理各有哪些要求?从多份文档中提取并合并信息
6合规判断这笔跨境汇款需要哪些合规审查?检索外汇管理规定,列出审查项及法规依据
7知识盲区2028年的贷款政策有什么变化?诚实告知知识库中无此信息,不编造
8版本敏感现行的不良贷款分类标准是什么?优先检索最新版本制度,标注生效日期
9多义消歧"额度"不够怎么办?根据上下文判断是贷款/信用卡/转账额度
10风险提示推荐一款收益高的理财产品必须包含风险提示和免责声明

使用 RAGAS 评估:

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision

# 准备评估数据
eval_dataset = Dataset.from_dict({
    "question": questions,          # 10个问题
    "answer": generated_answers,    # RAG系统生成的答案
    "contexts": retrieved_docs,     # 检索到的文档列表
    "ground_truth": ground_truths   # 人工标注的标准答案
})

result = evaluate(eval_dataset,
    metrics=[faithfulness, answer_relevancy, context_precision])
print(result)

结果记录与分析:

9. 银行业RAG测试检查清单

以下检查清单覆盖银行RAG系统上线前必须验证的关键项目,建议作为发布门禁(Release Gate)逐项确认。

类别检查项验收标准检查方法
检索质量 Top-3 命中率 Hit Rate@3 ≥ 0.85 使用 50+ 标注查询进行批量测试
召回完整性 Recall@5 ≥ 0.90 关键业务场景的 Ground Truth 覆盖验证
混合检索可用性 关键词+语义检索均正常工作 构造精确术语查询与模糊语义查询交叉验证
分块策略合理性 Chunk Size 通过对比测试选出最优 对比 3 种以上分块策略的检索效果并记录
生成质量 忠实性(Faithfulness) ≥ 0.95(金融场景从严) RAGAS Faithfulness 指标 + 20% 人工抽检
答案相关性 Answer Relevancy ≥ 0.85 RAGAS 评估 + 业务专家打分
幻觉发生率 关键事实幻觉率 = 0 陷阱测试集(含已知不存在的信息点)验证
引用准确性 每条关键事实均可追溯到源文档 随机抽取 20 条答案进行人工追溯验证
合规安全 来源可追溯 100% 关键事实有明确引用标注 逐条核对引用编号与源文档内容一致性
版本时效性 优先引用最新版本,废止文档不被引用 知识库中同时放入新旧版本,验证检索偏向
免责声明 涉及投资/建议/预测时自动附加风险提示 构造 10+ 触发免责声明的场景进行验证
敏感信息保护 不泄露客户隐私/内部机密/未公开数据 安全扫描 + 渗透测试
权限隔离 不同角色用户的知识访问范围正确隔离 使用不同权限账号分别查询敏感内容
性能指标 单次检索延迟 P95 ≤ 500ms JMeter / Locust 压测
端到端响应时间 P95 ≤ 3秒(检索+生成) JMeter 端到端压测,覆盖多场景并发
并发吞吐量 ≥ 50 QPS(视业务规模调整) 阶梯式加压测试,找到吞吐拐点
索引更新延迟 文档入库后 ≤ 15 分钟可检索 文档更新后定时查询直至命中,记录延迟
边界鲁棒 知识盲区处理 无相关文档时明确告知而非编造 构造 10+ 知识库无法覆盖的查询
多义查询消歧 根据上下文正确理解歧义词 构造同形异义的银行术语查询(如"额度")
长/短查询适应性 长查询不因噪音降低精度,短查询合理引导 构造 200+ 字长查询和 2 字短查询各 5 条
异常输入防护 SQL注入/XSS/Emoji等异常输入不导致异常 使用安全扫描工具进行模糊测试
⚠️ 检查清单使用建议 建议将此清单嵌入到 CI/CD 流水线中,每次模型更新或知识库变更后自动触发回归验证。对于标注了 人工抽检 的项目,应建立业务专家的定期评审机制(建议每月一次),确保自动化评估与实际业务体验一致。

10. 我处JMeter适配建议

JMeter 是性能测试的核心工具,可以很好地适配 RAG 系统的性能测试需求。以下简要说明如何用 JMeter 测试 RAG 系统的检索延迟和吞吐量。

10.1 测试架构

RAG 系统的检索接口通常以 RESTful API 形式暴露,因此 JMeter 的 HTTP 请求采样器即可直接使用。典型测试架构如下:

┌─────────────┐     HTTP POST      ┌──────────────┐
│   JMeter    │ ─────────────────→ │  RAG 服务    │
│  (压测节点)  │ ←───────────────── │  /api/search  │
└─────────────┘    JSON Response    └──────────────┘
                                        │
                                   ┌────▼─────┐
                                   │  向量数据库 │
                                   │  (ChromaDB │
                                   │   Milvus)  │
                                   └──────────┘

10.2 JMeter 配置要点

配置项说明建议值
HTTP Request 采样器指向检索API端点 POST /api/v1/search,Content-Type: application/json
请求 Body 检索查询的 JSON 体 {"query": "${query}", "top_k": 3},query 变量从 CSV 文件读取
CSV Data Set Config 准备 100+ 条真实业务查询作为测试数据 覆盖短查询、长查询、精确查询、模糊查询等类型
Thread Group 并发线程数设置 从 10 起步,阶梯递增至 100/200/500,观察拐点
断言(Assertion) 验证响应正确性 HTTP 状态码 200 + JSON 响应中包含 results 字段且非空
监听器 结果收集与可视化 聚合报告(Aggregate Report)+ 响应时间图(Response Time Graph)

10.3 关键指标与场景设计

核心监控指标:

推荐测试场景:

🔧 适配提示 RAG 端到端测试(检索+生成)的响应时间远长于纯检索,建议将两类接口拆分为独立的 Thread Group,分别设置不同的超时(检索 2s,端到端 10s)。如果生成环节接入了流式输出(SSE),JMeter 原生支持有限,建议使用 JSR223 Sampler + Groovy 脚本 自行处理流式响应的延迟计算。

📋 案例研究:银行制度问答RAG系统的测试实战

背景:某银行构建了基于RAG的内部制度问答系统(类似智能问答系统),覆盖200+份行内制度文档。上线前需要对其检索质量和生成质量进行全面评估。

测试方案

  • 构建50条测试问题(20条精确查询、15条模糊查询、10条跨文档查询、5条无答案边界)
  • 使用RAGAS评估faithfulness、answer_relevancy、context_precision、context_recall
  • 人工抽检20%的测试结果做一致性验证

测试过程

  • 步骤1:文档分块测试(chunk_size=256/512/1024对比)
  • 步骤2:检索策略测试(仅语义/仅关键词/混合检索对比)
  • 步骤3:端到端质量评估

测试结果

三种chunk_size × 三种检索策略的端到端评估对比(RAGAS指标):

Chunk大小 检索策略 Faithfulness Answer Relevancy Context Precision Context Recall
256 仅语义检索 0.72 0.68 0.61 0.55
256 仅关键词检索 0.65 0.59 0.72 0.63
256 混合检索 0.74 0.71 0.75 0.67
512 仅语义检索 0.77 0.74 0.67 0.62
512 仅关键词检索 0.63 0.61 0.78 0.69
512 混合检索 0.86 0.83 0.84 0.78
1024 仅语义检索 0.79 0.76 0.62 0.59
1024 仅关键词检索 0.61 0.58 0.74 0.65
1024 混合检索 0.82 0.80 0.79 0.73

最佳组合:chunk_size=512 + 混合检索,四项指标均为最优。无答案边界的拒答率仅为 60%(5条中仅3条正确拒答),需重点改进。

发现的问题

  • 部分陈旧文档检索排序靠后,导致答案引用不准确
  • 跨文档查询的context_recall偏低(均值0.55),说明跨文档关联检索能力不足
  • 建议引入文档时效性权重,提升最新制度文档的检索排名

启示

  • RAG系统的端到端评测是必要的,仅测检索或生成都不够
  • Chunk策略和检索策略需要联合调优,二者存在交叉影响
  • 银行业RAG对引用准确性要求极高,需建立持续回归评测机制