← 返回列表

AI系列面试题11:RAG 怎么调优?

RAG 的调优不是单一环节的调整,而是一个全链路优化的过程。下面我从数据索引侧、检索侧、生成侧、评估侧四个维度,给出系统性的调优策略,并附上面试中可以提及的实战经验。


一、数据索引侧调优(提升“知识库”质量)

这是最容易被忽视却见效最快的地方。

调优点 问题现象 具体做法 效果指标
文档解析 PDF 中的表格、流程图被忽略,或文字乱码、顺序错乱。 换用更好的解析库(如 unstructuredpypdf 的布局保留模式);对表格使用 pandas 提取后转为 Markdown。 召回率 +5~15%
文本分块大小 chunk 太小丢失上下文(如“他今年营收增长”中的“他”指代丢失);chunk 太大导致检索噪音多。 实验不同 chunk size(256/512/768 token),重叠 overlap 设为 10~20%;对于长文档,按语义边界(段落/标题)切分而非固定长度。 命中率 / 忠实度
元数据附加 检索到了相关段落,但无法追溯到来源或时间,或者需要按领域过滤。 为每个 chunk 添加元数据:source(文件名/URL)、timestamppage_numdoc_type。在检索时使用过滤器(如 doc_type == 'legal')。 过滤精准度
嵌入模型选择 通用 embedding 在垂直领域(医疗、代码、法律)表现差。 使用领域微调的模型(BGE‑large‑zh、GTE‑Qwen2‑7B‑instruct);或者微调自己的 embedding 模型(用 triplet loss)。 检索 MRR@10 +10~20%

二、检索侧调优(让“翻书”更准)

检索决定了喂给 LLM 的“参考资料”质量。

调优点 问题现象 具体做法 效果
混合检索 向量检索无法匹配精确术语(如产品型号 ABC-123),关键词检索无法理解同义词。 同时使用向量检索(语义)和 BM25(关键词),通过加权(如 0.7向量 + 0.3BM25)或 rerank 融合。 召回率 +10~25%
重排序(Rerank) 向量检索返回的前几个结果不一定最相关,第 10 个才是最好的。 用 cross‑encoder 模型(如 BGE‑reranker-v2、Cohere Rerank)对候选集(如前 20 个)重新打分,取 top‑K。 命中率显著提升(尤其 top‑1)
查询重写 用户问题含糊或多轮对话中指代不清(“它的价格呢?”)。 用 LLM 将原始问题改写成更适合检索的形式(如“iPhone 15 的价格是多少?”);或者利用对话历史补全。 召回率 +5~15%
HyDE 用户问题太短或过于抽象(如“讲一下光合作用”),直接检索效果差。 先让 LLM 生成一个假设性答案,再用这个答案去检索文档。 适用于开放域,但不适用于事实型精确问答
检索数量 Top‑K 调整 K 太小可能漏掉关键信息;K 太大增加 token 消耗和噪音。 实验 K=3/5/10,观察召回率和答案忠实度的平衡。 效率与效果 trade‑off

三、生成侧调优(让 LLM 好好利用参考资料)

检索再准,提示词不好或模型不行也没用。

调优点 问题现象 具体做法 效果
提示词工程 LLM 忽略检索内容,或凭空捏造。 明确指令:“仅根据以下提供的参考资料回答问题。如果资料不足或不相关,请回答‘没有足够信息’。” 加上 few‑shot examples 展示如何引用来源。 忠实度 +20~40%
上下文压缩 检索到的内容太长(超过模型上下文窗口),或者大部分是噪音。 使用 LLMLingua选择性上下文 压缩,保留最相关的句子后再送给 LLM。 降低丢信息风险
LLM 模型升级 小模型(7B)无法执行复杂推理,或记不住长上下文。 换用更强的模型(GPT‑4o、Claude 3.5 Sonnet、Qwen2.5‑72B)。 推理准确率大幅提升
流式与引用 用户无法验证答案可信度。 在生成时让 LLM 输出 [citation:1],对应检索文档的编号。后端附上原文链接。 用户信任度 + 可调试
拒绝回答校准 模型在不该回答时乱编,或应该回答时却说不知道。 设置一个相似度阈值:如果检索到的 top‑1 chunk 与问题的余弦相似度低于 0.7,提示 LLM “资料不相关”。 降低幻觉率

四、评估与迭代侧(知道往哪里调)

没有度量就无法优化。

调优点 做法 指标
建立评估集 准备 100~300 个真实用户问题 + 标准答案 + 正确的检索文档 ID。 覆盖不同难度、不同意图。
自动化评估 使用 RAGAS(Faithfulness, Answer Relevance, Context Recall)或 TruLens 三个核心指标:忠实度、答案相关性、上下文召回率。
人工评估 每周抽测 20 个 bad case,分析错误类型(检索失败 / 生成错误 / 知识库缺失)。 改进优先级排序。
A/B 测试 在生产环境分桶测试不同检索策略(例如 BM25 vs 混合检索)。 在线指标:用户满意度、无答案率。

五、面试中可以说的“实战经验”(加分项)

“在我负责的 RAG 项目中,一开始基线命中率只有 67%。我做了三件事:
1. 分块从固定 1024 改为动态语义切分(按标题+段落),命中率提到 74%;
2. 加入混合检索(向量 + BM25)和一个小型 rerank 模型,命中率升到 83%;
3. 优化提示词并强制要求 [未找到相关信息],幻觉率从 22% 降到 5% 以下。

另外,我们建立了一个持续评估流水线,每次改动前跑 200 个问题的 RAGAS 分数,确保没有退化。”


最后总结:一张完整的 RAG 调优路线图

数据层 ─→ 文档清洗、分块优化、元数据增强、领域 embedding
检索层 ─→ 混合检索、rerank、查询重写、HyDE、Top-K 调优
生成层 ─→ 提示词强化、指令要求、压缩、引用、拒绝阈值
评估层 ─→ 评估集、RAGAS、人工分析、A/B 实验

评论

暂无已展示的评论。

发表评论(匿名)