Factuality
减少 hallucination,提升回答的可靠性
LLM 模型有时会生成听起来连贯且令人信服但有时是虚构的回答。改进提示可以帮助提高模型生成更准确/真实的回答,并降低生成不一致和虚构回答的可能性。
一些解决方案可能包括:
- 在上下文中提供基本事实(例如相关文章段落或维基百科条目),以减少模型生成虚构文本的可能性。
- 通过降低概率参数并指示模型在不知道答案时承认(例如,“我不知道”)来配置模型以生成更少样式的响应。
- 在提示中提供问题和答案的组合示例,其中可能知道和不知道的问题和答案。
让我们看一个简单的例子:
提示:
Q: What is an atom?
A: An atom is a tiny particle that makes up everything.
Q: Who is Alvan Muntz?
A: ?
Q: What is Kozar-09?
A: ?
Q: How many moons does Mars have?
A: Two, Phobos and Deimos.
Q: Who is Neto Beto Roberto?
输出:
A: ?
我编造了“Neto Beto Roberto”的名字,所以模型在这种情况下是正确的。尝试稍微改变问题,看看是否可以使其正常工作。根据您迄今学到的所有知识,还有不同的方法可以进一步改进它。
📚 相关资源
❓ 常见问题
关于本章主题最常被搜索的问题,点击展开答案
什么是模型的「真实性」问题?跟幻觉是一回事吗?
本质上是同一个问题的两种说法。本章定义:模型有时会生成「听起来连贯且令人信服但有时是虚构」的回答——这就是幻觉。Factuality 是从结果维度看(输出是不是真的),hallucination 是从行为维度看(模型在编造)。所以「降低幻觉」和「提升真实性」用的都是同一套手段。
本章降低幻觉的三条做法是什么?
1) 在上下文中提供基本事实(相关文章段落、维基百科条目),让模型有可参考的真相——这就是 RAG 的雏形;2) 调低概率参数(temperature 拉低),并指示模型在不知道时直接说「我不知道」;3) 在 prompt 里给「问题 + 答案」组合示例,包含已知和不知道的样本,把「拒答」变成被示范过的合法行为。
本章用了一个「Neto Beto Roberto」的例子,它说明了什么?
本章作者把三个真问题(atom、Mars 卫星)和两个虚构问题(Alvan Muntz、Kozar-09)混在 few-shot 里,对虚构问题给的答案是 `?`。当作者再问一个新编造的人物 `Neto Beto Roberto`,模型也回答了 `?`。这证明:用 few-shot 示范「不知道就承认」,模型会学会拒答而不是硬编。
为什么 temperature 拉低有时反而让模型「更自信地编」?
temperature 控制的是采样的随机性,不是真假。拉低后模型只是更稳定地输出它「最可能」认为对的答案——如果它的先验本身就错,低 temperature 会让错误答案更稳定地出现。所以本章把「降 temperature」和「指示模型说不知道」+「提供事实上下文」绑在一起讲,单调一项不够。
本章的方法和 RAG 是什么关系?
本章第一条「在上下文中提供基本事实」就是 RAG 的核心思想。Production 上 RAG 把这步工程化:用户提问 → 向量检索相关文档段落 → 拼进 prompt 当事实证据 → LLM 在证据范围内回答。本章手动塞段落是入门版,RAG 是它的自动化、可扩展版本。