多模态检索
ENGINEERING PIPELINE & ROADMAP

工程链路与演进方案

面向 ima 知识库 Agent 升级:双轨无条件并发 · 绕过纯文本 Rerank · 组装层同构映射 · 全模态统一演进

Agent 零感知透明接入双轨独立无条件并发绕过纯文本 RerankPage-to-Chunk 反查映射会话短 ID 引用闭环≤ 18k Token 约束检索 P95 < 350ms

检索时延 (1万页)

1w页已编码底库
~1.1 ms
单 Query 32×64 MaxSim,并发零拖累

复杂图纸召回提升

工业 v3 题集 Hit@1
+26.0%
从线上 28.0% 提升至 54.0%

百万页索引存储

d64 K32 压缩档
3.81 GiB
与单向量基线 WeMM-2B 同级

客户端改造成本

复用 img 标签机制
0 行改动
自动激活原图卡片与页码跳转
四大工程设计原则
原则一

对 Agent 完全透明

零决策负担。 多模态作为 knowledge_search 底层并发分支,不新增独立工具。避免让 LLM 做图文前置意图分类(消除单点故障),无论是单轮非思考模式还是多轮思考模式,均在 1 轮内获得完整图文证据。

原则二

双轨独立直通组装层

绕过纯文本 Rerank。 纯文本 Cross-Encoder 只看文字字符串,会把缺乏 OCR 文字的正确图纸当作“低相关”过滤。Evie 基于 32×64 MaxSim 细粒度全交叉匹配,分数即为精排置信度,卡阈值后直通组装层。

原则三

满足轮次与延迟预算

1 轮收敛,≤5s 超时。 ima 非思考模式代码硬约束 max_iterations: 3;工具超时上限 5 秒。假设后台已有 1 万页预编码底库(32 万个 64 维向量常驻 GPU,仅占约 38MB 显存),单 Query 进行 32×64 MaxSim 细粒度全量打分仅需约 1.1 ms,整体耗时完全由慢轨决定(P95 < 350ms),轻松满足 5s 超时约束。

原则四

短 ID 与图片引用闭环

图文同构交付。 命中的整页图片经底库字典包装为包含 <img> 的标准分片,分配 [pdf_X] 短 ID。Agent 正常引用,ima 客户端检测到图片标自动浮起高清卡片并支持跳转对应页。

