什么是 GPTCache?

GPTCache是一个开源库,能够通过缓存语言模型的响应,来提高 GPT 应用的效率和速度。GPTCache允许用户根据自己的需求自定义缓存规则,包括 embedding 函数、相似性计算方式、存储位置和存储逐出规则等。目前,GPTCache 支持 OpenAI ChatGPT 接口和 LangChain 接口。

What is GPTCache

高速发展的社区

GitHub

6,506+

GitHub 获星

为什么使用 GPTCache?

使用语义缓存来存储 LLM 响应的好处如下

    提升性能

    将 LLM 响应存储在缓存中可以显著减少检索响应所需的时间。如果之前的请求已经存储在缓存中,能够更大幅度地降低响应时间,提高应用程序的整体性能。

    节省开销

    大多数LLM服务根据请求次数和 令牌数 的组合收费。缓存 LLM 响应可以减少对服务 API 的调用次数,从而节省成本。尤其是在高流量场景下,缓存尤为重要。如果不使用语义缓存,可能会多次调用 API,产生极高的费用。

    提高可扩展性

    缓存 LLM 响应可以通过降低 LLM 服务的负载来提高整体应用的可扩展性。语义缓存有助于避免系统瓶颈,确保应用可以处理更多请求。

    降低开发成本

    语义缓存工具能够减少大语言模型应用的开发成本。开发过程中需要连接大语言模型的 API,因此成本可能会十分高昂。GPTCache 界面与大语言模型 API 相同,可存储模型生成数据。使用 GPTCache 无需再连接至大语言模型 API,从而降低成本。

    降低网络延迟

    语义缓存更靠近客户端,可以减少从 LLM 服务检索数据所需的时间。降低网络延迟能有效提升用户的整体体验。

    提升可用性

    LLM 服务频繁限制用户或客户端在特定时间段内访问服务器的频次。触达访问速率上限时,请求会被屏蔽。用户不得不等待一段时间后才可以继续访问服务器,这种限制会导致服务中断。使用 GPTCache 后,您可以根据应用用户数量和查询量灵活快速扩展,保障服务可用性和性能。

总的来说,开发用于存储LLM响应的语义缓存可以提供多种好处,包括性能改进、降低成本、更好的可伸缩性、自定义性和降低网络延迟。

GPTCache 的工作原理

GPTCache 利用在线服务的数据局部性特点,存储常用数据,降低检索时间,减轻后端服务器负载。与传统缓存系统不同,GPTCache 进行语义缓存,识别并存储相似或相关的查询以提高缓存命中率。

GPTCache 通过 embedding 算法将查询问题转换为向量并使用向量数据库进行相似性搜索,从缓存中检索相关查询。 GPTCache 采用了模块化的设计,允许用户灵活自定义每个模块。

虽然语义缓存可能会返回假正类(false positive)和负类(negative)结果,但 GPTCache 提供 3 种性能指标来帮助开发人员优化其缓存系统。

通过上述流程,GPTCache 能够从缓存中寻找并召回相似或相关查询,如下图所示。

GPTCache Infrastructure

定制化的语义缓存

GPTCache 模块化的架构设计方便用户定制个性化语义缓存。每个模块都提供多种选择,适合各种应用场景。

  • 大语言模型适配器(LLM Adapter): 适配器将大语言模型请求转换为缓存协议,并将缓存结果转换为 LLM 响应。适配器方便轻松集成所有大语言模型,并可灵活扩展。GPTCache 支持多种大语言模型,包括:

    • OpenAI ChatGPT API
    • langchain
    • Minigpt4
    • Llamacpp
    • dolly
    • 后续将支持:Hugging Face Hub、Bard、Anthropic 等
  • 预处理器(Pre-Processor):预处理器管理、分析请求,并在将请求发送至 LLM 前调整请求格式,具体包括:移除输入种冗余的信息、压缩输入信息、切分长文本、执行其他相关任务等。

  • 向量生成器(Embedding Generator): Embedding 生成器将用户查询的问题转化为 embedding 向量,便于后续的向量相似性检索。GPTCache 支持多种模型,包括:

    • OpenAI embedding API
    • ONNX(GPTCache/paraphrase-albert-onnx 模型)
    • Hugging Face embedding API
    • Cohere embedding API
    • fastText embedding API
    • SentenceTransformers embedding API
    • Timm 模型库中的图像模型
  • 缓存存储(Cache Store): GPTCache 将 LLM 响应存储在各种数据库管理系统中。GPTCache 支持丰富的缓存存储数据库,用户可根据性能、可扩展性需求和成本预算,灵活选择最适合的数据库。GPTCache 支持多个热门数据库,包括:

    • SQLite
    • PostgreSQL
    • MySQL
    • MariaDB
    • SQL Server
    • Oracle
  • 向量存储(Vector Store): 向量存储模块会根据输入请求的 embedding 查找 top-K 最相似的请求。简而言之,该模块用于评估请求之间的相似性。GPTCache 的界面十分友好,提供丰富的向量存储数据库。选择不同的向量数据库会影响相似性检索的效率和准确性。GPTCache 支持多个向量数据库,包括:

  • 逐出策略(Eviction Policy) 管理:控制缓存存储和向量存储模块的操作。缓存满了之后,缓存替换机制会决定淘汰哪些数据,为新数据腾出空间。GPTCache 目前支持以下两种标准逐出策略:

    • “最近最少使用”逐出策略(Least Recently Used,LRU)
    • “先进先出”逐出策略(First In First Out,FIFO)
  • 相似性评估器(Similarity Evaluator): GPTCache 中的相似性评估模块从 Cache Storage 和 Vector Store 中收集数据,并使用各种策略来确定输入请求与来自 Vector Store 的请求之间的相似性。该模块用于确定某一请求是否与缓存匹配。GPTCache 提供标准化接口,集成各种相似性计算方式。多样的的相似性计算方式能狗灵活满足不同的需求和应用场景。GPTCache 根据其他用例和需求提供灵活性。

  • 后处理器(Post-Processor):后处理器负责在返回响应前处理最终响应。如果没有命中缓存中存储的数据,大语言模型适配器会从 LLM 请求响应并将响应写入缓存存储中。

简单易用、性能超强的向量数据库

几分钟内便可轻松部署大型向量检索服务。

免费试用 Zilliz Cloud