• 文章
  • 语义缓存:通过闪电般快速的数据检索加速 AI
返回 RAG & 生成式 AI

语义缓存:通过闪电般快速的数据检索加速 AI

Daniel Romero, David Myriel

·

2024年5月7日

Semantic Cache: Accelerating AI with Lightning-Fast Data Retrieval

什么是语义缓存?

语义缓存是一种检索优化方法,通过它,相似的查询可以立即从知识库中检索到相同的适当响应。

语义缓存与传统的缓存方法不同。在计算领域,缓存指的是高速内存,用于高效存储频繁访问的数据。在向量数据库的上下文中,语义缓存通过存储先前检索的结果及其计算条件来提高 AI 应用程序的性能。这允许应用程序在相同或相似条件再次出现时重用这些结果,而不是从头开始查找。

术语“语义”意味着缓存考虑了被缓存数据或计算的含义或语义,而不仅仅是其语法表示。这可以带来更高效的缓存策略,利用数据或计算内部的结构或关系。

semantic-cache-question

传统缓存基于精确匹配进行操作,而语义缓存则搜索键的含义,而不是精确匹配。例如,“巴西的首都是哪里?”“你能告诉我巴西的首都是哪里吗?”在语义上是等效的,但不是精确匹配。语义缓存识别这种语义等效性并提供正确结果。

在本博客和视频中,我们将指导您如何使用 Qdrant 实现一个基本的语义缓存系统。您还可以尝试此实现的Notebook 示例

Open In Colab

RAG 中的语义缓存:键值机制

语义缓存在检索增强生成 (RAG) 应用程序中得到越来越多的应用。在 RAG 中,当用户提出问题时,我们对其进行嵌入并搜索我们的向量数据库,方法可以是使用关键词搜索、语义搜索或混合搜索。然后将匹配的上下文连同提示和用户问题一起传递给语言模型 (LLM) 以生成响应。

Qdrant 推荐用于设置语义缓存,因为它会进行语义评估响应。实现语义缓存后,我们将常见问题及其对应答案存储在键值缓存中。这样,当用户提出问题时,如果答案已存在于缓存中,我们可以直接从中检索。

图示:语义缓存通过直接将存储的答案返回给用户来改进 RAG跟随 gif,了解语义缓存如何存储和检索答案。

Alt Text

使用键值缓存时,重要的是要考虑到问题措辞的微小变化可能导致不同的哈希值。这两个问题传达了相同的查询,但在措辞上有所不同。一个简单的缓存搜索可能由于问题的不同哈希版本而失败。需要实施一种更细致的方法来适应措辞变化并确保准确响应。

为了解决这个挑战,可以采用语义缓存而不是仅依赖精确匹配。这需要将问题、答案及其嵌入存储在键值结构中。

当用户提出问题时,Qdrant 会对所有缓存的问题进行语义搜索,以找到最相似的问题。如果相似度得分超过预定义的阈值,系统会假设用户问题与匹配的问题等效,并相应地提供对应答案。

语义缓存对 AI 应用程序的好处

语义缓存通过简化从海量数据集中检索常见查询的过程,有助于提高 AI 应用程序的可扩展性。检索过程可能计算密集,实施缓存组件可以减轻负载。

例如,如果数百名用户重复同一个问题,系统可以从缓存中检索预先计算的答案,而无需重新执行整个过程。此缓存将问题作为键,将其对应答案作为值,提供了一种处理重复查询的有效方法。

使用语义缓存具有潜在的成本节约。使用语义缓存消除了对相似或重复问题进行重复搜索和生成过程的需求,从而节省了时间和 LLM API 资源,尤其是在使用像 OpenAI 这样昂贵的语言模型调用时。

何时使用语义缓存?

对于从文档中检索事实的问答系统等应用程序,由于查询的性质一致,缓存是有益的。然而,对于需要不同响应的文本生成任务,缓存可能不理想,因为它会返回先前的响应,可能限制变化。因此,是否使用缓存取决于具体的用例。

对于需要多种查询获得不同响应的应用程序,使用缓存可能不是理想选择。但在问答系统中,缓存是有益的,因为变动微不足道。通过存储频繁访问的数据,它成为聊天机器人有效的性能优化工具。

一种策略是为聊天机器人对话创建临时补丁,将常见问题预先映射到缓存中准备好的响应。这使得聊天机器人能够快速检索并提供响应,而无需依赖语言模型 (LLM) 来处理每个查询。

实现语义缓存:分步指南

此视频的第一部分解释了缓存的工作原理。在第二部分中,您可以跟随我们的Notebook 示例代码进行操作。

Open In Colab

拥抱 AI 数据检索的未来

Qdrant 为您的 RAG 和 AI 应用程序提供最灵活的向量搜索实现方式。今天,您可以在您的免费 Qdrant Cloud 实例上测试语义缓存!只需注册或登录您的 Qdrant Cloud 账户,并遵循我们的文档

您也可以在本地部署 Qdrant 并通过我们的 UI 进行管理。要了解如何操作,请查看我们的混合云

hybrid-cloud-get-started

此页面有用吗?

感谢您的反馈! 🙏

很抱歉听到这个消息。😔 您可以在 GitHub 上编辑此页面,或创建一个 GitHub Issue。