写在前面
众所周知,GPT经常会一本正经的胡说八道。具体表现如下:
- 编造事实
- 计算不准确
- 数据过时
对于这些问题,GPT是如何解决的呢?
RAG 检索增强生成
Retrieval Augmented Generation。大预言模型训练是有时间截断的,它无法知道训练知识截断以后发生的事情。
RAG支持用户上传自己的知识库,让LLM的回答基于这个知识库来回答问题。比如用户上传一个pdf、一段视频,然后询问一些关注这个pdf、视频的内容的问题。这就是RAG的作用。
RAG有利于搭建企业知识库和个人知识库。
PAL 程序辅助语言模型
Program-Aided Language Models。LLM是无法自行计算的,这也就是它在数理计算方面存在的弱点,因为它的内容都是通过生成的,而不是计算。比如你问它1+1等于几?虽然它可能给出正确答案2,但是不是计算出来的,而是基于历史知识生成的。
PAL背后是一个可以运行程序Python代码的模型,利用这个模型,LLM将用户问题拆解成python代码,然后用PAL运行代码,得到最终结果并返回给用户,这样结果就是计算出来的了。
ReAct 推理行动结合
Reason Action。推理+行动,解决了知识截断问题。当你问一个最近的知识,比如“你对于王自如说没有看过格力给他的工资条怎么看”,LLM可能会去bing搜索”王自如没见看过工资条”,然后将搜索到的结果整理给用户。当然实际上并非这么简单。
Reason表示推理,它会将用户的问题拆解成一个一个的小问题。Action表示行动,它针对每个小问题去做一些动作,比如上网搜索、连接数据库、操作某个app等等。
最终的执行过程可能是:
小问题1:
动作1:
小问题2
动作2:
结果: