世界今热点:修改几行代码就让 LLM 应用提速 100 多倍!这个团队两周搭建 ChatGPT 缓存层,曾被老黄 OpenAI 点赞
ChatGPT 爆火,为何大模型却依然没有得到广泛的应用?
原因无它,受制于性能和成本。
最近,有这样一个项目引发业内关注和讨论——GPTCache(https://github.com/zilliztech/GPTCache)。
(资料图)
它使用向量数据库技术为各种 LLM 应用提供一层语义缓存,能够存储 LLM 响应,从而显著减少检索数据所需的时间、降低 API 调用开销、提升应用可扩展性。
简单来说,有了 GPTCache,受制于性能优化与成本的 LLM 应用,可以挣脱这些束缚,真正做到省钱、省时、省力了。
AIGC 人狂喜!
而背后的操盘手正是向量数据库领域的全球领先者——Zilliz。早在 2019 年,它就开源了全球首个向量数据库项目 Milvus,现在全球已经拥有超过 1000 家企业用户。
去年 11 月推出云端全托管的向量数据库服务 Zilliz Cloud(https://zilliz.com/cloud),一经发布就在全球范围内引发了 LLM 和 AI 开发者的广泛关注和使用。
上个月它才被英伟达老黄在 GTC 2023 上倾力推荐,更被 OpenAI 官方指定为 ChatGPT Retrieval Plugin 技术提供商。
来康康这究竟是个什么项目?Zilliz 为什么要做这样一个项目?为了解答这些疑惑,我们找到了 GPTCache 项目的负责人—— Zilliz 合伙人、技术总监栾小凡,他为我们讲述了背后的故事。
源于一次午饭闲聊
GPTCache 的灵感起源是从一次午饭闲聊时开始的。
在展开讲述前,先普及一个背景。我的团队负责开源项目 Milvus 的开发与维护,需要频繁为社区用户答疑解惑。在这个过程中,经常会被问及一些基础文档相关或重复性的问题,加之不断有新用户进群,最终便形成了一个「提问、解答、重复提问、重复解答」的循环。而站在用户的角度,询问和答疑不都是同步和即时的(尽管我们一直在努力,但很难做到 24 小时在线)。尤其在遇到紧急情况时,可能根本得不到有效反馈。
这就是 OSSChat 的起源。作为一个开源项目知识库的集成者,它可以在 ChatGPT 的基础上,帮用户解决在 GitHub 上开源项目的很多问题,例如文档查找、安装指南等各种基础问题。
https://osschat.ioOSSChat 问世后,我们很激动,因为这是一个可以真正造福广大开发者的应用。但很快团队便遇到了新的考验,随着使用 OSSChat 用户越来越多,我们忽然意识到一个问题:ChatGPT 可能会成为阻碍 OSSChat 提升性能的瓶颈。
一来不稳定的 ChatGPT 服务会拉低 OSSChat 响应速度;
二来每次调用 ChatGPT 接口,都会产生新的费用,这导致 OSSChat 的使用成本不断拉升。
同时,这也验证了我之前的一个猜测:为什么在 ChatGPT 如此火爆的情况下,LLM 依然没有得到最为广泛的应用?答案是因为受制于性能和成本,甚至可以这样形容,性能和成本是 LLM 难以推广、应用以及获取用户增长的罪魁祸首。
说回 OSSChat,如何在保证它在性能提升的同时还能减少使用成本,成为团队亟待解决的大问题。烦恼于这件事的解决方案,大家经常食不知味。
于是,我明确提出了吃饭时不聊工作的要求。又是一次午饭时间,大家你一言我一语地唠闲嗑。但你知道,程序员聚在一起就那三个话题:计算机、买房和孩子。说着说着,话题就扯到了计算机的发展:在冯 · 诺依曼的体系结构下有了 CPU、Memory、控制器……由于 CPU 和内存在速度上不匹配,慢慢又发展出了在 CPU 之上的多级缓存。类比到 AI 时代,大模型就是新的 CPU,Vector Database 是内存。那在系统运行很慢的情况下……
对了!缓存层!在系统运行很慢的情况下,缓存层的重要性就不言而喻了!
既然这样,为什么不添加一个缓存层来存储 LLM 生成的响应呢?!这样一来,我们不仅可以提升 OSSChat 的响应速度,还能节省成本。
这就是 GPTCache 诞生的最初过程。
LLM 缓存层的可行性到底有多少?
LLM 缓存层的想法让我们看到了更多的可能性。其实,GPTCache 的逻辑类似于过去在搭建应用时,增加一层 Redis 和 Memcache,从而加快系统查询效率并降低访问数据库的成本。有了缓存层,在测试 OSSChat 功能时,就无需再额外调用 ChatGPT 的接口了,省时省事儿,说的就是这个道理。
不过,传统的缓存只在键值相同的情况下检索数据,不适用于 AIGC 应用。
AIGC 需要的是语义近似的缓存,例如「苹果手机」和「iPhone」实际上都是指苹果手机。
所以,需要专门为 AIGC 应用设计搭建了一种全新的缓存,我们给它命名为—— GPTCache。
有了它,我们就能够对上百万个缓存的提问向量进行向量相似性检索,并从数据库中提取缓存的响应回答。这样一来,OSSChat 端到端的平均响应时间便能显著降低,也能节省更多成本。
简言之,它可以加速 ChatGPT 响应速度并优化语义检索。有了 GPTCache,用户只需修改几行代码便可缓存 LLM 响应,将 LLM 应用提速 100 多倍。
当然,进行到这里,GPTCache 还只是一个概念。是否真正具备可行性还需要进一步验证。于是,团队对 OSSChat 发起了多轮调研。几番调查过后,我们发现用户的确喜欢提问某几类特定的问题:
热门话题相关内容
热门 GitHub repo
" 什么是 xxx" 的基础问题
OSSChat 首页推荐问题
这意味着和传统应用一样,AIGC 应用的用户访问同样具有时间和空间的局部性。因此,可以完美利用缓存来减少 ChatGPT 的调用次数。
为什么不是 Redis?
验证完可行性,便到了搭建系统的环节。这里我有一点必须要分享,在搭建 ChatGPT 缓存系统时,Redis 并不是我们的首选。
个人而言,我很喜欢用 Redis,它性能出色又十分灵活,适用于各种应用。但是 Redis 使用键值数据模型是无法查询近似键的。
如果用户提出以下两个问题:
所有深度学习框架的优缺点是什么?
告诉我有关 PyTorch vs. TensorFlow vs. JAX 的区别?
Redis 会将其定义为两个不同的问题。而事实上,这两个问题表达的是同一个意思。无论是通过缓存整个问题还是仅缓存由分词器生成的关键字,Redis 都无法命中查询。
而不同的单词在自然语言中可能具有相同的含义,深度学习模型更擅长处理语义。因此,我们应该在语义缓存系统中加入向量相似性检索这一环节。
成本是 Redis 不适用于 AIGC 场景的另一个原因。逻辑很简单,上下文越长,键和值越长,使用 Redis 存储内容所产生的费用也可以就会高得离谱。因此,使用基于磁盘(disk-based)的数据库进行缓存可能是更好的选择。加上 ChatGPT 响应较慢,所以对缓存响应速度的要求也不是很高。
从零搭建 GPTCache
话不多说,先放一张 GPTCache 的架构图:
为了简化流程,我们最终决定了删除上下文管理器,所以整个 GPTCache 系统共包含五个主要组件:LLM 适配器(LLM Adapter)
适配器将 LLM 请求转换为缓存协议,并将缓存结果转换为 LLM 响应。由于想让 GPTCache 变得更加透明(这样用户无需额外研发,便可将其轻松集成到我们的系统或其他基于 ChatGPT 搭建的系统中),所以适配器应该方便轻松集成所有 LLM,并可灵活扩展,从而在未来集成更多的多模态模型。
目前,我们已经完成了 OpenAI 和 LangChain 的适配器。未来,GPTCache 的接口还能进一步扩展,以接入更多 LLM API。
Embedding 生成器(Embedding Generator)
Embedding 生成器可以将用户查询的问题转化为 embedding 向量,便于后续的向量相似性检索。为满足不同用户的需求,我们在当下支持两种 embedding 生成方式。第一种是通过云服务(如 OpenAI、Hugging Face 和 Cohere 等)生成 embedding 向量,第二种是通过在 ONNX 上使用本地模型生成 embedding 向量。
后续,GPTCache 还计划支持 PyTorch embedding 生成器,从而将图像、音频文件和其他类型非结构化数据转化为 embedding 向量。
缓存管理器(Cache Manager)
缓存管理器是 GPTCache 的核心组件,具备以下三种功能:
缓存存储,存储用户请求及对应的 LLM 响应
向量存储,存储 embedding 向量并检索相似结果
逐出管理,控制缓存容量并在缓存满时根据 LRU 或 FIFO 策略清除过期数据
缓存管理器采用可插拔设计。最初,团队在后端实现时使用了 SQLite 和 FAISS。后来,我们进一步扩展缓存管理器,加入了 MySQL、PostgreSQL、Milvus 等。
逐出管理器通过从 GPTCache 中删除旧的、未使用的数据来释放内存。必要时,它从缓存和向量存储中删除数据。但是,在向量存储系统中频繁进行删除操作可能会导致性能下降。所以,GPTCache 只会在达到删除阈值时触发异步操作(如构建索引、压缩等)。
相似性评估器 (Similarity Evaluator)
GPTCache 从其缓存中检索 Top-K 最相似答案,并使用相似性评估函数确定缓存的答案是否与输入查询匹配。
GPTCache 支持三种评估函数:精确匹配(exact match)、向量距离(embedding distance)和 ONNX 模型评估。
相似性评估模块对于 GPTCache 同样至关重要。经过调研,我们最终采用了调参后的 ALBERT 模型。当然,这一部分仍有改进空间,也可以使用其他语言模型或其他 LLM(如 LLaMa-7b)。对于这部分有想法的小伙伴可以联系我们!
后期处理器(Post Processors)
后期处理器整理最终响应返回给用户。它可以返回最相似的响应或根据请求的温度参数调整响应的随机性。如果在缓存中找不到相似的响应,后期处理器则会将请求转发给 LLM 来生成响应,同时生成的响应将被存储在缓存中。
测评环节
接下来便是检验成果的重要一步了!为评估 GPTCache 的性能,我们选取了一个数据集,其中包含三种句子对:语义相同的正样本、语义相关但不完全相同的负样本、语义完全不相关的中间样本。
实验 1
为了确定基线(baseline),我们先将 30,000 个正样本的键存入缓存中。接下来,我们随机选择 1,000 个样本,并使用对应的另 1,000 条句子(句子对中的另一个句子)作为查询语句。
以下是我们获得的结果:
我们发现,将 GPTCache 的相似性阈值设置为 0.7 可以较好地平衡命中率和负相关比率。因此,所有后续测试中都会应用这个设置。用 ChatGPT 生成的相似度分数来确定缓存的结果是否与查询问题相关。将正样本阈值设置为 0.6,使用以下 prompt 生成相似度分数:
(注:以上 prompt 为中文翻译。原文请见:https://zilliz.com/blog/Yet-another-cache-but-for-ChatGPT)实验 2
进行包含 50% 正样本和 50% 负样本的查询,在运行 1,160 个请求后,产生了如下结果:
命中率几乎达到了 50%,命中结果中的负样本比例与实验 1 相似。这说明 GPTCache 善于区分相关及不相关的查询。实验 3
将所有负样本插入到缓存中,并使用它们句子对中的另一个句子作为查询。虽然某些负样本获得了较高的相似度得分(ChatGPT 认为它们的相似度打分大于 0.9),但是没有一个负样本命中缓存。原因可能是相似性评估器中使用的模型针对该数据集进行过微调,所以几乎所有负样本的相似性打分都降低了。
以上就是团队进行的典型实验,目前,我们已将 GPTCache 集成到 OSSChat 聊天机器人中,并努力收集生产环境中的统计数据。后续,我也会发布基准测试报告,报告中还包含实际用例,可以期待一下!
在进一步规划上面,团队正努力在 GPTCache 中接入更多 LLM 模型和向量数据库。此外,GPTCache Bootcamp 也即将发布。大家可以通过 bootcamp 学习如何在使用 LangChain、Hugging Face 等过程中加入 GPCache,也可以 get 如何将 GPTCache 融入其他多模态应用场景中。
One More Thing
仅仅两周时间,我们便完成搭建了 GPTCache 并将其开源。在我看来,这是一件了不起的事情,这离不开团队每一位成员的付出。从他们的身上我一次又一次地感受到开发者这个群体的冲劲,以及努力实践 " 技术改变未来 " 的信念,感慨良多。
对于团队以外的开发者,我也有一些话想说。进行这次分享的初衷是希望站在 AIGC 从业者的角度,和大家分享 ChatGPT 引领的浪潮下,开发者「从 0 到 1」、「从 1 到 100」的探索经历和心得,以求和大家讨论、共勉。
当然,最最重要的是希望各位开发者能参与到 GPTCache 的共建中。作为一个新生儿,它仍有很多需要学习的地方;而作为一个为开源而生的项目,它需要大家的建议、指正。
GitHub 链接:
https://github.com/zilliztech/GPTCache
标签:
电脑
-
内存DDR3和DDR3L有什么区别?哪种值得推荐?
这两种内存同样是属于DDR3内存,而相比于DDR3内存,DDRL3的工作电压更低,功耗更低而且性能上较弱,价格...
-
内存条两条8g和一条16g有区别吗?内存条安装有哪些注意事项?
两条8g和一条16g主要有传输速率、售价和兼容性方面的区别。前者可以搭建双通道,在传输速度方面要高于后...
-
电脑的内存条可以随便增加吗?电脑要加内存有什么要求?
不可以随便添加,主要是由于电脑内存还要受到自身规格、主板的支持和系统的限制;尤其是需要与原有的内存...
-
什么是MVC?怎么在 php 中搭建 MVC?
MVC 是一种设计模式,指的是将一个应用程序分为三个独立的部分:模型(Model)、视图(View)和控制器(Cont...
-
什么是多线程?如何用C语言实现多线程?多线程有哪些应用?
什么是多线程多线程程序是指在一个进程中运行多个线程,每个线程可以独立执行不同的任务,且同时共享进...
硬件
- 如何开启内存双通道模式?开启内存双通道模式方法分享
- 内存的传输类型是什么?内存常见术语有哪些?
- 内存故障的表现有哪些?内存接触不良引起的故障怎么解决
- 什么是虚拟内存?虚拟内存怎么设置最好?
- 内存条怎么装?内存条安装方法分享
- 内存故障有什么状况?内存常见故障解决方法有哪些?
- 内存条什么牌子好?有哪些牌子推荐?
- 闪存门是什么?怎么看内存?
- 高拍仪和扫描仪有哪些区别?高拍仪应用范围有哪些?
- 显存和内存有什么区别?内存和显存相关基础知识分享
- 苹果耳机三代和pro有哪些区别?两代无线耳机的使用评测分享
- 蓝牙耳机左右耳声音不一致怎么办?无线耳机左右音道调整小技巧分享
- 企业级硬盘与普通消费级硬盘有哪些不同?企业级硬盘有什么技术规范?
- CPU散热器选风冷好还是水冷好?水冷和风冷的原理是什么?
- 世界今热点:修改几行代码就让 LLM 应用提速 100 多倍!这个团队两周搭建 ChatGPT 缓存层,曾被老黄 OpenAI 点赞
- 华林证券董秘回复:2022年公司收购了海豚股票App,并升级为海豚财富App
- 华林证券董秘回复:公司与火山引擎与巨量引擎已签署了长期合作协议
- 焦点精选!追梦脸快被打肿 国王诠释头号黑马 萨斯组合48分蒙克再演超六
- 全球时讯:奇骏用什么型号机油,奇骏机油5W30和5W40哪个好
- 全球微头条丨最适合奇骏的机油,奇骏用5W30还是0W40
- 4月18日华东地区纯碱价格偏弱运行
- 世界视点!从几元到上百元,维生素C真的能防流感吗?
- 天天即时看!因漏水问题起冲突,男子被打成脑震荡
- 平顶山市生态环境局鲁山分局召开砖瓦窑企业服务会
- 焦点资讯:东方财富证券给予多利科技买入评级 深度研究:特斯拉优质冲压件供应商 一体化压铸潜力巨大 目标价格为101.66元
- 宝地矿业2022年新增资源量2.12亿吨
- 2x660MW!大唐国际陡河发电厂燃煤热电联产等容量替代工程相关的2项招标
- 什么花,容易引发过敏?
- 当前快看:以基础研究夯实科技自立自强根基
- 当前简讯:歌尔股份:砍单砍崩业绩,苹果的小弟熬得住吗?
- 全球速讯:我国公认的10大古人 你认可吗?
- 当前最新:为何东汉可以中兴汉朝,东晋南宋却不能中兴晋朝宋朝?有三个原因
- 世界快资讯丨限量199台,阿斯顿·马丁DBS 770敞篷版官图发布
- 全球信息:贵州旅游攻略_通辽大青沟旅游攻略
- 焦点信息:大青沟旅游攻略自驾游_大青沟旅游攻略
- 环球新消息丨大连十大面包店排行榜
- 要闻速递:3万一4万新车 3万-4万哪款车型好
- 【焦点热闻】德州8部门联合发文!
- 环球时讯:中航高科:4月17日融券卖出金额7.82万元,占当日流出金额的0.08%
- 每日热闻!栖霞建设:4月17日获融资买入476.61万元,占当日流入资金比例26.37%
- 前沿资讯!力量钻石(301071):4月17日北向资金减持6.14万股
- 环球热文:荣耀印记-魔兽世界荣耀堡印记有什么用?
- 全球即时:蒙蒂谈杜兰特G1关键时刻领防小卡:不想去妨碍那些伟大的时刻
- Stein:联盟内部人士对火箭得到纳斯感到悲观 后者有其他选择
- 《进击的汉字》办公室疑云10处令人联想的地方通关攻略
- 古代时辰怎么读_古代时辰
- 世界看热讯:鬼吹灯结局小说_鬼吹灯结局
- 即时:财政政策的目标一般可以归纳为_财政政策的目标
- 圆锥的表面积公式用字母表示_圆锥的表面积公式
- 世界即时看!杨幂父母综艺节目_杨幂父母
- 热门:纳米盘怎么清洗_纳米盘
- 天天资讯:Spring Cloud Task 任务开发-定义任务输入和输出(二)
- 世界微速讯:华为超联接笔记本MateBook D 14发布,这才是大学生与新锐白领的“梦中情本”
- 小米13 Ultra用上华星光电C7屏幕!雷军:国产屏超越行业标杆
- 摔角动态2018《女子进化》另一场冠军赛敲定 王大锤对其尤为看重
- 前沿资讯!我的世界飞行挂软件_我的世界怎么开挂
- 热点评!完璧归赵剧本300字_完璧归赵剧本
- 【当前独家】巅峰对决!汽车尖兵赛场展开激烈角逐
- 天天快讯:高校回应多名学生在教室内吸烟详细内容
- 世界速读:篮协李春江禁赛5年 李楠禁赛3年详细内容
- 手脚冰凉危害大,什么原因会导致手脚冰凉?
- 环球滚动:龙津药业股东立兴实业拟减持不超6%公司股份
- 世界热点!签约钢琴家郎朗代言 筑美家居启动品牌全面升级计划
- 天天时讯:舞阳县马村乡:环境整治“再加压” 乡村振兴“亮底色”
- 三菱汽车suv新款即将上市,GC-PHEV 3.0T混动仅卖20万
- 每日信息:本田15万左右的车 共有8款车型挑选_广汽本田/东风本田各四款
- 视焦点讯!极氪汽车是哪个公司
- 环球头条:福特野马多少钱一辆 官方售价36.98-39.58万元_全款最低落地价37.10万元起
- 全球短讯!广汽菲亚特suv车型菲跃解析 空间舒适的美式SUV
- 全球最新:最热门的7座SUV 2019年7月7座SUV销量排行榜
- 每日速读!五一去哪?宁波发现小众绿野仙踪,景美人少
- 当前快报:美宣布起诉、制裁中国企业和公民 外交部:强烈谴责 已向美方提出严正交涉
- 吉比特:控股股东及公司董事计划减持股份
- 闪充和快充有哪些区别?闪充和快充哪个好用?
- 开26度的空调到底能不能有效节能?空调运行有哪些注意事项?
- 手机省电模式真的能省电吗?有必要开省电模式吗?
- 重点聚焦!4月17日A股行业资金流动情况
- 焦点快报!4月17日A股沪深两市资金流向图、主力及超大单等动向一览
- 新资讯:斯坦福-比内智力量表_关于斯坦福-比内智力量表简介
- 热消息:福建开通首条“福州—厦门”海峡快线
- 财经速览
- 环球观热点:10.99万起 南京依维柯全新得意系列上市 限时预订享多重礼遇!
- 青少年白头发治疗_青少年白头发怎么治
- 报道:搋子读音_搋
- 世界通讯!普通人如何赚外国人的钱?劝你看一眼拼多多
- 全球热议:浙商证券李超:当我们的市场足够大的时候,实际上制造业就不存在产能过剩的问题
- 快看:中央财政下达资金100亿元,向实际种粮农民发放一次性补贴
- 全球快资讯丨突发!美国为首的“国际联盟”与武装分子在叙利亚爆发冲突
- 中国篮协对上海队、江苏队消极比赛作出处罚
- 每日关注!第二十一届中国国际人才交流大会闭幕 两天逾5万人次入场
- 天天头条:看图盘数据|一图读懂“重生北京绿”
- 当前动态:我州积极备战省第十届民族运动会
- 微速讯:“奔跑吧·少年”临夏州第二届青少年科技体育竞赛活动在临夏市实验小学开幕
- 【天天速看料】宁夏煤炭产量今年将突破一亿吨
- 30年期国债期货即将上市 首批3个合约将于4月21日交易
- 环球速读:ROCK XL全球首次公开亮相三亚,海南游艇设计与制造发展迈入新阶段
- 天天精选!宁德时代钠离子电池花落奇瑞车型 有望成为锂电池重要补充
- 环球微头条丨AP蛮王怎么出装_ap蛮王
- 世界短讯!一季度河南全省存贷款余额分别突破10万亿元、8万亿元大关
- 破解“小案件” 服务“大民生”
- 消息!42crmo调质硬度和机械性能_42crmo调质硬度
- 信息:樱桃的好处朋友圈_樱桃的好处
- 天天微动态丨辉腾字母和辉昂字母
- 天天热资讯!红楼梦中的人物关系作文 红楼梦中的人物关系
- 喜羊羊与灰太狼冰羊羊是哪一部 喜羊羊与灰太狼冰羊羊
- 青海省党政代表团在江苏考察:共饮一江水 苏青一家亲
- 营造社上海沙龙|晏成:行业进入“深海时刻”,市场竞争至少是5-10年的持久战
- 【独家焦点】营造社上海沙龙|赵长江:腾势要“高替BBA” 用户是核心而非中心
- 万人说新疆|买托合提:要让我们的日子像红枣一样红红火火
- 世界观速讯丨俄乌局势进展:欧洲两国暂停进口乌农产品 俄称乌炮击顿涅茨克市中心
- 世界微资讯!中国俄罗斯族迎巴斯克节 传承百年华俄后裔文化
- 热推荐:企业全方位展示中国智造创新实力 广交会喜迎八方来客
- 多大可以领结婚证_领结婚证的年龄
- 世界观焦点:交电费怎么交_交电费的方法
电竞
数码
事件
- 观焦点:2023上海车展:飞凡RC ESSENCE本智04-18
- 全球热文:杭州女童被保姆遗留电梯致坠亡案18日一审开庭,将择期宣判04-18
- 当前短讯!日产奇骏二保换什么机油,新奇骏二保专用机油04-18
- 前沿资讯!海尔与中石化再度战略合作,加速构建首个循环碳普惠生态平台04-18
- 环球实时:生死一瞬间!他一个动作,拯救了一个家庭……04-18
- 环球最新:CPO概念强势拉升 剑桥科技一度涨停 光库科技再创新高04-18
- 着力打造企业主导的产学研深度融合创新联合体04-18
- 焦点资讯:17岁少年突然呕血,竟是胃癌!专家建议:这些人应两年做一次胃镜检查04-18
- 国家统计局:今年一季度中国GDP同比增长4.5%04-18
- 这个戏红人不红的星二代,终于凭借尘封十三载,红到网友要求改名04-18
- 当前动态:青岛海事局发布航行警告:今日9时至12时,黄海部分海域进行重大军事活动04-18
- 漫谈青岛制造丨青岛“王牌”产业将打出什么新“王牌”04-18
- 大青沟门票多少钱_大青沟04-18
- 新冠抗体“保护期”快到了,需再接种疫苗吗?04-18
- 四方光电:4月17日获融资买入483.38万元04-18