在前面的学习中,我们了解到,多模态 RAG 相比传统 RAG 的优势在于:它不仅能够处理纯文本,还可以解析包含图片等非文本元素的复杂文档(如 PDF),实现“文本 + 图片”的联合理解与问答,从而突破传统 RAG 仅支持文本的局限。本项目的目标是构建一个多模态RAG 系统。 (这个小实战暂时不涉及到一些优化流程,比如问题改写、元数据过滤、重排序、混合检索这些,后面有个RAG的项目会综合利用这些技术来做优化) 核心技术组件: - 后端框架:Spring AI - PDF 解析:Apache PDFBox - 对象存储:MinIO - 向量数据库:PGVector 并事先准备一份样例文档,各位可以根据自己公司的内部知识文档来自由选择即可。
实现流程
MinIO接入
上面这些组件,除了minio我们都安装过了,minio的安装和接入参考:
✅MinIO接入
MinIO 是一个高性能、开源的对象存储系统,兼容 Amazon S3 云存储服务接口。它专为大规模 AI/ML、数据湖、备份和归档等场景设计,具有轻量、易部署、高可扩展性和强一致性等特点。 可以采用minIO搭建一个对象存储系统,也可以自 LLMentor
多模态文档处理
✅多模态文档处理
前面我们分别介绍了如何从PDF中读取图片,以及如何把图片转成文字描述。但是还没把他们串起来。我们的PdfMultimodalProcessor的图片描述还是我们mock的"吧啦啦啦"呢。 接着,改写PdfMultimodalProcesso LLMentor
检索增强生成
✅检索增强生成
我们使用Spring AI中的modular RAG的方式,来实现检索增强部分。即使用RetrievalAugmentationAdvisor来实现。 因为我们不涉及到更多的优化内容,所以,只需要定制documentRetriever和qu LLMentor
效果演示
先通过构建索引接口,生成语义文本块和关键词文本块,存入PGvector
这样我们就构建好了索引,下面我们来调用检索接口来看下问答的效果如何:
最终输出:
## 紧急情况处理指南(根据《汽车用户手册(2023年版)》)
当车辆在行驶或启动过程中遇到突发状况时,应冷静应对并按照以下流程操作:
## 4.1 启动故障排查
### 钥匙拧至 ON 档无反应:
- **检查蓄电池接线柱**是否松动或氧化。
- 若有氧化现象,可用热水冲洗清除氧化物,然后重新紧固接线柱。
### 启动时起动机异响:
- **立即停止启动操作**。
- 检查智能钥匙是否完全插入感应区域或正确放置。
- 若问题持续存在,请**联系售后进行检修**。
> 
> *图示:启动故障应急处理流程*
该图详细展示了两种常见启动问题的处理路径:
1. **旋钮无反应 + 未检测到钥匙**:
- 尝试更换钥匙电池(型号 CR2032)。
- 或将钥匙贴近扶手箱内的应急感应区重试。
- 若仍失败,需联系售后检查天线模块。
2. **启动后立即熄火**:
- 先排查燃油量是否充足,必要时补充燃油。
- 若油量正常,则检查进气系统是否堵塞。
- **禁止连续三次尝试启动**,避免发动机损坏,应及时联系售后服务。
---
## 4.2 轮胎更换流程(紧急换胎步骤)
若行车中发生爆胎或轮胎漏气,可按如下步骤安全更换备胎:
1. **停车与警示**:
- 将车辆停放在平坦、坚固的路面上。
- 打开双闪警示灯。
- 在车后 **50-150米处** 设置三角警示牌(高速路段建议放置150米外)。
2. **准备工具与拆卸轮胎**:
- 使用千斤顶将车身顶起,直至目标轮胎离地 **2-3厘米**。
- 按对角顺序拆卸轮毂螺丝(注意保存好)。
3. 安装备胎或补胎工具,并按规定力矩拧紧螺丝。
> ⚠️ 建议每行驶1万公里对轮胎进行交叉换位,以延长使用寿命;胎纹深度低于 **1.6毫米** 时必须更换。
---
## 其他应急情况处理
### 电子怀挡卡滞无法换挡:
- 打开挡把旁的**应急解锁孔**。
- 使用一字螺丝刀向下按压解锁机构,解除P挡锁定。
- 可切换至N挡后进行拖车救援。
### 驾驶辅助系统失效:
- 系统会触发**声光报警**提示。
- 驾驶员应立即**接管方向盘**。
- 关闭ADAS功能,并尽快前往服务站检修。
---
如遇上述任何情况且无法自行解决,请及时拨打官方售后服务热线寻求专业支持。
使用Markdown渲染一下上面的结果:
我们可以看到系统不仅能够返回文本内容,还能高效地检索并返回相关的图片。更关键的是,它不只是匹配图片,而是理解了图像中的具体内容和潜在含义,并将这些语义信息纳入到检索范围中,从而实现对多模态的深度理解和精确召回。