为什么 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
QMedia是一个专为内容创作者打造的开源 AI 内容搜索引擎,支持图文、短视频内容的信息提取与多模态 RAG 问答。它通过 OCR 识别图片文字、Whisper 转写视频语音、大模型生成视频摘要,把散落在图片与短视频里的信息变成可检索、可问答的向量知识库,还能全本地部署,让私有内容问答更智能、更安全。
为什么 QMedia 的多模态 RAG 问答更聪明?
传统 RAG 问答只能检索纯文本,而内容创作者的素材大多是图片、图文笔记和短视频——信息藏在图片文字里、藏在视频口播中,普通搜索引擎根本"看不见"。
QMedia 的做法是先把多模态内容"翻译"成结构化文本,再建立向量索引,让大模型基于这些上下文作答。它更聪明的三个关键点:
| 聪明点 | 说明 |
|---|---|
| 🖼️ 图文双通道检索 | 文本向量(BGE)+ 图像向量(CLIP)并行召回,搜内容也能搜画面 |
| 🎬 视频内容深度解析 | Faster Whisper 转写口播文案,再用 LLM 生成视频摘要 |
| 📇 答案可溯源 | 问答结果以"内容卡片"展示来源,拆解每条图文/短视频的信息 |
下面按"内容解析 → 向量检索 → 本地上手"的顺序拆解它的实现逻辑。
内容理解先行:图文短视频的 4 条解析通道
QMedia 的核心思路是:问答质量取决于内容解析质量。启动服务时,mmrag_server会读取assets/medias中的图片/视频,调用mm_server的模型服务逐条解析,核心代码见 nodes.py。
它内置了 4 条 Reader 解析管道:
- 图片基础信息(
ImageReader):读取图片元数据; - 图片 OCR 文字识别(
ImageOcrReader):调用本地 OCR 模型,把图片里的文字全部"读"出来,见 image_ocr.py; - 短视频转写与摘要(
AudioTranscriptionReader):先用 moviepy 从视频中提取音频,调mm_server的/api/audio_transcription接口转写文案,再让 LLM 生成视频摘要,见 video.py; - 笔记文本信息(
NoteInfoReader):提取图文笔记的标题、正文等文本。
解析完成后,文档按句子切分(SentenceSplitter),构建为多模态向量索引MultiModalVectorStoreIndex,并持久化到本地db,下次启动无需重复解析。
💡 这套解析管道全部走本地模型 API,视频转写、OCR、编码互不干扰,模型服务单独部署在 mm_server/api/ 下,方便按需替换。
双通道向量检索:文本和图片一起找
检索环节是"聪明"的另一半。mm_retriver.py 中的 RAG 管道同时配置了两个召回参数:
similarity_top_k:文本向量召回条数(BGE 文本编码);image_similarity_top_k:图像向量召回条数(CLIP 图像编码,将图片编码到与文本同空间)。
也就是说,你用"美食教程"这样的文字提问,系统既会匹配文本语义,也会通过 CLIP 匹配"看起来像美食"的图片内容,双路召回后按笔记 ID 去重,最终交给 LLM(如 llava-llama3 视觉模型)综合作答。
相关的模型能力都以 REST API 形式暴露,在mm_server的 API 文档页可以看到:
快速上手:3 步本地启动多模态 RAG 问答
QMedia 由三个独立服务组成,可按需组合部署:
| 服务 | 职责 | 端口 |
|---|---|---|
mm_server | 多模态模型服务(OCR、CLIP 编码、Whisper 转写、LLM) | 50110 |
mmrag_server | 内容卡片展示 + RAG 检索问答 | 8001 |
qmedia_web | 网页前端(Next.js + TailwindCSS) | — |
第一步:启动模型服务
cd mm_server source activate qllm python main.py第二步:启动 RAG 问答服务
cd mmrag_server source activate qmedia python main.py第三步:启动网页
cd qmedia_web pnpm dev启动后mmrag_server会自动读取assets/medias与assets/mm_pseudo_data.json的示例数据,调用mm_server提取信息并写入db。打开网页输入问题(如 "How to Vlog"),即可获得答案和对应的内容卡片来源。
多模态问答相关的三个核心接口:/embedding-mm(构建检索管道)、/mm-rag-search(双通道召回内容卡片)、/mm-rag-query(LLM 合成答案),实现见 mm_rag_search.py:
换成自己的内容:3 步搭建私有内容搜索引擎
把示例数据换成你自己的图文/短视频,就能得到一个私有化多模态 RAG 问答库:
- 把自有图片/视频放入
assets/medias/; - 把对应的内容卡片数据写入
assets/mm_pseudo_data.json(字段参考 json_data.py); - 删除历史
db文件后重启服务,模型会自动重新提取信息并入库。
配置项都在 mmrag_server/config.py.local 中,重点几个:
use_video_service:是否启用视频转写(默认关闭,开启后短视频也能被问答);model_name/mm_model_name:LLM 与视觉模型名称;clip_model_name/embedding_model_name:图像、文本编码模型。
常见问题速答
问:不想要网页,只想用 API 做问答?可以只部署mm_server+mmrag_server,直接调用/mm-rag-search和/mm-rag-query接口,实现纯 Python 环境的多模态 RAG 检索问答。
问:视频解析为什么默认关闭?视频转写需要 Whisper 模型,CPU 上也能跑但耗时较长。配置use_video_service=True并确认mm_server已部署后即可开启。
问:模型资源不够怎么办?mm_server支持模型生命周期管理(keep_alive配置),空闲自动释放显存;8B 本地小模型即可体验完整流程,服务器充足时可换 70B 提升回答质量,详见 mm_server/README.zh-CN.md。
小结:QMedia 的"聪明"来自三层设计——多通道内容解析让图片文字和视频口播全部变成可检索文本,图文双向量召回让检索既懂语义又懂画面,内容卡片溯源让每个答案都有据可查。全链路可本地部署,是内容创作者搭建私有 AI 内容搜索引擎的完整方案。
【免费下载链接】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),仅供参考