当我们问 ChatGPT “这张图说明了什么?”它默认只能“看字不看图”。而现实世界中的文档、幻灯片、说明书,恰恰充满了图文混排的结构:流程图、表格截图、设计图、公式推导……如果 AI 无法“理解图像”,就无法真正参与到知识工作中。
这正是 图文问答系统 的用武之地:结合图像理解与语言理解,让 AI 对图文并茂的内容也能答得上来。
在这篇文章里,我们将基于 多模态 RAG(Retrieval-Augmented Generation) 架构,带你从零构建一个支持图像+文本理解的问答系统,并解决三个核心问题:
-
图像如何转化为“可检索”的知识?
-
向量检索如何支持图文混合内容?
-
大模型如何基于图文上下文进行准确回答?
🧠 系统架构:多模态 RAG = 图像编码 + 向量检索 + 大模型生成
我们采用经典的 RAG 框架,但扩展为多模态场景:
graph TD
UserQuery[用户提问(含文本)]
QAEngine[图文问答引擎]
ImageEncoder[图像编码器(CLIP/VL-Adapter)]
TextEncoder[文本编码器(BGE/ColBERT)]
VectorDB[向量数据库(FAISS/Qdrant)]
Retriever[多模态检索器]
RAGModel[大语言模型(LLM)]
Answer[生成回答]
UserQuery --> QAEngine
QAEngine --> ImageEncoder
QAEngine --> TextEncoder
ImageEncoder --> VectorDB
TextEncoder --> VectorDB
QAEngine --> Retriever
Retriever --> RAGModel
RAGModel --> Answer
简要流程如下:
-
将图像处理为向量,与文本向量一起存入向量库;
-
用户提问时,结合文本信息检索最相关的图像与文字;
-
把图文上下文拼接后交给 LLM 回答,生成最终答案。
🖼️ 图像编码:让图变得“可理解”
图像不同于文本,它没有自然语言结构。我们需借助图像编码器将其转化为语义向量。推荐几种方案:
| 编码器 | 特点 | 是否开源 |
|---|---|---|
| CLIP | OpenAI 提出,强大的图文对齐能力 | ✅ |
| BLIP-2 | 支持图像问答,适合复杂场景 | ✅ |
| MiniGPT-4 | 类似 ChatGPT for 图像 | ✅ |
| GIT/GRIT | 微软开源视觉语言模型 | ✅ |
例如使用 CLIP 处理图像:
from PIL import Image
import torch
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
image = Image.open("diagram.png")
inputs = processor(images=image, return_tensors="pt")
outputs = model.get_image_features(**inputs)
image_vector = outputs / outputs.norm(p=2, dim=-1, keepdim=True)
我们得到 image_vector 向量,即为图像的语义表达。
🔍 向量检索:如何让图片与文字都可查?
多模态向量库的关键是支持混合检索:既能查图,也能查文。推荐使用以下组件:
-
向量数据库:FAISS(轻量)、Qdrant(带 REST API)、Weaviate(支持 multimodal schema)
-
检索策略:
-
构建文本索引 + 图像索引
-
检索时取 top-N 最相似内容
-
支持
文本提问 → 图像检索的反向关联
-
我们将所有图像和文字一起编码,构造成如下向量数据格式:
[
{
"id": "img_001",
"type": "image",
"embedding": [0.23, -0.11, ...],
"meta": {
"filename": "流程图1.png",
"caption": "这是审批流程图"
}
},
{
"id": "text_002",
"type": "text",
"embedding": [0.11, 0.89, ...],
"meta": {
"content": "审批流程包括部门填写、经理审批和归档"
}
}
]
用户提问“这个流程是如何推进的?”时,系统会取其 query 向量,在图文混合的向量库中检索出最相关的几个内容段,包括图像。
🧾 Prompt 拼接:让 LLM 理解图像上下文
从检索阶段拿到的图文内容,需要结构化地注入到 LLM 的上下文中,一般采用如下 Prompt 模板:
你是一个图文分析助手。下面是用户提问及相关资料:
用户问题:
“审批流程是怎样的?”
相关图文资料:
1. [图片] 流程图1.png:展示了从部门申请到归档的完整流程。
2. [文本] 审批流程包括:填写申请 → 部门主管审批 → 财务核对 → 人事归档。
请结合这些内容详细回答用户问题。
LLM 便可以据此生成准确、上下文感知的回答。
✅ 整体实践要点
-
图像与文本统一向量化:保持同一语义空间,确保检索结果可混合。
-
构建多模态检索器:可以使用
CLIP + BGE的方式分别处理图与文,最后统一相似度排序。 -
融合上下文构建 Prompt:清晰标注图片/文字来源,降低 LLM 理解成本。
-
支持引用与上下文链路:可以结合 LangChain 让引用图像内容更清晰。
-
部署优化:前端展示时可采用 Vue/React 配合 HTML image tag 显示关联图像。
🚀 应用场景:不仅能看图,还能查表、读文档
这样的图文问答系统在企业和科研中有非常广泛的应用前景:
-
🏢 企业知识库:图文手册、PPT、组织架构图等
-
📄 合同解读:配合盖章扫描件、红头文件
-
📊 数据报表分析:图片中表格识别、提问数据趋势
-
🧑🏫 教学场景:图文题目、公式推导、流程图讲解
未来随着多模态大模型如 GPT-4o、Gemini、Claude 的不断开放,我们甚至可以实现 端到端直接对图提问,但在企业内部系统中,RAG 架构依然是最现实、最可控的选择。
🧰 开源项目推荐
-
LangChain Image Retriever:图像检索集成模块
-
MiniGPT-4:开源多模态对话系统
-
Haystack + MultiModal Retriever:支持图文文档检索的框架
🧠 总结
图文问答系统的本质,是让大模型“看得懂图”,而 RAG 架构提供了最灵活、工程可落地的解法。通过图像编码、向量检索与 Prompt 优化,我们就能构建出一个真正能读图、能答问的智能助手。
下一步,你可以:
-
用几张截图、说明图试试是否能被系统准确检索
-
接入自己的企业图文文档,构建内部知识图谱
-
拓展多语言、多模态输入,迈向 AI 智能体
让 AI 理解图像,就是让它理解现实世界。
1668

被折叠的 条评论
为什么被折叠?



