Source Grounding

Source Grounding 是确保 LLM 回答基于检索到的内容而非模型自身知识的技术。它减少幻觉,提高回答的可信度。

#type / concept #status / evergreen #tech / ai

[!info] related notes

Source Grounding

一句话定义

Source Grounding 是确保 LLM 回答基于检索到的内容而非模型自身知识的技术。Prompt 中明确告诉 LLM:“只用参考资料回答,不要用你自己的知识。“

核心原理

Prompt 设计

GROUNDING_PROMPT = """
请严格基于以下参考资料回答问题。

规则:
1. 只使用参考资料中的信息
2. 如果参考资料中没有相关信息,回答"根据现有资料无法回答此问题"
3. 不要使用你的训练知识
4. 引用时标注来源

参考资料:
{context}

问题: {question}
"""

Faithfulness 检查

class FaithfulnessChecker:
    def __init__(self, llm):
        self.llm = llm

    async def check(self, answer: str, context: str) -> float:
        prompt = f"""
请检查以下回答是否完全基于参考资料。

参考资料:
{context}

回答:
{answer}

回答中有多少比例的信息可以在参考资料中找到?输出 0-100 的数字。
"""
        result = await self.llm.chat(prompt)
        return int(result) / 100

常见设计模式

1. 强制引用

要求每个关键信息都标注来源。

2. 拒绝回答

参考资料不足时明确拒绝。

3. Faithfulness 评分

自动检查回答与参考资料的一致性。

常见坑

  1. 不做 Grounding: LLM 用自己的知识回答,可能过时或错误
  2. Prompt 太弱: “请参考以下资料”不如”只使用参考资料”
  3. 不做 Faithfulness 检查: 不知道回答是否真的基于资料

参考资料

创建于 2026/6/30 更新于 2026/7/15