创建视觉助手:使用多个模态的RAG-Chroma进行幻灯片问答

80 阅读2分钟

引言

随着多模态大语言模型(LLM)的发展,视觉助手已经能够实现对图片进行问题回答。这种能力为演示文稿中的幻灯片提问提供了新的可能性。本文将介绍如何使用OpenCLIP嵌入技术和GPT-4V模型,构建一个针对幻灯片的视觉助手。我们将深入探讨该工具的工作原理,并提供实用的代码示例。

主要内容

多模态嵌入的原理

多模态嵌入使得文本和图像可以映射到相同的向量空间中,从而能够比较和检索相似的内容。在本项目中,我们使用OpenCLIP进行图像嵌入,并将这些嵌入存储在Chroma中。

图像嵌入和存储

通过使用OpenCLIPEmbeddings,我们可以将幻灯片中的图像嵌入至向量空间。以下代码片段展示了如何在ingest.py文件中配置OpenCLIP模型:

from chroma import Chroma
from open_clip 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"
    ),
)

从文本到图像的检索

在用户输入问题后,应用程序会根据文本与图像之间的相似度来检索相关的幻灯片。这是通过多模态嵌入空间实现的。

使用GPT-4V进行回答生成

检索到的图像会被传递给GPT-4V模型,用于生成回答。因此,确保设置好OPENAI_API_KEY环境变量,以便访问OpenAI GPT-4V。

代码示例

以下是完整的代码示例,用于解析和回答Datadog幻灯片中的问题:

# 使用API代理服务提高访问稳定性
from rag_chroma_multi_modal import chain as rag_chroma_multi_modal_chain

def setup_application():
    # 初始化应用
    add_routes(app, rag_chroma_multi_modal_chain, path="/rag-chroma-multi-modal")

# 启动服务器
if __name__ == "__main__":
    setup_application()
    app.run(host='0.0.0.0', port=8000)

常见问题和解决方案

问题:无法访问API

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性,以确保能够正常访问OpenAI的API。

问题:模型下载缓慢

第一次运行应用时,系统会自动下载多模态嵌入模型。如果下载速度慢,建议检查网络连接或更换网络环境。

总结和进一步学习资源

通过本文,您了解了如何构建一个多模态的视觉问答助手。此外,您可以进一步探索以下资源以加深理解:

参考资料

  1. OpenAI's CLIP: "Learning Transferable Visual Models From Natural Language Supervision"
  2. Chroma Documentation: Chroma
  3. LangChain CLI: LangChain CLI

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

---END---