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 评分
自动检查回答与参考资料的一致性。
常见坑
- 不做 Grounding: LLM 用自己的知识回答,可能过时或错误
- Prompt 太弱: “请参考以下资料”不如”只使用参考资料”
- 不做 Faithfulness 检查: 不知道回答是否真的基于资料