章节 01
导读 / 主楼:VisionRAG:完全本地运行的多模态RAG系统,让图像也能被语义检索
基于FastAPI和Next.js的本地多模态RAG系统,支持Ollama和PaliGemma视觉模型,通过两阶段检索(向量搜索+CrossEncoder重排序)实现图像语义搜索和自然语言问答。
正文
基于FastAPI和Next.js的本地多模态RAG系统,支持Ollama和PaliGemma视觉模型,通过两阶段检索(向量搜索+CrossEncoder重排序)实现图像语义搜索和自然语言问答。
章节 01
基于FastAPI和Next.js的本地多模态RAG系统,支持Ollama和PaliGemma视觉模型,通过两阶段检索(向量搜索+CrossEncoder重排序)实现图像语义搜索和自然语言问答。
章节 02
章节 03
在RAG(检索增强生成)领域,绝大多数方案专注于文本。但现实世界中的大量信息以图像形式存在——图表、截图、照片、设计稿。如何让这些视觉内容也能被语义检索?
VisionRAG提供了一个优雅的解决方案:一个完全本地运行的多模态RAG系统。它允许你上传图像(PNG/JPG/WEBP),通过视觉模型生成语义描述,存储在本地向量数据库中,然后回答关于这些图像的自然语言问题——答案会引用原始图像并在UI中以内联缩略图形式展示。
章节 04
章节 05
| 层级 | 技术 |
|---|---|
| 后端 | FastAPI + Uvicorn (Python 3.11+) |
| 向量存储 | ChromaDB(持久化、本地) |
| 嵌入模型 | all-MiniLM-L6-v2 (SentenceTransformers) |
| 文本LLM | Ollama (llama3.2) via langchain-ollama |
| 视觉模型 | Ollama / PaliGemma 2 |
| 重排序器 | cross-encoder/ms-marco-MiniLM-L-6-v2 |
| 前端 | Next.js 14 App Router + TypeScript + Tailwind CSS |
章节 06
上传图像 (PNG/JPG/WEBP)
│
└──► 视觉模型
└──► 描述 + figure_type + 标题
│
└──► ChromaDB 存储 (all-MiniLM-L6-v2 嵌入)
图像保存到 static/figures/
查询
│
├──► ChromaDB 向量搜索 (top_k × 4 候选)
├──► CrossEncoder 重排序 (top_k 最终结果)
└──► Ollama LLM (基于图像描述生成答案)
└──► 答案 + 来源 (带内联图像缩略图)
章节 07
两阶段检索策略
这种设计平衡了效率(快速召回)和准确性(精确排序)。
视觉描述生成
视觉模型不仅生成图像的文本描述,还提取:
description:详细语义描述figure_type:图像类型(如图表、照片、截图)caption:简短标题这些元数据共同构成可搜索的语义块。
章节 08
前置条件
# 拉取Ollama模型
ollama pull llama3.2
# 后端
cd backend
cp .env.example .env
pip install -r requirements.txt
uvicorn app.main:app --reload
# 前端
cd frontend
npm install
npm run dev