2.3 准确检索知识
在前两章中,我们分别认识了用正向表述来排除内容和 JSON 法提取信息,这两个优化特定问题准确度的方法。而在这章中,我们将一起来认识第三个优化特定问题准确度的方法。
GPT 知识检索的局限性
如果说其他问题上,GPT 的表现可能只是不够优秀,那么在知识检索方面,它则可以说是典型的胡说八道了。这个问题比起其他类型的问题更加难以修复,因为这类问题是由问题类型和 GPT 的原理共同导致的。
GPT 模型,包括 GPT-4,主要是基于模式识别和统计预测,而非深层次地理解或知识的组织。模型的工作方式是通过预测和生成下一个词,基于以往见过的数十亿个文本段落的模式。因此,GPT在回答问题或提供知识时,并非从某个知识库或数据库中进行检索,而是通过模拟人类语言和文本中常见的模式来生成答案。这让它无法检索,无法更新,无法认证。
无法检索是在说,由于 GPT 是基于模式生成答案,而不是查找信息,它可能会生成不准确或错误的信息。这是因为模型只是复制了它在训练数据中看到的模式,而这些数据可能包含错误的信息。
无法更新是在说,GPT 的知识是在模型训练结束时「冻结」的。这意味着模型不能获取或理解训练结束后发生的事情。这个问题相对来说还比较好解决,现在 GPT 的联网插件已经可以解决这个问题1。
无法验证指的是,除开本身无法验证的知识,GPT 没有能力验证其生成的信息的准确性。一方面 GPT 并不存在巨大的较为准确的知识库来统一检验,另一方面则是 GPT 本身的原理也决定了它只能验证这个回答是不是会符合人类的组织语言结构,想要验证就得做额外的工作,比如在后台再调用开发者预设好的另外的 Prompt 等等。
好玩的检验方法
有一种特定的问题,可以突出目前所有大语言模型回答知识检索类型问题时自身的缺陷,回答甚至可以荒诞到仿佛梦回几年前市面上普遍存在的「人工智障」产品。
这个问题就是:「某个古籍/古诗/小众书籍的作者是谁?」。无论是 GPT-3.5 还是 GPT-4,又或者是 New Bing 等其他语言模型,只要没有人工优化过这类问题的答案,它们得出的回答一定是让你忍不住发笑的,比如经典的「爱莲说的作者是谁?」,GPT 给出的答案可以是曹雪芹、鲁迅、甚至是奥特曼,但不会是正确的答案——北宋理学家周敦颐。有些答案会让你感觉抛开事实不谈,除了错误和没用以外,还挺有创意的。
国内的大语言模型表现还是不错,中文书籍基本都能答对,毕竟也是国内的大语言模型,如果这个都答不对,那也太离谱了。不过这个时候我们可以将书籍换成某个国外的畅销书或者古籍,那么某些国内大语言模型的表现也是半斤八两。不过,当然也有部分的国内大模型在大部分时候的表现还是挺好的,无论是中外的书籍,还是小众的书籍基本也能回答正确,可能就是把有关数据在训练时都喂给了 AI。
最好的方法:联网搜索
在介绍今天的优化方法之前,我可以先跟大家说一下,其实这类的方法是有(相对而言)最佳解决方案的 ,那就是和传统的搜索引擎相结合,也就是联网搜索后再交给模型输出内容。从本质上而言,就相当于搜索引擎帮 GPT 提前整理好了素材,GPT 稍加判别整理以后再输出内容。
如果产品和模型支持的话,那么知识检索类问题最好的方法依旧是联网搜索,这样子可以轻松解决我上面提到的三个问题中的前两个:无法检索和无法更新,至于无法验证的问题,则是转移给了搜索引擎本身。比如 New Bing 就将这三个问题解决地很好,解答这类问题时,先用自家的搜索引擎搜索结果,然后再用可信度排名靠前的来源作为数据源回答问题。
即使模型或者服务本身支持联网搜索,后面提到的优化方法还是有价值的。问作者之类的知识检索问题还是比较简单,遇到比较复杂,带有结构或者多层的知识检索问题时,还是得用上一些优化方式来让 GPT 更加准确的理解我们的问题,至少能总结出正确的搜索内容。
知识生成法
当你平时遇到一些知识常识类问题需要 GPT 解决时,虽然可以用填空法调用 GPT 底层训练集里的知识,但一旦这个知识不在训练集里 GPT 就容易胡说八道。这时,我们可以使用知识生成法来让 GPT 自己给自己生成参考。
知识生成法中 GPT 的工作原理很像我们在准备解答问题时的过程——在开始解答之前,我们需要先回忆或者查阅相关知识,为解答问题做好准备。使用时,我们通过提示 GPT 生成一些与问题相关的知识,来为它回答问题提供参考。
知识生成法的步骤很简单:我们首先提供一个格式化的问题,例如:「生成几个有关奏鸣曲的知识」「生成几个有关协奏曲的知识」,然后让 GPT 生成相关知识。这样 GPT 就能有足够的信息去回答我们的真正问题,如「奏鸣曲和协奏曲的区别」。
等到 GPT 生成相关知识后,再提出我们的问题:
这里主要是让我们能够让 GPT 回答问题之前有足够的知识参考,在这个例子中,全部知识都由 GPT 生成。
当然,也可以由 GPT 生成部分知识,然后你再补充一些你知道的知识,当你发现 GPT 生成的知识错误之后,也可以进行纠正,不要吝啬对话条数。先生成再纠正的过程,比起全部由自己去寻找正确的知识,会省力很多。
这里我们在生成知识 Prompt 提供的信息可以是错误的,比如你随便编两个也是可以的;但尽量还是提供正确的知识,如果提供是错误信息,尽量不要与最终的问题有关,不然 GPT 可能会直接参考你瞎编的内容来回答。
知识生成法的优势
知识生成法的优势主要体现在以下几点:
提高准确性:通过生成与问题相关的知识,我们可以帮助 GPT 建立起一个初步的理解,从而提高其回答问题的准确性。这对于小众或专业性的问题尤为重要,因为这些问题往往需要更多的背景知识来正确回答。
提供上下文:知识生成法不仅为 GPT 提供了关于问题的具体信息,还为其提供了一种上下文,有助于模型理解问题的实际含义和目的。这种上下文信息有助于生成更准确、更相关的答案。
节约 Token:尽管生成知识需要额外的Token,但我们可以通过控制知识的长度和数量,有效地管理和节约Token使用。相比之下,如果不采取这种优化方法,虽然能节省提供知识部分的Token,但可能会降低结果的准确度。更重要的是,当发现错误需要纠正时,GPT可能会频繁地生成完整内容,最终反而造成更大的Token消耗。
灵活和可控:知识生成法非常灵活,我们可以根据需要生成各种类型的知识。我们也可以通过调整生成的知识的质量和数量,来控制 GPT 的回答质量。
培养深度理解:通过让 GPT 生成知识,我们可以促使其对某一主题进行深度思考和学习,这对于需要深入理解的问题或主题尤其有用。
推理生成新知识:模型的「想象力」,我们让它将现有的知识进行组合和推理,生成新的、有价值的知识。
高效检索知识:这个方法可以让 GPT 有意识地寻找相关知识,有效地检索和使用那些预嵌入到大型训练中的知识,而这些知识如果直接通过查询或其他基于关键字的方法是难以获得的。
知识生成法适合的问题类型
这种知识生成法适合以下问题类型:
常识性问题:当你需要获取一些基本的知识或常识时,如科学原理、历史事件等。
概念解释:当你需要了解某个概念或术语的定义和相关信息时。
深度解析:当你需要深入了解某个话题或领域的知识体系时。
对比分析:当你需要对比不同概念、理论或方法的优缺点、适用范围等方面进行分析时。
学术问题:当你需要回答关于某个专业领域的问题时,可以先让 GPT 生成一些背景知识,然后再提出具体问题。比如数学家陶哲轩就使用 GPT-4 来帮助解决数学问题。GPT 模型以及专门针对数学领域优化的现在也被用来辅助证实各种数学猜想。
用知识生成法生成虚构内容
除了用来生成严谨的知识,知识生成法也可以用来帮助 GPT 实现「严谨地发挥想象力」。比如在文学创作领域,像是幻想文学、科幻文学等等往往需要一个宏大的虚构世界观,在这个世界观之下,所有的剧情都是追求「故事中的真实」而不是现实世界中的真实。
如果我们想要用 GPT 来辅助我们进行类似的虚构文学创作或者其他虚构的内容,就可以将我们事先想好的世界观或者其他知识设定等等,用本章学到的知识生成法提供给 GPT,然后再让它进行创作。这样就可以让 GPT 在我们设定好的框架之下再进行创造,生成虚拟但是又严谨的内容。
当然,如果这部分你需要提供的知识是已经公开的,或者是借用其他故事的世界观,更加建议使用 New Bing 等可以联网的服务让模型自动搜索整理一波,然后再放到其他更加好的离线模型里(比如 GPT-4)生成最后的内容。
总结
在本章中,我们一起深入了解了大语言模型在知识检索方面问题背后的原因和解决方案。在文章中,我们还提到了虽然联网搜索还是目前最优的解决方法,但使用知识生成法,即使在离线模型中也可以提升这类问题的生成内容效果。
在解决了几个特殊类型问题之后,下一章会来到大家应该会特别感兴趣的问题,也是 NLP 自然语言处理诞生之后最广泛的用途之一——文章生成。一些优化方法可以让 GPT 在生成较长内容时也能保证一致性,同时减少机器生成的感觉,更加「真人化」。
最后更新于