拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【RAG面试系列】生成和融合

【RAG面试系列】生成和融合

RAG生成和融合

  • 1.检索到的内容如何和用户问题一起喂给 LLM?Prompt 怎么设计?
    • 1.1 Prompt 设计核心原则
    • 1.2 标准 RAG Prompt 模板
    • 1.3 上下文窗口管理策略
  • 2. 如果检索到的内容与问题无关,模型会怎么表现?如何缓解?
  • 3. 如何评估 RAG 系统的效果?有哪些指标?
  • 4. RAG 的幻觉问题怎么产生的?如何降低?

RAG面试系列共分为四篇文章:【RAG面试系列】基础概念、【RAG面试系列】检索优化、【RAG面试系列】生成和融合、【RAG面试系列】工程落地。上一篇【RAG面试系列】检索优化讲解了RAG检索优化,现在我们聊聊RAG生成和融合。

1.检索到的内容如何和用户问题一起喂给 LLM?Prompt 怎么设计?

核心思路:RAG 的本质是把检索到的外部知识“注入”到 Prompt 里,让 LLM 基于这些知识回答,而不是凭空生成。关键点在于 检索内容不是附加信息,而是回答的真实依据,Prompt必须明确告诉模型“只能基于给定材料回答”。

检索内容通过“分隔符+编号”的结构化方式拼进Prompt,并用system指令强约束“只依据资料回答+资料不足时明说”。

1.1 Prompt 设计核心原则

  1. 明确角色和任务边界
  2. 清晰区分检索上下文和用户问题
  3. 给出"不知道"的退路
  4. 要求引用来源

1.2 标准 RAG Prompt 模板

最常见的做法是三段式结构,按固定模板拼进Prompt:

## 指令 你是一个专业的知识助手。请**仅根据**下面提供的参考文档回答问题。 - 如果参考文档中包含答案,请准确回答并引用来源(用 [来源X] 标注)。 - 如果参考文档中**没有**相关信息,请明确说"根据现有资料无法回答",不要猜测或编造。 - 不要使用参考文档以外的知识。 ## 参考文档 [来源1] {chunk_1_content} [来源2] {chunk_2_content} [来源3] {chunk_3_content} ## 用户问题 {user_query} ## 回答

1.3 上下文窗口管理策略

策略做法适用场景
Top-K 截断只取 Rerank 后的 Top-3~5大多数场景
上下文压缩用 LLM 先对检索内容做摘要再注入文档很长但相关信息分散
递归摘要对多篇文档分别摘要后合并需要综合大量文档
自适应窗口根据查询复杂度动态调整注入数量Agentic RAG

关键设计要点:

  • 检索内容按相关性排序(最相关的放最前/最后,利用"首尾效应")
  • 每条 chunk 附带元数据(来源、章节),方便引用
  • 设置temperature较低(0-0.3)以减少幻觉

2. 如果检索到的内容与问题无关,模型会怎么表现?如何缓解?

无关检索的典型表现:

  1. 强行关联:LLM 试图从无关内容中"找出"答案,产生牵强附会的回答
  2. 幻觉:LLM 忽略检索内容,转而使用自身预训练知识生成(可能正确也可能错误)
  3. 拒绝回答:如果 Prompt 设计得当,LLM 应说"无法回答"
  4. 答非所问:基于无关内容生成的答案与用户问题不匹配

缓解策略:

策略做法效果
相关性阈值过滤设置相似度分数阈值(如 cosine < 0.7 则丢弃)简单但可能误杀
Rerank 过滤Cross-Encoder 分数低于阈值的 chunk 不注入更精准
拒答机制Prompt 中明确"不知道就说不知道"减少幻觉
CRAG(Corrective RAG)检索后先评估相关性,不相关则改写查询重试或触发外部搜索自适应处理
Self-RAG模型自己判断是否需要检索、检索结果是否相关按需检索
LLM-as-Judge 过滤用轻量 LLM 对每个 chunk 做二分类(相关/不相关)灵活但增加延迟

3. 如何评估 RAG 系统的效果?有哪些指标?

评估框架:RAGAS(Retrieval Augmented Generation Assessment)

RAGAS 是当前最主流的 RAG 评估框架,开源、LLM-as-Judge 范式,覆盖检索和生成两侧。

核心四大指标:

指标测量什么计算方式目标值
Context Precision检索到的 chunk 中有多少是真正相关的(信噪比)加权 Precision@k> 0.75
Context Recall回答所需的信息是否都被检索到了(覆盖度)从 ground truth 提取 claims,检查是否在 context 中> 0.8
Faithfulness(忠实度)生成的答案是否完全基于检索上下文(有无幻觉)将答案拆为原子 claims,逐一验证是否被 context 支撑> 0.9
Answer Relevancy答案是否直接回应了用户问题LLM 从答案反推问题,与原始问题做语义相似度> 0.8

检索侧补充指标:

指标公式/含义说明
Recall@kTop-K 结果中包含相关文档的比例按实际注入 LLM 的 chunk 数来定 k,k 通常取 5/10/20 ,多 k 值联合报告(Recall@5, Recall@10, Recall@20)更全面
MRR(Mean Reciprocal Rank)第一个相关文档排名的倒数均值关注"正确答案排第几"
NDCG@k归一化折损累计增益考虑排名位置和相关度分级

生成侧补充指标:

  • 幻觉率(Hallucination Rate):Vectara HHEM Leaderboard 提供模型级幻觉率对比
  • BERTScore:与参考答案的语义相似度(比 BLEU/ROUGE 更鲁棒)
  • Citation Accuracy:引用标注的准确率

评估方法论补充(离线 vs 在线):

  • 离线评估:使用标注数据集(BEIR、MS MARCO、KILT 等)评测检索质量;用 RAGAS 在自建 ground truth 上评测端到端效果
  • 在线评估:A/B 测试、用户点赞/点踩、点击率、会话完成率
  • 评估数据集构建:RAGAS 支持用 LLM 合成高质量评估数据(synthetic data generation),无需大量人工标注

4. RAG 的幻觉问题怎么产生的?如何降低?

RAG 幻觉的两类根因:

内在幻觉(Intrinsic Hallucination):生成内容与检索上下文矛盾

  • 原因:LLM 未能正确理解或遵循检索内容,被自身预训练知识"覆盖"
  • 例子:检索到"产品 A 价格 100 元",LLM 输出"产品 A 价格 150 元"

外在幻觉(Extrinsic Hallucination):生成内容超出检索上下文范围

  • 原因:LLM 补充了检索中不存在的信息(即使是正确的也是幻觉)
  • 例子:检索内容没提产地,LLM 自己加了"产地中国"

系统性降低幻觉的方法:

方法原理效果
优化 Prompt明确"仅基于上下文回答,不要补充"基础但有效
Rerank 过滤减少噪声注入,降低 LLM 被无关内容误导的概率提升 15-35%
Faithfulness 监控用 RAGAS 持续监控忠实度,发现退化及时修复持续保障
CRAG(Corrective RAG)检索后评估→不相关则重试→仍不行则拒答显著降低
Self-RAG模型自反思:需要检索吗?检索结果相关吗?生成忠实吗?开放域 QA 幻觉显著降低
Citation 强制要求逐句标注来源,倒逼模型忠实可解释+可验证
知识冲突处理检测检索内容间的矛盾,提示 LLM 注意或由仲裁模块处理减少混淆
返回列表