解码 LangChain | LangChain + GPTCache = 强强联合
上周我们邀请到了 LangChain 联合创始人 Harrison Chase 分享【如何用 LangChain 和 Milvus 进行检索】,Harrison 提到,多跳问题会给语义检索带来挑战,并提出可以试用 AI 代理工具解决。不过,频繁调用 LLM 会导致出现使用成本高昂的问题。
对此,Zilliz 软件工程师 Filip Haltmayer 指出,将 GPTCache 与 LangChain 集成,可以有效解决这一问题。
GPTCache 是一个用于存储 LLM 响应的语义缓存层。它可以为 LLM 相关应用构建相似语义缓存,当相似的问题请求多次出现时,可以直接从缓存中获取,在减少请求响应时间的同时也降低了 LLM 的使用成本。
本文为解码 LangChain 系列,将从 GPTCache 的适用场景出发,厘清 GPTCache 和 LangChain 集成的原理,并附赠集成教程。
GPTCache 的功能和原理
GPTCache 能做什么?
降低 LLM 使用费用:目前大多数 LLM 服务均通过请求 token 数进行计费,当请求使用缓存结果,自然降低请求次数,则减少了 LLM 使用成本;
性能优化:相比于大模型的推理时间,从缓存数据中获取时间将降低一个数量级;
兼容性强,适用于多种应用场景:GPTCache 提供多种 LLM 的镜像接口,只需修改 import 路径,即可缓存 LLM 请求;
改善 LLM 服务的可扩展性和可用性:目前 LLM 服务都有请求速率限制,达到这一限制则服务无法进行响应。如果对于相似的问题使用缓存答案,将有效缓解服务无法响应这一问题。
GPTCache 的推荐场景有哪些?
某一垂直领域的 LLM 相关应用,如法律、生物、医学等;
固定的 LLM 相关应用,如某公司内部或个人使用的 ChatBot;
开发的 LLM 应用在某些时间内的请求具有高度相似性,如节日祝福语模版等;
具有大用户群体的 LLM 应用,如果给用户群体进行分类,类似用户用同一缓存。
LangChain 的大型语言模型(LLM)是一种革命性的技术,允许开发人员构建许多在以前不可想象的应用。然而,仅依靠单个 LLM 就创建一整套应用是几乎不可能的。因此,我们需要将 LLM 与其他计算资源或知识源进行结合。 LangChain 就能帮助我们将 LLM 和其他知识相结合,从而开发出完美的应用。
LangChain 缓存分析
LangChain 的缓存方式
在学习如何集成 GPTCache 之前,我们先来看看 LangChain 是如何实现缓存的。事实上,LangChain 缓存是通过字符串匹配来实现的。也就是说,如果有两个请求字符串完全相同,那么收到后一个请求时,可以从缓存中检索出相应的数据。具体实现过程中使用了内存缓存(Memory Cache)、SQ Lite 缓存 (SQLite Cache)和 Redis 缓存(Redis Cache)。
LangChain 缓存的使用方法大致如下:
从运行角度来看,如果请求命中缓存,那么响应时间会显著缩短。不过,我们还需要思考另一个问题,即 LLM 高昂的使用成本问题。
我们都知道,使用 OpenAI 和 Cohere 等在线服务通常需要 token,部署相应的 LLM 模型也会产生费用。单次 LLM 推理(inference)时间取决于你的计算资源量,包括 CPU、内存、GPU 等。如果需要同时处理多个请求,对计算资源的要求就更高。如果请求多次命中缓存,则可以减少对计算机资源的压力,并合理地将更多的计算资源分配给其他任务。
LangChain 命中缓存的条件是两个问题必须完全相同。但是在实际使用中,这种情况十分罕见,因此很难命中缓存。这也意味着,我们还有很多空间可以用来提升缓存利用率,集成 GPTCache 就是方法之一。
集成 GPTCache
集成 GPTCache 能够显着提升 LangChain 缓存模块的功能,增加缓存命中率,从而降低 LLM 使用成本和响应时间。GPTCache 首先将输入的问题转化为 embedding 向量,随后 GPTCache 会在缓存中进行向量近似搜索。获取向量相似性检索的结果后,GPTCache 会执行相似性评估,并将达到设置阈值的结果作为最终返回结果。大家可以通过调整阈值来调节 GPTCache 模糊搜索结果的准确性。
以下示例中在 LangChain 中集成了 GPTCache,并使用了 GPTCache 进行向量相似性检索。
以上就是关于 GPTCache 和 LangChain 集成的全部内容。大家如果想了解更多关于 LangChain 和 Milvus 集成的内容,可以阅读《LLMs 诸神之战:LangChain ,以【奥德赛】之名》。
预告一下,解码 LangChain 系列的下一篇将详解如何用 LangChain 和 Milvus 增强 LLM 应用,以及构建和优化 AIGC 应用的小秘籍,敬请期待!
(本文作者付邦系 Zilliz 软件工程师)
相关阅读:
🌟「寻找 AIGC 时代的 CVP 实践之星」 专题活动即将启动!
Zilliz 将联合国内头部大模型厂商一同甄选应用场景, 由双方提供向量数据库与大模型顶级技术专家为用户赋能,一同打磨应用,提升落地效果,赋能业务本身。
如果你的应用也适合 CVP 框架,且正为应用落地和实际效果发愁,可直接申请参与活动,获得最专业的帮助和指导!联系邮箱为 business@zilliz.com。
如果在使用 Milvus 或 Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群。
欢迎关注微信公众号“Zilliz”,了解最新资讯。
评论