news 2026/8/22 15:36:51

QMedia 多模态 RAG 检索管线源码解析:MultiModalVectorStoreIndex 如何融合文本与图像向量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QMedia 多模态 RAG 检索管线源码解析:MultiModalVectorStoreIndex 如何融合文本与图像向量

QMedia 多模态 RAG 检索管线源码解析:MultiModalVectorStoreIndex 如何融合文本与图像向量

【免费下载链接】QmediaAn open-source AI content search engine designed specifically for content creators. Supports extraction of text, images, and short videos. Allows full local deployment (web app, RAG server, LLM server). Supports multi-modal RAG content Q&A.项目地址: https://gitcode.com/gh_mirrors/qm/Qmedia

QMedia 是一款专为内容创作者设计的开源 AI 内容搜索引擎,支持图文/短视频内容提取、全本地化部署,并基于多模态 RAG 实现内容搜索问答。本文带你完整走读它的检索管线:从素材入库、多模态 Reader 信息提取,到 MultiModalVectorStoreIndex 如何同时融合文本与图像向量,最终让一句问题同时搜到"文案"和"图片"。适合想看懂 LlamaIndex 多模态检索实现的开发者。

🧭 一张图看懂 QMedia 多模态 RAG 架构

QMedia 由三组可分离部署的服务组成:

  • mm_server:多模态模型服务(OCR、CLIP 编码、BGE 文本编码、Whisper 语音转录)
  • mmrag_server:RAG 检索问答服务,检索管线就在这里
  • qmedia_web:内容卡片展示前端

整个管线入口是 mmrag_server/services/nodes.py 中的build_index()函数。

📥 第一步:把图文/短视频拆成"多模态文档"

每一条内容(NoteData)由三部分构成:图片image_data、视频video_data、文案info_data。管线会为每部分内容调用不同的 Reader:

Reader职责产出
ImageReader登记图片素材ImageDocument(留给 CLIP 编码)
ImageOcrReader调 mm_server 的 OCR 模型提取图中文字,按字号分档排序文本 Document
NoteInfoReader把标题、描述、标签拼成结构化文本文本 Document
AudioTranscriptionReaderfaster-whisper 转录视频语音 + LLM 生成总结文本 Document

关键细节:所有 Document 都在 metadata 里带上note_id,这样检索命中后能回溯到原始内容卡片,前端才能展示"答案来自哪篇笔记"。

Reader 源码集中在 mmrag_server/services/readers/,其中 OCR 的字号分档逻辑见 image_ocr.py。

🔀 第二步:MultiModalVectorStoreIndex 如何融合文本与图像向量

文本先经SentenceSplitter切分成节点,然后由build_store_index()创建索引(nodes.py):

MultiModalVectorStoreIndex(nodes, image_embed_model=CLIP, embed_model=BGE)

融合机制有 4 个关键点:

  1. 文本节点走 BGE 嵌入模型(bge-small-en-v1.5),擅长语义级文本匹配;
  2. 图像节点走 CLIP(ViT-B/32),把图片编码进向量空间;
  3. CLIP 的文本嵌入与图像嵌入处于同一向量空间——同一个查询文本可以转成 CLIP 文本向量去比对图像,这就是连接文本与图像的"桥梁",实现真正的跨模态检索;
  4. 检索时查询双路并行:文本路取 top 3(similarity_top_k),图像路取 top 4(image_similarity_top_k),两路结果合并交给 LLM 生成答案。

两个编码模型都不在 RAG 服务里本地加载,而是通过 HTTP 调用 mm_server:BGE 文本编码走/api/embeddings,CLIP 图像/文本编码走/api/clip-image-embeddings/api/clip-text-embeddings,封装在 mmrag_server/services/llm/remote_embedding.py 的RemoteClipEmbedding类中——模型与检索应用解耦,方便随时换模型。

💾 第三步:索引三级缓存,重启秒级加载

build_index(mode="auto")会按磁盘状态自动选择构建方式,这是很实用的工程细节:

  • raw:首次启动,从原始素材完整走"提取 → 切分 → 编码"全流程
  • docs_from_persist:文档已存储,跳过模型提取,只重新切分编码
  • nodes_from_persist:向量已存储,直接加载索引,秒级重启

持久化由 mmrag_server/services/storage.py 完成:persist_index()把向量索引序列化到db/目录,persist_documents()把文档存储为docstore.json,索引 ID 与路径等配置都在 mmrag_server/config.py.local。

🎯 第四步:检索与问答——从向量到答案

mmrag_server/services/retriever/mm_retriver.py 的build_mm_rag_pipeline()把索引转成 retriever,再组装RetrieverQueryEngine

  1. 用户提问 → 文本嵌入 + CLIP 文本嵌入,双路检索
  2. 命中的文本节点 + 图像节点按 QA 模板拼进 Prompt
  3. LLM(默认 llama3)基于上下文生成回答
  4. 前端根据note_id展示来源内容卡片

如果想让模型"看着图回答",还可以切换build_mm_query(),用 llava-llama3 视觉理解大模型做多模态问答。

🗺️ 源码阅读路线:10 分钟上手这份多模态检索管线

你想了解的环节去哪里看
管线入口、索引构建与三级缓存mmrag_server/services/nodes.py
图文/视频信息提取 Readermmrag_server/services/readers/
向量索引与文档持久化mmrag_server/services/storage.py
检索器与问答引擎组装mmrag_server/services/retriever/mm_retriver.py
CLIP / BGE 远程编码封装mmrag_server/services/llm/remote_embedding.py
模型服务(OCR、CLIP、Whisper)mm_server/

一句话总结:BGE 负责"读懂文字",CLIP 负责"让文字和图片说同一种向量语言",MultiModalVectorStoreIndex 把两路向量收进同一个索引——这正是 QMedia 多模态 RAG 能让一句话同时搜到图文与短视频素材的核心秘密。

【免费下载链接】QmediaAn open-source AI content search engine designed specifically for content creators. Supports extraction of text, images, and short videos. Allows full local deployment (web app, RAG server, LLM server). Supports multi-modal RAG content Q&A.项目地址: https://gitcode.com/gh_mirrors/qm/Qmedia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 15:36:00

彻底卸载 Visual Studio 2015,清空残留文件

彻底卸载 Visual Studio 2015,清空残留文件 【免费下载链接】VisualStudioUninstaller Visual Studio Uninstallation sometimes can be unreliable and often leave out a lot of unwanted artifacts. Visual Studio Uninstaller is designed to thoroughly and re…

作者头像 李华
网站建设 2026/8/22 15:35:14

用QClaw打造个人影评小助理:我花半小时做了个新春热榜电影网页

从“看电影不知道选哪部”到“拥有专属影评助手”,我只用了30分钟QClaw电影达人福音,玩出花的懒人攻略。📖 前言过年那段时间,电影院里扎堆上了好几部大片,朋友群里每天都是“《热辣滚烫》好看吗?”“《飞驰…

作者头像 李华