大型语言模型 (LLMs) 经过大量公共数据集的训练,擅长根据这些信息生成类似人类的文本。然而,它们无法访问私有或企业数据,这限制了它们在企业用例中的有效性。检索增强生成 (RAG) 是一种流行的方法,可以将 LLMs 连接到这些特定数据,扩展其知识库,使其超越初始训练数据。通过 RAG,公司正在使用 LLMs 回答关于其独特文档和数据的问题。
RAG 的工作原理是将检索组件集成到生成过程中。应用程序首先根据输入查询检索相关文档,然后综合这些信息生成响应。与传统 LLMs 相比,这种方法不仅提供了更深入的上下文,还利用最新信息增强了模型的响应,提供了更准确、更相关的回答。
然而,大多数 RAG 方法仅关注文本,忽略了幻灯片或报告中包含的信息丰富的图像或图表。随着多模态模型(例如 GPT4-V)的兴起,现在可以将图像直接输入到 LLMs 中进行推理。尽管如此,能够无缝处理文本和图像的 RAG 框架的开发仍然存在空白。
Redis 和 LangChain 通过引入一个多模态 RAG 模板,超越了纯文本处理。通过整合视觉数据,此模板使模型能够跨文本和图像进行处理和推理,为更全面、更精细的 AI 应用程序铺平了道路。我们很高兴能推出一个不仅能阅读文本,还能解释图像的系统,有效结合这些信息源,以增强理解和响应的准确性。
在本文中,我们将介绍
典型的 RAG 流程包括使用向量嵌入和元数据对文本文档进行索引、从数据库检索相关上下文、构建一个基础提示,然后使用 LLM 合成答案。有关更多信息,请参阅 LangChain 的视频系列《RAG 从零开始》。
但是,图像或图形等非文本数据怎么办? 对于这些其他数据类型,我们必须通过独特的流程提取其语义。例如,考虑分析 Nvidia 24 财年第三季度的投资者演示幻灯片。这些幻灯片是文本、图像、表格和图表的组合。标准的 PDF 提取技术只能提取文本,将信息丰富的图像排除在检索范围之外。
幸运的是,我们可以利用 Redis 中灵活的数据结构以及 OpenAI 文本和视觉组合模型 GPT4-V 的创新能力来解决这个问题。要设置多模态 RAG 流程,我们首先需要进行一些预处理步骤
对于这个用例,LangChain 提供了 MultiVector Retriever 来高效地索引文档和摘要。这种方法的好处在于,我们可以使用常用的文本嵌入技术来索引图像摘要,就像处理其他文本一样,避免了对更专业且不够成熟的多模态嵌入技术的需求。
现在,在运行时,当用户提出问题时
随着 RAG 功能的不断进步,许多人预计这样的过程将会有更多的数据库和 LLMs 检索调用,从而创建复合 AI 系统。这些额外的步骤会增加延迟和成本。Redis 的语义缓存减少了对数据库和 LLMs 的重复问题调用次数,消除了冗余工作。语义缓存通过存储先前回答问题的响应来工作。然后,当提出类似问题时,应用程序会从缓存中检索存储的答案,而不是再次向数据库发出重复调用并向 LLM 发出另一个昂贵的调用。通过消除常见问题的额外步骤,应用程序可以加快响应速度并显著降低调用 LLMs 的成本。
在启动应用程序之前,您需要一个(免费的)Redis Cloud 实例和一个 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 的新目录,其中包含两个文件夹
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. 访问 API 地址 http://127.0.0.1:8000 并通过 http://127.0.0.1:8000/playground 上的 playground 测试您的应用程序
通过快速检查幻灯片中引用的 PDF 图像来验证 RAG 系统的答案。
除了 LangServe,LangChain 还有一个可观察性平台,称为 LangSmith。这将记录模板执行的所有生成过程,从而可以检查提示并验证传递给 GPT-4V 的图像。例如,您可以在 langchain.com 上查看一个关于多模态数据的跟踪记录,其中显示了从金融图表中提取信息的过程。
借助全新的多模态 RAG 模板,开发者现在可以构建复杂的 AI 应用程序,这些应用程序能够理解和利用各种数据类型,并由单一的后端技术 Redis 提供支持。
通过设置一个免费的 Redis Cloud 实例并使用新的 Redis <> LangChain 模板即可开始。如需了解其他新兴 RAG 概念的见解,请观看最近与 Lance Martin、Nuno Campos 和 Tyler Hutcherson 的会议。