端到端双轨架构拓扑
flowchart LR
    %% 样式定义
    classDef client fill:#f0f9ff,stroke:#0284c7,stroke-width:1.5px,color:#0369a1;
    classDef base fill:#f8fafc,stroke:#64748b,stroke-width:1.5px,color:#0f172a;
    classDef text fill:#fff7ed,stroke:#ea580c,stroke-width:1.5px,color:#7c2d12;
    classDef visual fill:#f0fdf4,stroke:#16a34a,stroke-width:1.5px,color:#14532d;
    classDef core fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#581c87;

    %% 阶段 1: 用户交互与 Agent
    User["用户提问
(纯文字 / 带图)"]:::client --> Agent["ima ReAct Agent
(knowledge_search)"]:::base %% 双轨无条件并发 Agent --> T_Rec["【文本轨】粗排召回
(BM25 + 文本向量 200~700 候选)"]:::text T_Rec --> T_Rk["文本 Reranker
(Cross-Encoder 卡阈值)"]:::text T_Rk --> T_Top["文本过线分片
(动态保留)"]:::text Agent --> V_Rt{"输入有图?"}:::visual V_Rt -- 纯文本 --> Evie["【视觉轨】Evie d64 K32
(1w页预编码~1.1ms)"]:::visual V_Rt -- 带图附件 --> Qwen["【视觉轨】Qwen3-VL-2B
(Fused 交叉注意力)"]:::visual Evie & Qwen --> V_Gt{"分 ≥ 阈值?"}:::visual V_Gt -- 达标 --> V_Top["视觉过线原页
(直通绕过 Rerank)"]:::visual V_Gt -- 未达标 --> V_Mute["静默 (100%退还文本)"]:::visual %% 阶段 3: 组装层并轨 T_Top & V_Top --> CA["【组装层 Context Assembler】
• 双轨动态合并 (直通并轨)
• 反查映射注入 img 原图
• 统一截断 ≤18k token 打短 ID"]:::core %% 阶段 4: 结果生成与客户端图文闭环 CA --> Answer["Agent 生成回答
标注引用 [pdf_1]"]:::client Answer --> FE["ima 客户端闭环
• 浮起高清原图卡片
• 点击跳转阅读器对应页"]:::client
组装层(Context Assembler)四步骤详解
flowchart LR
    %% 样式定义
    classDef inNode fill:#f8fafc,stroke:#64748b,stroke-width:1.5px,color:#0f172a;
    classDef stepNode fill:#faf5ff,stroke:#9333ea,stroke-width:1.5px,color:#581c87;
    classDef dictNode fill:#fefce8,stroke:#ca8a04,stroke-width:1.5px,color:#713f12;
    classDef outNode fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#0369a1;

    %% 输入两路
    V_In["视觉直通过线结果
(页级: doc_id + page_no)"]:::inNode T_In["文本 Rerank 过线切片
(块级: 真实 media_id + text)"]:::inNode %% 步骤 1: 反查映射 V_In --> S1["【步骤 1: 反查映射 Page-to-Chunk】
• 查元数据字典取出该页文本
• 文本末尾嵌入 &lt;img src='...'&gt;
• 转换成与文本轨一致的标准结构"]:::stepNode MapDict[("底库元数据字典
(Page ↔ Chunk 映射)")]:::dictNode -.-> S1 %% 步骤 2: 双轨合并与同页去重 S1 & T_In --> S2["【步骤 2: 动态并轨与去重】
• 视觉过线页面排在前列
• 文本精排切片紧随其后
• 命中同一页时自动去重"]:::stepNode %% 步骤 3: Token 预算截断 S2 --> S3["【步骤 3: Token 预算截断】
• 严格对齐 Doc 2 硬上限
• 从前往后累加至 ≤18k token
• 超限后置切片平滑截断"]:::stepNode %% 步骤 4: 会话短 ID 编码与注册 S3 --> S4["【步骤 4: 会话短 ID 编码与注册】
• 转换为会话短 ID (pdf_1, word_2...)
• 注册映射表 (短 ID ↔ 真实 media_id)"]:::stepNode %% 输出 S4 --> Out["输出标准 Tool Result 给 Agent
(对 Agent 透明,支持引用跳转)"]:::outNode
数据同构协议示例
1. 视觉模型直接产出(页级原始对象 · 无法直接喂给 Agent)
{ "doc_id": "doc_beike_131", "page_no": 32, "visual_score": 17.9295, "image_url": "cos://shennong3-zw/.../131_猫眼蝾螺.png" }
2. 经 Page-to-Chunk 映射后(与文本 Rerank 分片 100% 同构)
{ "media_id": "doc_beike_131", "title": "国家海生贝类图鉴.pdf (第32页)", "content": "【猫眼蝾螺】壳厚呈卵圆形,壳表光滑具黄褐色花纹。壳口圆无齿,螺轴平滑。其最突出特征为石灰质厣极厚重,呈光滑圆球形突起,色泽如猫眼石。 <img src="cos://.../131_猫眼蝾螺.png" />", "file_type": "pdf", "publish_time": "2024-05-12", "upload_time": "2026-06-10" }
技术演进与未来规划
当前架构 · 双模型并行路由

图文分流 · 极简路由落地

根据输入模态执行极简 if/else 路由:输入纯文本 Query 走 Evie 压缩 d64 K32(后台 1 万页已编码底库全量 MaxSim 打分仅约 1.1ms,索引存储 3.81 GiB/百万页);输入带图 Query 走 Qwen3-VL-2B (Fused)。绕过传统纯文本 Reranker,组装层注入 <img> 原图标签,以极低侵入性实现企业知识库多模态图文检索高质量落地。

未来规划 · 全模态统一收敛

为 EVIE 增加视觉输入,统一为单一模型

核心演进方向:未来为 EVIE 补充视觉输入能力(支持 Query 图像输入与图文混合编码)。将图搜图、图文搜图与文档检索从当前的“两个模型并行(Qwen3-VL-2B + EVIE)”彻底统一收敛至 EVIE 单一多模态检索模型,消除维护双模型异构底座的工程复杂度,实现全模态检索底座归一化。