使用开源多模态LLM搭建私人视觉搜索和问答应用

95 阅读3分钟

使用开源多模态LLM搭建私人视觉搜索和问答应用

引言

视觉搜索是许多iPhone或Android设备用户熟悉的应用,它允许用户使用自然语言来搜索照片。随着开源多模态LLM(大规模语言模型)的发布,您可以为自己的私人照片集合构建这种应用。这篇文章将演示如何执行私人视觉搜索,并通过多模态LLM回答有关您的照片的问题。

主要内容

图片摘要生成与存储

该应用程序使用开源的多模态LLM来为每张照片创建摘要,并将摘要嵌入存储在Chroma中。具体步骤如下:

  1. 图片输入:提供一组照片到/docs目录中。默认情况下,该模板包含3张食物图片。
  2. 创建索引:运行以下命令来创建图片索引:
    poetry install
    python ingest.py
    
  3. 存储:使用本地文件存储(LocalFileStore)来存储图片,并将摘要存储在Chroma中。

图片检索与回答生成

在用户提出问题时,系统会根据图像摘要和用户输入之间的相似性检索相关片段,并将这些图片传递给多模态LLM生成回答。主要步骤如下:

  1. 生成摘要:使用名为bakllava的多模态LLM为每张图片生成摘要。
  2. 嵌入摘要:将摘要嵌入并与原始图片链接存储。
  3. 检索图片:根据用户问题,通过嵌入模型(例如Ollama embeddings)找出与问题相关的图片。
  4. 回答合成:将检索到的图片传递给bakllava生成最终回答。

配置与使用

该应用程序默认配置为使用bakllava。您可以在chain.pyingest.py中更改模型配置。以下是具体使用步骤:

  1. 生成摘要和嵌入模型
    # 下载最新版本的Ollama
    https://ollama.ai/
    # 拉取开源多模态LLM:bakllava
    ollama pull bakllava
    # 拉取开源嵌入模型:llama2:7b
    ollama pull llama2:7b
    
  2. 安装LangChain CLI
    pip install -U langchain-cli
    
  3. 创建LangChain项目并安装包
    langchain app new my-app --package rag-multi-modal-mv-local
    
    或者将包添加到现有项目中:
    langchain app add rag-multi-modal-mv-local
    
  4. server.py文件中添加以下代码
    from rag_multi_modal_mv_local import chain as rag_multi_modal_mv_local_chain
    
    add_routes(app, rag_multi_modal_mv_local_chain, path="/rag-multi-modal-mv-local")
    
  5. 配置LangSmith(可选)
    export LANGCHAIN_TRACING_V2=true
    export LANGCHAIN_API_KEY=<your-api-key>
    export LANGCHAIN_PROJECT=<your-project>
    
  6. 启动LangServe实例
    langchain serve
    
    这将启动FastAPI应用程序,本地运行在http://localhost:8000。您可以在http://127.0.0.1:8000/docs查看所有模板,并在http://127.0.0.1:8000/rag-multi-modal-mv-local/playground访问操场。

代码示例

以下是一个完整的代码示例,展示如何使用该应用进行图片检索和问答:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://localhost:8000/rag-multi-modal-mv-local")

# 提供问题并获取回答
response = runnable.run({
    "question": "我吃了什么冰淇淋?"
})
print(response)

常见问题和解决方案

  1. 网络访问稳定性:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。
  2. 模型兼容性问题:确保所选的多模态LLM和嵌入模型兼容,并且下载了正确的版本。
  3. 存储问题:检查本地文件存储和Chroma的配置,确保摘要和图片可以正确存储和检索。

总结和进一步学习资源

通过使用开源的多模态LLM和嵌入模型,您可以搭建一个强大的私人视觉搜索和问答应用。希望这篇文章能帮助您理解并实现该应用,进一步资源建议参考以下内容:

参考资料

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

---END---