目录
背景
花一点时间继续写下,RAG结合LLM。通过上一篇文章你应该知道为什么RAG要结合LLM,或者说为什么LLM要结合RAG使得LLM更强大,特别是当LLM 应用在人机对话等方面的时候。只要涉及一问一答,并通过上下文继续丰富对话,就会涉及到他。这个是看事情的两个维度。就像是买钟送电池还是买电池送闹钟。一方面,RAG的专家知识库上因为加入了LLM,而使得RAG对应更自然,不再是生硬的回答,借助LLM,可以帮助RAG的回答润色。另一方面,LLM因为专业知识的相对缺乏,毕竟是AIGC,不是垂直领域的AI,所以需要RAG帮忙加持,二者相互完善,彼此成就。好了,不太喜欢写虚的,直接开始干货分享。
在这两者结合的过程中,你要知道一件事,那就是LLM大模型必须知道你所提出的问题,在什么时候需要 LLM来回答, 什么时候需要 RAG 来回答,才是比较好的结果,prompt 起着至关重要的作用。他本质上会告诉LLM,这个问题由RAG来回答是比较好的,因为‘我’是这方面的领域专家。LLM怎么知道他是这方面领域的专家呢?就可以透过一些关键字来描述。当然prompt 的用处很多,很多书上会写他实际上会指导在客户描述的受限条件下,这里的受限条件,可以由prompt 来描述。比如 ‘如果你发现这类问题是医学相关的问题,请尝试使用我的RAG_Medcine 知识库做回答 ’。但在每个模型实现时,又有所差别。
源码
我下面用通义千问 model 来进行举例说明,通过function式的调用如何实现RAG与LLM结合,并解释他是如何工作的,先附上完整代码:
from datetime impor