大型语言模型(LLMs)在大量公共数据上接受培训,并擅长根据该信息生成类似人的文本。然而,因为无法访问私人或公司数据,LLMs 对企业用例的有效性受到限制。检索增强生成(RAG)是将 LLMs 与这些专业数据联系起来的通用方法,将它们的知识库扩展到初始培训数据之外。通过 RAG,企业可以使用 LLMs 来回答有关其独特文档和数据的问题。
RAG 通过将检索组件集成到生成过程中来工作。应用程序首先根据输入查询检索相关文档,然后合成此信息以生成响应。这种方法不仅提供了更深入的背景,还用最新信息增强了模型的响应,与传统 LLMs 相比,提供了更准确和更相关的响应。
然而,大多数 RAG 方法只关注文本,省略幻灯片或报告中包含的信息丰富的图像或图表。随着多模态模型(如GPT4-V)的兴起,可以将图像直接传递到 LLMs 中进行推理。尽管如此,在开发无缝处理文本和图像的 RAG 框架方面仍然存在差距。
Redis 和 LangChain 通过引入多模态 RAG 模板超越了文本。通过整合视觉数据,该模板允许模型跨文本和图像进行处理和推理,为更全面和细致入微的人工智能应用程序铺平了道路。这是一个不仅读取文本而且解释图像的系统,能有效地结合这些来源来提高理解和响应准确性!
超越传统的 RAG
典型的 RAG 管道涉及使用矢量嵌入和元数据索引文本文档,从数据库中检索相关上下文,形成接地提示,并用 LLM 合成答案。
但是,图像或图形等非文本数据怎么办呢?对于这些其他数据类型,用户必须用一个独特的过程提取语义。例如,考虑分析 Nvidia Q3 FY24 投资者演示文稿的幻灯片。幻灯片是文本、图像、表格和图表的组合。标准 PDF 提取技术只会提取文本,将信息丰富的图像留在检索范围之外。
幸运的是,用户可以使用 Redis 中的灵活数据结构和 OpenAI 的组合文本和视觉模型 GPT4-V 的创新能力来解决这个问题。要设置多模态 RAG 管道,可以从几个预处理步骤开始:
1.使用 GPT4-V 将幻灯片摘要提取为文本
2.使用 OpenAI 的嵌入模型嵌入文本摘要
3.Redis 散列中的索引文本摘要嵌入,由主键引用
4.将原始图像编码为 base64 字符串,并使用主键将其存储在 Redis 散列中
对于此用例,LangChain 提供 MultiVector Retriever 来高效地索引文档和摘要。这种方法的好处是,用户可以像任何其他文本一样,使用常用的文本嵌入来索引图像摘要,避免需要更专业化和不太成熟的多模式嵌入。
现在在运行时,当用户提出问题时:
1.使用 OpenAI 嵌入用户问题
2.根据嵌入式图像摘要从 Redis 检索相关图像
3.使用主键查找 Redis 的原始图像
4.使用带有原始图像和原始问题的 GPT4-V 生成明智的答案
随着 RAG 功能的不断进步,许多人预计像这样的进程将对数据库和 LLMs 进行更多的检索调用,从而创建复合 AI 系统。这些额外的步骤都会增加滞后和成本。
Redis 语义缓存减少了重复问题的数据库和 LLMs 的调用次数,消除了冗余工作。语义缓存通过存储之前回答的问题的回复来工作。然后,当提出类似问题时,应用程序会从缓存中检索存储的答案,而不是启动对数据库的重复调用和对 LLM 的另一个昂贵的调用。
通过删除常见问题的额外步骤,应用程序可以加快响应速度,并显著降低调用 LLMs 的成本。
用 RAG 模板启动
在启动应用程序之前,需要准备一个 Redis Cloud 实例和一个 OpenAI API 密钥。
Step 1. 设置 OpenAI API 密钥和 Redis URL 环境变量
Step 2. 在 Python 环境中安装 LangChain CLI
Step 3. 创建一个新的 LangChain 应用程序
这将创建一个名为 my-app 的新目录,有两个文件夹:
- 应用程序:LangServe 代码住在哪里
- 包裹:连锁店或代理商居住的地方
Step 4. 添加多式联运布包
当提示安装模板时,选择是选项 y 。
Step 5. 将以下片段添加到 app/server.py 文件中
Step 6. 为演示应用程序摄取源数据
这可能需要几分钟。ingest.py 脚本执行一个管道来加载幻灯片图像,使用 GPT-4 提取摘要,并创建文本嵌入。
Step 7. 使用 LangServe 为 FastAPI 应用程序提供服务
Step 8. 在 http://127.0.0.1:8000 访问 API,
并通 http://127.0.0.1:8000/playground 测试应用程序
通过快速检查幻灯片中的引用 PDF 图像来验证 RAG 系统的答案。
除了 LangServe,LangChain 还有一个名为 LangSmith 的可观察性平台。这将记录模板执行的所有世代,允许检查提示和验证传递给 GPT-4V 的图像。
结语
借助新的多模态 RAG 模板,开发人员现在可以构建复杂的人工智能应用程序,这些应用程序可以理解和利用由单一后端技术 Redis 驱动的多种数据类型。