结构边界
章节、段落、Figure、Table 和 Caption 具有不同语义,统一字符串切片无法稳定保留它们之间的关系。
STRUCTURE-AWARE · MULTI-VIEW · EVIDENCE-GROUNDED
DualStruct 是一个结构感知的多模态文档 RAG 研究工作台。它将 Parser 输出冻结为稳定 IR,用 RetrievalUnit 统一 Text、Visual 与 Sparse 索引身份,再把每次命中回映到 Chunk、Figure、Table、Page 与 BBox。
临时公网演示 · 固定共享语料 · 请勿提交隐私或业务数据
WHY DUALSTRUCT
章节、段落、Figure、Table 和 Caption 具有不同语义,统一字符串切片无法稳定保留它们之间的关系。
同一 Figure 同时拥有 Caption/OCR Text View 与 Image Visual View,需要跨索引去重并聚合回同一业务对象。
向量命中只是搜索记录。最终回答还需要定位到原始 Element、页码、坐标与图片资产。
ARCHITECTURE
应用索引架构负责“索引什么、如何回到业务对象”;Milvus、FTS5 与 HNSW/FLAT 负责“如何存储与搜索”。
Document · Section · Element · Chunk · Asset
retrieval_unit_id · Source · View · Target
Vector + Unit ID · Indexed Text + Unit ID
Vector Search · Inverted Index · B-Tree
CORE DESIGN
MinerU、Docling 等上游通过 Adapter 进入稳定文档结构,检索系统不跟随 Provider Schema 演化。
Chunk 不跨 Section;Figure/Table 保持 Atomic;普通长文本采用 Target/Max 与完整 Element Overlap。
Source/View/Target 解耦被索引输入与最终业务结果,让 Text、Visual 和 Sparse 命中共享统一 Locator。
三分支并发检索后先聚合到业务 Target,再执行 RRF 与 Reranker,并保留 Rank/Score Trace。
Context Budget、Neighbor Expansion 与 Element Span Citation 共用证据包;未知引用标签在应用层被拒绝。
可替换的是 Parser、Embedding 与 Provider;稳定的是 IR、RetrievalUnit、Evidence 和 Citation。CONTROLLED EVALUATION
同一 Development Split、同一 25 Cases、同一 Qwen3 Reranker,组成完整 2×2 Attribution Matrix。
无 Reranker 的 A→C 显示结构化 Hybrid/RRF 对前排召回与多证据完整性有价值;B→D 说明加入相同 Reranker 后总体结果不再是单向胜负。实验保留 Case、配置指纹和失败记录。
IMPLEMENTATION
Feature-based 六边形模块、Composition Root、Request DI、UoW 与后台任务状态。
Text/Visual 独立 Embedding Space,统一 RetrievalUnit Locator 与 Target-level Fusion。
Embedding、Multimodal Embedding、Reranker 与 ChatModel 通过独立 Port/Adapter 接入。
Typed Contract、Retrieval Workbench、Evaluation Dashboard 与可复现 `linux/amd64` 部署。
EXPLORE THE SYSTEM