Retrieval-Augmented Generation: 检索增强生成
我们先探讨什么是Generation,而后再来理解Retrieval-Augmented。
Generation是指大语言模型生成文本,以响应用户的查询信息(query,也可以理解为prompt)。然而,在生成文本的过程中,大模型可能会出现一些不好的行为。
下面是一个有趣的例子:
A问B:”在我们的太阳系中,哪个行星拥有最多的卫星?” B根据他之前所阅读过的文章作出回答:木星,他拥有88颗卫星.
这里存在一些问题。
- 首先,因为B只是凭借自己的印象给出回答,并不能提供有效的信息来源来证明木星就是那个拥有卫星最多的行星,因此这个回答不具有明确的信息来源
- 其次,由于B已经很久没有关注过这方面的知识,他所回答的“木星,他拥有88颗卫星”在之前可能是对的,但天文界在经过了多年的探索之后,这个回答很可能已经过时了
现在,如果我去NASA官网上搜集有关信息,并且最终得出结论:土星是拥有卫星最多的行星,它有146个。这个回答看上去就比上面那个可靠的多。因为这里不仅给出了信息来源,也具备时效性。
让我们回到大语言模型的话题上。当我们问大语言模型”在我们的太阳系中,哪个行星拥有最多的卫星?”时,一个训好的LLM可能会回答你:“噢!那当然是木星啦!” 然而,由于你并不具备这方向知识,你并不能判断LLM到底是对的还是错的,毕竟他也没有给你提供信息来源。
这时候,就需要用到我们的Retrieval-Augmented了。在RAG框架中,当用户向LLM提问时,RAG框架会先依据问题在数据存储库中检索相关内容,然后把检索结果和用户问题相结合生成一个新的prompt,让LLM参照检索结果和它本身具有的知识来给出答案。这样,只要我们的数据存储库中的信息是new的,LLM就能给出具备信息来源和时效性的回答了。
当然,RAG框架work well的前提是你具备一个优秀的信息检索器,使得你能从数据存储库中提取出核心关键有效的信息。
而RAG框架具体是如何实现的,数据存储库的具体形式是什么,我们又该如何在存储库中检索出信息,这将在下一篇blog中阐述。
ps.若文章中有何错误之处,尽情指出。









没有回复内容