Citation Generation
Citation Generation 是让 LLM 在回答中标注信息来源的技术。它让用户能够验证回答的可信度,是 RAG 系统可信度的关键。
#type / concept
#status / evergreen
#tech / ai
[!info] related notes
- 所属 MOC: RAG Engineering MOC
- 相关: Source Grounding, Hallucination Reduction
Citation Generation
一句话定义
Citation Generation 是让 LLM 在回答中标注信息来源的技术。“根据《员工手册》第 3 章 [1],入职满一年享有 10 天年假。“引用让用户能验证回答。
核心原理
Prompt 引导
CITATION_PROMPT = """
基于以下参考资料回答问题。
规则:
- 引用时标注来源编号,如 [1] [2]
- 每个关键信息都要标注来源
- 如果参考资料中没有相关信息,说明
参考资料:
[1] 来源: 员工手册
内容: ...
[2] 来源: 公司政策
内容: ...
问题: {question}
"""
引用解析
import re
def extract_citations(answer: str) -> list[dict]:
"""从回答中提取引用"""
citations = re.findall(r'\[(\d+)\]', answer)
return [{"index": int(c)} for c in set(citations)]
def format_with_citations(answer: str, sources: list[dict]) -> str:
"""格式化带引用的回答"""
citations = extract_citations(answer)
result = answer + "\n\n---\n来源:\n"
for cite in citations:
source = sources[cite["index"] - 1]
result += f"[{cite['index']}] {source['title']}\n"
return result
常见坑
- 不做引用: 用户无法验证回答
- 引用不准确: LLM 编造了不存在的引用
- 引用格式不统一: 有的用 [1],有的用 (1)