# 使用工作流批量构建图文 RAG 数据

MOI 提供面向 RAG 数据准备的工作流模板，可以在一次运行中批量完成文档读取、版面解析、文本分块、向量化、文本索引和图片索引。相同的处理规则可以重复用于一批文件，适合持续建设包含正文、表格和图片的知识库。

本教程使用 3 份美国地质调查局（USGS）发布的 Landsat 图文报告作为示例，分别介绍 Landsat 在阿拉斯加、加利福尼亚和佛罗里达的应用。每份 PDF 都包含正文、地图、卫星影像或专题图，适合同时验证文字解析、图片描述和图片索引。您将通过 **文档知识库准备（含图片索引）** 模板批量构建图文 RAG 数据，并验证跨文档问答和按图检索。整个操作预计约 30 分钟，实际处理时间取决于文件数量、页数和模型速度。

## 你将完成什么

- 将多份图文 PDF 批量上传到 Catalog；
- 从系统模板创建一条图文 RAG 数据准备工作流；
- 配置文档解析、文本索引和图片索引；
- 一次运行工作流，处理全部示例文件；
- 在知识库中验证跨文档问答和图表检索结果。

## 开始前准备

- 准备一个 MOI 账号，可前往 [MOI 云端登录/注册](https://moi.matrixorigin.cn/)；
- 确认当前工作区可以正常创建并运行工作流；
- 下载并解压 [图文 RAG 教程样例包](../assets/downloads/moi-multimodal-rag-demo.zip)。

样例包包含以下公开资料：

| 文件 | 图文内容 | 官方来源 |
| --- | --- | --- |
| `USGS.Alaska-and-Landsat.pdf` | 正文、近地表多年冻土分布图、洪水卫星影像和野火假彩色影像 | [Alaska and Landsat](https://doi.org/10.3133/fs20203068) |
| `USGS.California-and-Landsat.pdf` | 正文、山火假彩色影像和植被生态分区图 | [California and Landsat](https://doi.org/10.3133/fs20213034) |
| `USGS.Florida-and-Landsat.pdf` | 正文、火灾年份分布图、红树林照片和迈阿密海滩卫星影像 | [Florida and Landsat](https://doi.org/10.3133/fs20223019) |

这些文件仅用于方便教程操作。实际使用时，可以换成自己的 PDF、Word、PPT、网页、表格或图片资料。

## 操作步骤

### 1. 将示例文件批量上传到 Catalog

1. 登录 MOI，在左侧导航的 **数据连接** 中选择 **导入任务**。
2. 点击 **新建导入任务**，选择 **非结构化**。
3. 在数据来源中选择 **本地上传**，一次选择解压后的 `USGS.Alaska-and-Landsat.pdf`、`USGS.California-and-Landsat.pdf` 和 `USGS.Florida-and-Landsat.pdf`。
4. 在目标位置中选择当前工作区的 Catalog，并将文件保存到以下位置：

   ```text
   <当前工作区 Catalog> / tutorial_data / multimodal_rag / source
   ```

   其中，`tutorial_data` 是目录，`multimodal_rag` 是数据库，`source` 是数据卷。如果尚未创建，可以在选择目标位置时依次新建。

5. 保持其余配置为默认值，并确认导入文件列表中已经显示 3 份 PDF。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-import-files.png
   :alt: 配置本地上传并一次选择三份 USGS Landsat 图文 PDF
   ```

6. 点击 **创建并开始导入**。
7. 等待导入任务状态变为 **已完成**，并确认 3 份 PDF 均可在以下位置找到：

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-import-completed.png
   :alt: 三份 USGS Landsat 图文 PDF 的导入任务状态已变为已完成
   ```

   ```text
   资源中心 > Catalog > tutorial_data > multimodal_rag > source
   ```

### 2. 创建图文 RAG 工作流

1. 在左侧导航的 **数据处理** 中选择 **工作流**。
2. 点击 **创建工作流**。
3. 找到 **文档知识库准备（含图片索引）** 模板，点击 **使用模板**。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-select-template.png
   :alt: 创建工作流时选择文档知识库准备（含图片索引）模板
   ```

4. 将工作流名称填写为 `landsat_visual_rag`。

该模板已经包含读取文件、解析文档、切分文本、建立文本索引、建立图片索引、保存解析结果和登记数据血缘等节点，无需逐个添加节点。

### 3. 配置工作流

#### 选择批量源文件

1. 打开工作流的运行配置，在左侧选择 **Catalog 数据源**。
2. 在 **源文件** 中选择数据卷 `tutorial_data / multimodal_rag / source`。
3. 将 **文件范围**设置为 **按文件**，选中 `USGS.Alaska-and-Landsat.pdf`、`USGS.California-and-Landsat.pdf` 和 `USGS.Florida-and-Landsat.pdf`。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-select-source.png
   :alt: 从 Catalog 的 source 数据卷中选择三份图文 PDF
   ```

一次选择全部文件后，工作流会在同一次运行中批量处理它们。

#### 创建知识库

1. 在左侧选择 **构建知识库索引**。
2. 在 **知识库**中输入 `landsat_environment_knowledge`，点击 **创建知识库**。
3. 保持默认的文本 Embedding 模型，开启 **启用图片索引**，图片 Embedding 模型保持默认值。
4. 三级索引及其余参数保持默认值。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-create-knowledge-base.png
   :alt: 创建图文 RAG 知识库并开启图片索引
   ```

#### 保存到 Catalog

1. 在左侧选择 **保存到 Catalog**。
2. 将 **输出位置**设置为 `tutorial_data / multimodal_rag / source`。
3. 点击 **确认**，保存本次运行配置。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-save-catalog.png
   :alt: 将工作流处理结果保存到 Catalog 的 source 数据卷
   ```

**文档解析**、**按长度切分文档**、**工程图纸解析**、**构建图纸知识库索引**和**写出文档文件**等其余步骤均保持模板默认配置，无需逐项修改。

### 4. 保存并批量运行工作流

1. 返回工作流画布，点击 **保存并启用**。
2. 在工作流页面点击 **运行**。
3. 确认源位置和输出位置均为 `source`，并确认已选择 3 份 PDF。
4. 开始运行后，在工作流页面右侧找到 **作业** 按钮并点击。
5. 在作业列表中找到本次运行记录，等待 3 个文件对应的作业状态均变为 **已完成**。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-run-completed.png
   :alt: 作业列表中 landsat_visual_rag 的运行状态显示为已完成
   ```

本次只需要运行一次。工作流会按照同一套解析和索引规则处理全部输入文件。

### 5. 在知识库中开始对话

1. 在左侧导航中选择 **知识库**，打开 `landsat_environment_knowledge`。

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-knowledge-base-chat.png
   :alt: 在知识库列表中选择 landsat_environment_knowledge 并点击对话
   ```

2. 点击知识库卡片上的 **对话**，发送一个跨文档问题：

   ```text
   阿拉斯加、加利福尼亚和佛罗里达分别使用 Landsat 监测了哪些环境问题？请按地区归纳。
   ```

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-answer-cross-document.png
   :alt: 知识库对跨文档 Landsat 环境问题的回答及参考来源
   ```

3. 点击回答中的来源，查看引用的资料和原文位置。
4. 再发送一个与图表有关的问题：

   ```text
   请找出加利福尼亚 August Complex 山火的假彩色卫星影像，并说明图中的黄色和深棕色分别表示什么。
   ```

   ```{image} ../assets/images/tutorials/workflow-text-image-rag-answer-image.png
   :alt: 知识库对 Landsat 假彩色卫星影像问题的回答
   ```

5. 点击回答中的页面或图片来源，查看图注和来源信息。

## 教程完成

您已经使用系统模板完成了一次批量图文 RAG 数据构建：3 份公开资料经过同一条工作流完成了解析、分块、文本索引和图片索引，解析结果保存到 Catalog，并可在知识库中用于跨文档问答和图表检索。
