# 多模态RAG系统：融合视觉与文本的智能检索增强生成

> 一个创新的多模态RAG系统，通过CLIP和LLaVA风格模型实现对PDF文档中图像和文本的统一检索与生成，解决了传统RAG丢失图表信息的痛点。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-05-05T01:25:04.000Z
- 最近活动: 2026-05-05T02:33:13.361Z
- 热度: 156.9
- 关键词: 多模态RAG, CLIP, LLaVA, 视觉语言模型, 文档检索, FAISS, 跨模态检索
- 页面链接: https://www.zingnex.cn/forum/thread/rag-1d28343c
- Canonical: https://www.zingnex.cn/forum/thread/rag-1d28343c
- Markdown 来源: ingested_event

---

# 多模态RAG系统：融合视觉与文本的智能检索增强生成

## 项目概述与核心问题

在信息检索和知识管理领域，检索增强生成（RAG）技术已经成为大语言模型应用的重要范式。然而，传统的RAG系统在处理PDF文档时存在一个显著的局限性：它们通常将PDF视为纯文本块进行处理，这导致文档中的图表、表格截图和架构图等视觉元素的信息完全丢失——而这些视觉内容往往正是答案真正所在之处。

multimodal-rag-vision-text项目正是为解决这一问题而设计。它构建了一个多模态检索增强生成系统，将图像视为与文本同等重要的第一等公民，实现了对混合PDF文档（研究论文、幻灯片、扫描报告）和零散截图的统一处理，最终生成既引用文本段落又标注所依赖图表的 grounded 答案。

## 系统架构与工作流程

系统的核心架构采用多路召回融合策略，整体流程如下：

```
PDF / 图像文件夹
        |
        v
+---------------+   文本分块   +---------------+
|     摄取      | ----------> |  sentence-transformers |--+
| pypdf + pymupdf |           |  (文本索引)   |  |
+---------------+   图像裁剪   +---------------+  |   FAISS 多模态索引
        |        \------------>                 |  |
        v                      +---------------+  |
                               |    CLIP       |--+
                               | image+txt     |      +
                               +---------------+      |
                                      |               |
                                      v               v
                              +---------------+   +---------------+
                              |   检索        |   |  文本+可选图像查询 |
                              |  (RRF 融合)   |<--+
                              +---------------+       |
                                      |               |
                                      v               |
                              +---------------+       |
                              |   LLaVA       |<------+
                              |   (VQA)       |
                              +---------------+
                                      |
                                      v
                              grounded 答案 + 引用
```

### 三种检索模式

系统通过FAISS向量存储（每种模态一个索引）实现三种检索模式的融合：

**1. 文本-文本检索**：使用`sentence-transformers/all-MiniLM-L6-v2`模型对文本块进行编码和检索。这是传统RAG的标准做法，适用于纯文本内容的查询。

**2. 图像-文本检索**：利用CLIP的文本编码器对图像进行索引，支持基于文本描述检索相关图像。这种跨模态检索能力使得用户可以用自然语言描述来查找文档中的相关图表。

**3. 文本-图像检索**：当用户粘贴图像并附带问题时，系统能够检索相关的文本内容作为补充。这种双向跨模态检索确保了无论查询以何种形式呈现，都能获得全面的相关信息。

### 生成阶段

检索完成后，采用LLaVA风格的VLM（`llava-hf/llava-1.5-7b-hf`）生成最终答案。模型会查看融合后的top-k文本段落和最多四张检索到的图像，生成既准确又具有可解释性的 grounded 回答，并标注信息来源。

## 技术栈详解

项目采用现代Python生态系统的最佳实践构建：

**基础框架**：
- Python 3.12 + PyTorch 2.6 + Transformers 4.50

**多模态模型**：
- Open CLIP 2.30：用于图像-文本对齐和跨模态嵌入
- sentence-transformers 3.3：用于文本语义编码

**向量存储与检索**：
- FAISS：高效的相似性搜索库，支持多模态索引分离存储

**Web服务**：
- FastAPI 0.116：高性能异步API网关
- Streamlit 1.40：交互式聊天界面

**文档处理**：
- pypdf + pymupdf：PDF解析和图像提取

**辅助工具**：
- Pydantic v2：请求验证和数据建模
- LangChain 0.3：可选的查询重写器

## 快速开始指南

系统的部署和使用非常简洁：

```bash
# 安装依赖
pip install -r requirements.txt

# 从混合PDF/图像文件夹构建索引
python scripts/build_index.py --src data/raw --out data/index

# 启动API服务
python serve.py  # -> http://localhost:8000

# 在另一个终端启动Streamlit聊天界面
streamlit run streamlit_app.py
```

## API端点设计

系统提供四个核心端点：

- `POST /upload`：多文件上传，构建/刷新索引
- `POST /search`：纯检索模式，不生成答案
- `POST /ask`：完整RAG流程，检索+生成
- `GET /health`：服务健康检查

## 评估体系

项目在`evals/datasets/`下维护了三组评估数据集：

**1. slidedecks.jsonl**：投资者路演风格的幻灯片检索
- 测试系统对商业演示文档的理解能力

**2. papers_with_figures.jsonl**：带图表引用的学术论文
- 验证系统能否正确关联文本与图表

**3. screenshots_ui.jsonl**：产品截图/UI流程
- 评估对界面设计和用户流程的理解

评估指标包括recall@5、recall@10和MRR（平均倒数排名），全面衡量检索质量。

## 容器化部署

项目支持Docker Compose一键部署：

```bash
docker compose up --build
```

这使得系统可以轻松部署到各种云平台和本地服务器环境。

## 技术意义与应用前景

multimodal-rag-vision-text项目代表了RAG技术的重要演进方向。它突破了传统RAG仅处理文本的局限，实现了真正的多模态知识检索。

**核心价值**：
- 保留了传统RAG的可解释性和可控性
- 扩展了RAG的应用场景到富文档环境
- 通过跨模态检索实现了更全面的信息覆盖

**适用场景**：
- 学术研究：处理包含大量图表的研究论文
- 商业分析：解析财务报表和市场研究报告
- 技术文档：理解包含架构图和流程图的技术规范
- 医疗诊断：综合分析医学影像报告和临床记录

## 开源与许可

项目采用MIT许可证开源，鼓励社区贡献和二次开发。代码结构清晰，模块化程度高，便于开发者根据具体需求进行定制和扩展。
