【面试题】RAG相关面试题
2026/9/13 0:51:41 网站建设 项目流程

1. 如何定义和计算RAG的"命中率"?有哪些评测指标?

首先明确:RAG领域没有官方统一命名的“命中率”术语,行业通常所说的「命中率」默认指检索命中率(Hit Rate),是信息检索领域的经典指标。

  • 核心定义:针对一批测试查询,召回的TopK结果中至少包含1条相关文档/片段的查询占比,核心衡量“能不能至少找到一条相关内容”的能力。
    注意与召回率(Recall)的本质区别:Recall衡量召回的相关内容占全部相关内容的比例;Hit Rate只关心“有没有命中”,不关心命中了多少条。
  • 计算公式
    Hit Rate@K = (TopK结果中至少包含1条相关片段的查询数) / 总查询数
    延伸细分指标:
    • 首条命中率:第1位结果即为相关内容的查询占比,是MRR指标的直观体现
    • 文档级命中率:命中相关文档(任意片段)的比例
    • 片段级命中率:命中精准相关片段的比例
  • 配套核心评测指标(信息检索标准体系):
    1. Recall@K:召回的相关片段数 / 全部相关片段总数(衡量召回全面性)
    2. Precision@K:召回的相关片段数 / K(衡量召回准确性)
    3. NDCG@K:归一化折损累计增益,综合衡量排序质量
    4. MRR:平均倒数排名,衡量首个相关结果的排名位置

权威来源:指标定义参考《信息检索导论》(Christopher D. Manning)、ACM SIGIR 官方评测规范。


2. 检索召回率低应该怎么排查?从哪几个维度分析?

召回率低遵循**「全链路逐层排查、控制变量定位」**的思路,核心分为6个维度:

  1. 查询输入侧
    排查点:查询是否过于口语化、存在歧义、多意图未拆分;是否缺少查询改写、关键词扩展;业务术语是否和知识库表述不一致。
    验证方法:用与知识库表述一致的标准书面语测试,对比召回率变化。
  2. 分块索引侧
    排查点:固定字符分块是否切断了核心语义;分块过大/过小;是否缺少块重叠导致边界信息丢失;索引未增量更新、对应内容未入库。
    验证方法:更换语义分块、调整块大小,对比召回率变化。
  3. 向量模型侧
    排查点:Embedding模型是否适配中文/业务领域;通用模型对专业术语表征偏差;分词错误导致术语拆分。
    验证方法:更换中文原生/领域微调Embedding模型,对比召回率变化。
  4. 检索策略侧
    排查点:TopK设置过小;相似度阈值过高过滤掉相关结果;仅用向量检索缺少关键词匹配;元数据过滤条件过严误杀相关文档。
    验证方法:放大TopK、降低阈值、开启混合检索,对比召回率变化。
  5. 数据本身侧
    排查点:知识库是否确实包含对应答案;答案信息是否分散在多个块中;内容表述过于隐晦。
  6. 工程实现侧
    排查点:向量索引损坏;量化精度损失过大;检索时指定了错误的索引分片。

3. 重排序模块应该放在pipeline的什么位置?如何选择重排算法?

标准放置位置

重排序(Rerank)模块的标准位置是粗召回阶段之后、上下文注入生成阶段之前,即经典的「两阶段检索」架构:

查询 → 多路粗召回(向量+关键词+元数据,返回Top50~100候选集) → 重排序精排 → 输出最终TopK(通常3~5条) → 注入LLM生成

  • 不能放粗召回前:候选集太大,重排计算量指数级上升,延迟无法接受。
  • 不能放生成后:生成已经使用了召回结果,重排失去业务意义。
  • 进阶架构:海量数据场景可做三级架构:粗排→精排→重排,进一步兼顾效率与效果。
重排算法选型思路

按「效果-效率-场景」三个维度权衡选择:

算法类型效果等级速度等级适用场景
规则加权融合极快简单场景、极低延迟要求
轻量级Rerank模型(如bge-reranker-base)中高生产环境高并发、中文场景
CrossEncoder交叉编码器中小数据量、对效果要求高
大模型Rerank极高高价值场景、低并发

