dot 快速未来的浪潮即将席卷您的城市。

加入我们参加 Redis 发布会

探索 LangChain 和 Redis 推出的全新多模态 RAG 模板

大型语言模型 (LLM) 在大量公共数据上进行训练,擅长根据这些信息生成类似人类的文本。但是,它们无法访问私有或企业数据,这限制了它们在企业用例中的有效性。检索增强生成 (RAG) 是一种流行的方法,可以将 LLM 连接到这些专业数据,从而将其知识库扩展到初始训练数据之外。借助 RAG,公司可以使用 LLM 来回答有关其独特文档和数据的查询。

RAG 通过将检索组件集成到生成过程来工作。应用程序首先根据输入查询检索相关文档,然后综合这些信息以生成响应。这种方法不仅提供更深入的上下文,而且还使用最新信息增强模型的响应,与传统 LLM 相比,可以提供更准确、更相关的响应。

但是,大多数 RAG 方法只关注文本,而忽略了幻灯片演示文稿或报告中包含的信息丰富的图像或图表。随着多模态模型(如 GPT4-V)的兴起,可以将图像直接传递到 LLM 以进行推理。然而,在无缝处理文本和图像的 RAG 框架开发方面仍存在差距。 

Redis LangChain 通过引入 多模态 RAG 模板,超越了文本。通过整合视觉数据,该模板允许模型同时处理和推理文本和图像,为构建更全面、更细致入微的 AI 应用程序铺平了道路。我们很高兴推出一个系统,它不仅可以读取文本,还可以解释图像,有效地结合这些来源来增强理解力和响应准确性。

在这篇文章中,我们将:

  1. 介绍多模态 RAG
  2. 逐步介绍模板设置
  3. 展示一些示例查询以及使用多模态 RAG 的优势

超越简单的 RAG

典型的 RAG 管道包括使用向量嵌入和元数据索引文本文档,从数据库中检索相关上下文,形成有根的提示,以及使用 LLM 合成答案。有关更多信息,请参阅 LangChain 的视频系列 RAG 从头开始

但是,对于非文本数据(如图像或图形)呢?对于这些其他数据类型,我们必须使用独特的流程来提取语义。例如,考虑分析 Nvidia Q3 FY24 投资者演示文稿的幻灯片演示文稿。幻灯片是文本、图像、表格和图表组合。标准 PDF 提取技术只会提取文本,而信息丰富的图像则不在检索范围内。

幸运的是,我们可以使用 Redis 中灵活的数据结构和 OpenAI 的组合文本和视觉模型 GPT4-V 的创新功能来解决此问题。为了设置多模态 RAG 管道,我们从几个预处理步骤开始。

  1. 使用 GPT4-V 提取幻灯片摘要作为文本
  2. 使用 OpenAI 的嵌入模型 嵌入文本摘要
  3. 在 Redis 哈希中索引文本摘要嵌入,通过主键引用
  4. 将原始图像编码为 base64 字符串,并将其存储在 Redis 哈希中,并使用主键进行引用

对于此用例,LangChain 提供了 多向量检索器 来有效地索引文档和摘要。这种方法的优势在于,我们可以使用常用的文本嵌入来索引图像摘要,就像其他任何文本一样,避免了对更专门和不太成熟的多模态嵌入的需求。  

现在,在运行时,当用户提出问题时:

  1. 使用 OpenAI 嵌入用户问题
  2. 根据嵌入的图像摘要从 Redis 中检索相关图像
  3. 使用主键从 Redis 中查找原始图像
  4. 使用 GPT4-V 和原始图像以及原始问题生成明智的答案


随着 RAG 功能的不断发展,许多人预计,诸如此类的流程将有更多对数据库和 LLM 的检索调用,从而创建 复合 AI 系统。每次额外的步骤都会增加延迟和成本。Redis 语义缓存 减少了对数据库和 LLM 的重复问题的调用次数,从而避免了冗余工作。语义缓存通过存储之前已回答问题的响应来工作。然后,当提出类似的问题时,应用程序会从缓存中检索该存储的答案,而不是启动对数据库的重复调用以及对 LLM 的另一次昂贵调用。通过为常见问题消除额外的步骤,应用程序可以加快响应速度,并显着降低调用 LLM 的成本。 

使用 RAG 模板启动

在启动应用程序之前,您需要一个(免费的)Redis 云实例 和一个 OpenAI API 密钥。 

1. 设置您的 OpenAI API 密钥Redis URL 环境变量

export OPENAI_API_KEY=<your-openai-api-key>
export REDIS_URL=redis://:<redis-pwd>@<redis-host>:<redis-port>

2. 在您的 Python 环境中安装 LangChain CLI

pip install -U langchain-cli

3. 创建一个新的 LangChain 应用程序

langchain app new my-app
cd my-app

这将创建一个名为 my-app 的新目录,其中包含两个文件夹:

  • app: LangServe 代码所在的位置
  • packages: 您的链或代理所在的位置

4. 添加多模态 RAG 包:

langchain app add rag-redis-multi-modal-multi-vector

当提示您安装模板时,选择是选项, y

5. 将以下代码段添加到您的 app/server.py 文件中

from rag_redis_multi_modal_multi_vector.chain import chain as rag_redis_chain

add_routes(
    app,
    rag_redis_chain,
    path="/rag-redis-multi-modal-multi-vector"
)

6. 为演示应用程序加载源数据

cd packages/rag-redis-multi-modal-multi-vector

poetry install
poetry run python ingest.py

这可能需要几分钟。 ingest.py 脚本执行一个管道来加载幻灯片图像,使用 GPT4-V 提取摘要,并创建文本嵌入。

7. 使用 LangServe 运行 FastAPI 应用程序

cd . . /. . / 

langchain serve

8. 通过 http://127.0.0.1:8000 访问 API,并通过 http://127.0.0.1:8000/playground 的游乐场测试您的应用程序

通过快速检查幻灯片演示文稿中引用的 PDF 图像,验证 RAG 系统的答案。

除了 LangServe 之外,LangChain 还拥有一个名为 LangSmith 的可观察性平台。它将记录模板执行的所有生成操作,从而允许检查提示并验证传递到 GPT-4V 的图像。例如,您可以在 langchain.com 上查看多模态数据的跟踪,该跟踪显示了从财务图表中提取信息的信息。   

总结

借助新的多模态 RAG 模板,开发人员现在可以构建复杂的 AI 应用程序,这些应用程序可以理解和利用由单个后端技术(Redis)支持的各种数据类型。

通过设置一个免费的 Redis 云实例 并使用新的 Redis <> LangChain 来开始使用。有关其他新兴 RAG 概念的见解,请查看 Lance Martin、Nuno Campos 和 Tyler Hutcherson 最近的会议

相关资源