最近与同行和客户交流,包括各大所谓的大模型培训的机构,都在说rag现在必须要加agent的功能,rag不能仅仅提供知识库检索功能,还要能扩展其其它能力,从而响应客户的各种需求。
以下是个人观点,大家可以多多交流:
大家知道,rag的功能,就是提供一个私有知识库的检索功能,检索到内容后,通过大模型的能力,将最终答案整合返回给用户,不管使用的是vectorstore还是graphstore,宗旨都是一样。
那么这个时候,有人会说,那如果客户,发来一个消息,知识库里面没有,或者不属于知识库的内容,比如:今天是星期几?像这样的问题,难道你就不返回给用户了么?
那么我想反问,如果我加了今天是星期几这样的一个agent tools,解决了这样的问题,那用户发来消息,北京现在的温度是多少?我应该怎么办呢?难道我再加一个天气的agent tools?那如果用户再问,昨天茅台股票的价格?难道我要再加一个股票的agent tools?
这个时候,有杠精会说了,这不简单,你在入口中,增加判断,如果用户的问题,是关于rag知识库的内容,就路由到知识库检索中,如果不是,就统一到一个agent,这个agent比如是一个tavily搜索,这样,不就是没有任何问题了?
那么,真的是这样么?
想想好像没问题,你发来一个问题,我的第一个路由判断,你这个问题是不是属于我的rag中知识的问题,如果是,直接到rag的检索,然后给你答案,如果不是,我将这个问题,转到tavily搜索。反正任何的问题,tavily搜索肯定能给你答案。这样,就可以解决客户100%的所有问题了。
那么这个时候,客户问了一个问题,请帮我在c盘根目录,建立一个a.txt文件,文件中写入,hello。
大家想想,怎么办?

这个问题,我通过建立一个python agent,是可以执行的。但是你现在接的是tavily,tavily是无法帮你执行python命令的。
接下来,又有杠精来了。
这不简单,你加一个模块,这个模块,可以动态的去自执行agent,如果这个agnet功能没有,我就动态的让agent创建agent和tool,执行,比如,虽然现在我只有一个tavily,但是我可以根据用户的问题,判断,如果是rag,执行rag的检索,如果是搜索,执行tavily,如果是其他命令,交给一个动态的agent,这个动态的agent去执行动态创建agent的tool,比如,c盘根目录建立文件,那么虽然现在只有tavily,但是agent执行后,发现当前没有python agent,那么他就去自创建python agent和tool,来响应你的需求。
看似完美,实则不对。
我们先不说现在的动态agent所创建出来的tool的执行效果的不确定性,单说让agent动态创建agent的可行性就比较差,因为你根本不知道用户会问什么问题,这些问题,需要创建哪些tools,agent很难控制。我们在落地中发现,动态创建的agent可控性很差,沙箱运行通过率基本都在40%以下。
我们回过头来思考一下,其实客户所需要的,就是一个rag知识库,然后被各种洗脑后,觉得一个知识库不够,我还要加其他的agent功能在这个系统中。这个时候,切记要跟客户确定好范围,你要加agent功能,没有问题,但是要确定好涵盖返回,一旦用户的问题,超过了这个范围,那么系统直接回复:您的问题,不在本系统的回答范围之内。
这就是为什么现在很多银行或者zf类系统中的客服机器人,我们都觉得他很笨,很多问题回答不了,我们先不说他们的技术,只说他们的产品定位,就值得我们去研究,就一句话,不是我系统的问题,我肯定不会回答。是我系统的问题,我回答的质量就这样,你爱咋咋地。。。
好了,最后说一句,虽然agent给了我们无限可能,但是当你去做系统的时候,一定要圈定好你系统的职责范围,不要啥都能做,啥都能回复。看似无敌,实际就是一个玩具。
包括很多在做ai创业的团队也是一样,都觉得自己的系统无敌了,rag+agent,解决了您的一切问题?真的是这样么?
对于现在的agent+rag,您有什么想说的,欢迎留言。
每周二四六直播,欢迎多多交流。