当在与大模型对话时涉及某些特定的问题、引用网址时,大模型提供的答案未必完全准确,它只是基于预训练的知识库中找到相关的答案进行回复,而通过提供参考文本,用户可以获得相对准确的答案。
具体官方策略如下:
1、指定模型根据用户提供的参考文本回答问题。
2、指定模型根据参考文本回答,并体现具体引用的原文内容。
策略一:指定模型根据参考文本回答问题
- 适用人群:新手
- 难度:⭐️
如果我们能够为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其答案。
鉴于 GPT 有限的上下文长度,为了应用此策略,我们需要某种方式动态查找与被提问的问题相关的信息。可以提供指定内容来实现高效的知识检索。
解读
最大的好处是 减少错误:当被问及一些特定的问题时,大模型如果不具备相关知识,可能会出现 幻觉,从而 幻想 出一些答案。
幻觉:模型对输入信息的误解或过度推断,导致它产生了不基于事实的回答或者与事实严重偏离的内容,这种现象称之为幻觉。
通过提供参考文本,我们可以减少模型发明答案的可能性。
实践
策略二:指定模型使用参考文本中的引文来回答问题
- 适用人群:新手
- 难度:⭐️
如果输入的提示中涉及被补充的相关知识,直接要求模型通过引用所提供文档的段落来添加引文到其回答中。请注意,可以通过在所提供的文档中进行字符串匹配,来生成编程格式的文字,最终验证输出的引文是否符合要求。
解读
这里的作用和 策略一 相同,更多的是,为了体现真实性,在输出答案时要求大模型提供引用的原文。
实践
其他案例
在前面几个案例中,我们更多的是使用分隔符来提供参考文本,从而得到相对准确的答案。
此外,如果需要提供的参考文本过大,超出大模型的上下文长度的限制呢? 我们该怎么办?
我们可以上传一份文件作为外脑,让大模型基于文件搜索答案。
可能有读者会问了,那文件的内容不会占用上下文吗?
我简单说明下:大模型将我们提供的文件进行向量化后,将基于算法搜索到的那段准确率最高的段落作为参考文本,再进行回答,而那段被搜索出来的参考文本将占用当前窗口的上下文长度,文件中的其他内容不消耗 token。
我们可以简单验证下,这份文件的长度是 37 K,而目前普通 ChatGPT Plus 用户使用的 GPT-4 上下文长度是 32 K。
那我再次询问 “之前提示词中针对搜索不到答案的回答方式是什么”,大模型照样可以回答正确,说明当前窗口的对话内容并没有超出上下文限制。
总结
当我们向大模型提问时,如果能提供具体的文本作为参考,这就像是在给我提供一本相关的书籍或文章。这样做的好处有几点:
- 提高准确性:有了具体的文本参考,大模型可以更精准地定位到你想要的信息。而不是在预先训练的知识库--这个茫茫大海中去翻阅资料。
- 可追溯:策略二中,通过体现答案所引用的原文,从而提高了答案的真实性和可追溯性。
总之,提供文本就像是给大模型一个具体的指南,帮助大模型更准确、更快地找到你需要的答案。