选型原则:

  1. 中文场景优先选择中文原生训练的Rerank模型(如bge-reranker、M3E-rerank),效果优于通用多语言模型。
  2. 生产环境优先轻量级模型,通过扩大粗召回候选集弥补精度差距。
  3. 专业领域优先用领域数据微调的Rerank模型。

4. 如何构建RAG评测数据集?人工标注的成本如何控制?

评测数据集构建方法

遵循「场景全覆盖、来源真实、可复现、版本化」原则:

  1. 样本构成(四类必覆盖)
    • 核心事实类:业务核心知识库的标准问答,有唯一答案
    • 多跳推理类:需结合多段文档推导的问题
    • 边界拒答类:知识库外、不存在、敏感类问题
    • 高频场景类:从线上真实用户日志中提取的TopN高频问题
  2. 数据来源优先级
    线上真实用户查询 > 业务专家构造 > 公开基准集适配 > 自动生成
  3. 标注质量控制
    每条样本标注:查询语句、标准答案、相关片段ID/位置、问题类型、难度等级;采用双标交叉校验,标注一致性Cohen’s Kappa≥0.75为合格。
  4. 版本化管理
    数据集随知识库、业务迭代同步更新,每次迭代的bad case补充入库,持续沉淀。
    样本量建议:核心场景100~300条即可支撑版本回归,高要求场景500条左右,边际效益随样本量递增递减。
人工标注成本控制方法
  1. 半自动化标注:先通过检索自动返回候选片段,标注员只做「相关/不相关」二元判断,无需从零撰写答案,效率提升3~5倍。
  2. 分层抽样标注:核心业务场景全量标注,边缘、长尾场景抽样标注,不用全量覆盖。
  3. 资产复用沉淀:每次迭代的bad case、线上问题直接入库,标注工作量随迭代持续下降。
  4. 人员分层匹配:简单相关性标注用初级人员,专业内容校验用业务专家,错配人力成本。
  5. 工具提效:使用标注工具集成批量操作、快捷键、自动预填,减少重复操作。

5. 混合检索(dense + sparse)的融合策略有哪些?

dense(稠密向量检索,语义匹配)+ sparse(稀疏检索,如BM25,关键词精确匹配)的融合策略分为三类,工程落地优先选结果级融合:

  1. 结果级融合(最常用,工程首选)
    在召回结果层面融合,无需修改索引,灵活可调。
    • 倒数排名融合(RRF)
      原理:基于结果排名计算得分,公式:score = Σ 1/(k + rank),k默认取60。
      优点:无需归一化不同检索方式的得分,无需调参,效果稳定鲁棒,是无标注数据场景的首选。
    • 加权求和融合
      原理:对两路检索的得分分别加权后相加排序,公式:final_score = α * dense_score + β * sparse_score,通常α取0.60.7,β取0.30.4。
      优点:可根据场景调参优化;缺点:得分量级差异大时需要先归一化。
    • 取并集/交集:并集召回率高但噪音大,交集精确率高但召回低,一般不作为主策略。
  2. 向量级融合(早期融合)
    建索引时将稀疏向量与稠密向量拼接为混合向量,一次检索完成。优点是检索步骤少;缺点是调整权重需要重建索引,灵活性差,落地较少。
  3. 检索级融合(分阶段过滤)
    先用稀疏检索过滤出候选子集,再在子集内做向量检索。优点是缩小向量检索范围,大幅提升速度;适合百万级以上海量数据场景。

权威来源:RRF融合为信息检索经典融合方法,参考SIGIR 2009Reciprocal Rank Fusion outperforms Condorcet and individual rank learning methods


6. chunk分割策略对检索效果有什么影响?

分块策略是RAG检索效果的底座,直接决定召回能力的上限,影响主要体现在分块大小分块方式两个维度:

