• 文章
  • 语义缓存:以闪电般的数据检索加速人工智能
返回 RAG 和 GenAI

语义缓存:以闪电般的数据检索加速人工智能

丹尼尔·罗梅罗,大卫·米里尔

·

2024 年 5 月 7 日

Semantic Cache: Accelerating AI with Lightning-Fast Data Retrieval

什么是语义缓存?

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

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

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

semantic-cache-question

传统缓存基于精确匹配操作,而语义缓存搜索键的含义而不是精确匹配。例如,“巴西的首都是什么?”和“你能告诉我巴西的首都是什么?”是语义等价的,但不是精确匹配。语义缓存识别这种语义等价并提供正确的结果。

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

Open In Colab

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

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

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

图表:语义缓存通过直接向用户检索存储的答案来改进 RAG跟随 GIF,查看语义缓存如何存储和检索答案。

Alt Text

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

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

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

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

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

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

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

何时使用语义缓存?

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

对于希望跨多个查询获得不同响应的应用程序,使用缓存可能并不理想。然而,在问答系统中,缓存是有利的,因为变化微不足道。它通过存储频繁访问的数据,成为聊天机器人有效的性能优化工具。

一种策略涉及为聊天机器人对话创建即时补丁,其中常用问题预先映射到缓存中准备好的响应。这使得聊天机器人能够快速检索和交付响应,而无需为每个查询都依赖语言模型 (LLM)。

实现语义缓存:分步指南

本视频的第一部分解释了缓存的工作原理。在第二部分中,您可以按照我们的笔记本示例的代码进行操作。

Open In Colab

拥抱 AI 数据检索的未来

Qdrant 为您的 RAG 和 AI 应用程序提供了最灵活的向量搜索实现方式。您今天就可以在您的免费 Qdrant Cloud 实例上试用语义缓存!只需注册或登录您的Qdrant Cloud 帐户,然后按照我们的文档操作即可。

您还可以在本地部署 Qdrant 并通过我们的 UI 进行管理。要做到这一点,请查看我们的混合云

hybrid-cloud-get-started

此页面有用吗?

感谢您的反馈!🙏

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