分块大小的影响
  • 块过小:完整语义被切碎,单个块信息不完整,即使召回也无法支撑生成答案,导致忠实度、答案完整度下降;同时块总量增多,检索噪音上升,精确率下降。
  • 块过大:单个块包含过多无关信息,向量表征语义模糊,匹配精度下降,召回率降低;同时注入生成的冗余token增多,成本上升,幻觉风险提升。
  • 最优区间:中文通用场景200500字符;专业长文档5001000字符;需匹配Embedding模型的最佳上下文窗口。
分块方式的影响
  • 固定字符分块:实现简单,但极易切断语义边界,跨块信息丢失,召回率最低,中文场景问题更突出。
  • 结构分块(按标题/段落/列表):基于文档原生结构拆分,优先保留语义单元,召回完整性优于固定分块,适合结构化文档。
  • 语义分块(按语义相似度切割):自动识别语义边界,信息完整性最好,召回率最高;但计算成本高,索引速度慢。
  • 重叠分块:块之间保留10%20%的重叠内容,解决边界信息切断问题,可提升召回率5%10%;但会增加索引冗余。

总结:80%的检索效果问题,本质都是分块策略不合理,而非Embedding模型能力不足。


7. 向量库更新后检索结果不一致,可能是什么原因?

分「正常现象」和「异常问题」两类原因:

正常现象(无需修复)
  1. ANN索引的固有随机性:主流向量索引(HNSW、IVF)都是近似最近邻(ANN),索引构建过程存在随机性,每次重建索引,图结构/聚类中心都会有细微差异,导致得分接近的结果排序波动。
  2. 浮点精度差异:不同批次、不同硬件(CPU/GPU)计算的Embedding向量,浮点精度存在微小误差,导致相似度得分有万分级的波动,影响边缘排序。
  3. 增量索引的异步优化:多数向量库增量插入后,索引是逐步优化的,刚更新完和优化完成后的检索结果会有差异。
异常问题(需要排查)
  1. 缓存未失效:更新前的召回结果被缓存,更新后缓存未主动清理,返回旧数据。
  2. 分布式同步延迟:分布式向量库的分片之间存在数据同步延迟,不同时间、不同节点的查询结果不一致。
  3. 并发更新脏读:更新过程中触发查询,读到部分更新的数据,导致结果异常。
  4. 索引损坏:更新过程中异常中断,导致索引结构损坏,检索结果异常。
  5. 配置被动变更:更新时修改了TopK、相似度阈值、索引参数,导致结果变化。

判断标准:仅排名靠后、得分接近的结果波动属于正常;Top3核心结果大幅变动属于异常,需要排查。


8. 如何平衡检索准确率和响应时间?

核心思路是用最小的计算成本获取足够的相关结果,通过架构、参数、缓存、分层多维度权衡,没有绝对最优,只有适配业务的平衡点。

  1. 两阶段检索架构(首选方案)
    粗召回阶段用高效算法返回大候选集(保证召回率),重排序阶段用精准算法对小集合精排(保证准确率),兼顾效果与延迟,是工业界主流方案。
  2. 动态参数策略
    根据查询复杂度动态调整TopK:简单高频查询用小TopK(35),降低计算量;复杂长尾查询用大TopK(1020),保证召回率。
  3. 分层索引体系
    按业务热度、时间将数据分为热数据、温数据、冷数据,热数据单独建内存索引,优先查询。高频查询命中热索引,又快又准;冷数据仅在必要时检索。
  4. 高频结果缓存
    对TopN高频查询的召回结果做缓存,设置合理TTL,命中缓存直接返回,延迟降至毫秒级,准确率无损失。
  5. 索引量化优化
    采用INT8标量量化、PQ乘积量化压缩向量,牺牲1%以内的精度,换取30%~50%的速度提升和内存减半。
  6. 元数据预过滤
    检索前先通过时间、业务线、权限等元数据过滤缩小范围,再在子集内做向量检索,既减少计算量提升速度,又排除噪音提升准确率。
  7. 索引算法选型匹配
    万级以内数据用Flat暴力检索,100%准确;十万~百万级用HNSW,速度快精度高;千万级以上用IVF,速度更快精度略降。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询