分层异构向量检索
2026/7/23大约 5 分钟
可以,而且这正是工业级、高性能 RAG 系统在架构演进时的必经之路。在 Infra(基础设施)领域,这种架构被称为“分层异构向量检索(Tiered & Heterogeneous Vector Indexing)”。
如果把一个包含图片、表格、正文、目录的大型知识库无脑塞进同一个向量空间,不同模态的数据会发生严重的“语义稀疏与互撞”(比如图片的向量会把特定长文本的专有名词挤出 Top-K 候选池)。
为了完美破局,我们需要建立一套“按模态与结构分层分流(Layered Ingestion)”的高级架构。
一、 黄金四层架构设计(The 4-Layer Embedding Architecture)
针对你提到的混合 PDF,推荐在底层建立四个平行的 Vector Layers(向量层 / 命名空间):
【 物理混合 PDF 知识库 】
│
▼ (通过 MinerU / Marker 视觉拆解分流)
┌───────────────────┬─────┴─────────────┬───────────────────┐
▼ ▼ ▼ ▼
【 Layer 1: 骨架层 】 【 Layer 2: 细节层 】 【 Layer 3: 表格层 】 【 Layer 4: 多模态层 】
(章节树 / 概要描述) (切细的 Parent-Child) (Markdown / 键值对) (架构图 / 流程图)
│ │ │ │
▼ (Embedding A) ▼ (Embedding B) ▼ (Embedding C) ▼ (Embedding D)
[ 骨架向量空间 ] [ 细节短句空间 ] [ 结构化表格空间 ] [ 原生多模态空间 ]
Layer 1:骨架层(Structural / Atlas Layer)
- 对象:PDF 的多级目录树、每一章的全局 Summary(摘要)、文档的元数据。
- 物理方案:使用大窗口的文本 Embedding 模型(如
text-embedding-3-large或BGE-m3)。 - 物理任务:高空粗筛。当用户问:“你们这个系统部署需要几步?”系统优先触发骨架层,瞬间锁定“第二章:安装部署”对应的所有 Chunk 族群,从上往下进行粗粒度路由(Routing)。
Layer 2:细节正文层(Granular Detail Layer)
- 对象:PDF 的具体段落文本。
- 物理方案:采用 父子块(Parent-Child)双层切片。子块控制在 100~200 Token,专门用来做稠密向量化。
- 物理任务:定点爆破。专门应付“某个具体报错代码是什么含义”、“某个网络端口号是多少”这种微观细节检索。
Layer 3:结构化表格层(Structured Table Layer)
- 对象:PDF 中提取出来的纯 Markdown 表格、资产负债表、参数对照表。
- 物理方案:不要直接做文本 Embedding。先让大模型把表格转化为 Key-Value Pair(键值对)或者自然语言描述(例如:“该表格记录了 Llama 3 模型的推理吞吐量,当 Batch 为 1 时值为 42t/s”),然后对这串描述以及原始 Markdown 分别做 Embedding。
- 物理任务:保护数据指标不串行,确保大模型对表格矩阵的检索召回率。
Layer 4:多模态图像层(Native Multimodal Layer)
- 对象:PDF 里的架构拓扑图、时序图、算法流程图。
- 物理方案:两条线选一种:
- 线 A:用 VLM 算出的精细文本 Caption 存入独立分区。
- 线 B(更推荐):直接用原生多模态 Embedding 模型(如
CLIP或Google Vertex Multimodal)把图片像素转成高维向量,建立独立的图像向量索引区。 - 物理任务:处理用户的图形提问,或者支持“以图找文”的高级检索。
二、 在向量数据库中如何物理落地?
在具体的向量库(如 Milvus、Qdrant 或 Pgvector)中实现上述四层分层,有三种成熟的工程手段:
- 物理隔离:独立 Collection(集合)—— 适合规模极大、模型不同的情况
如果你的 Layer 4 用了 CLIP 模型(512维),而 Layer 2 用了 BGE 模型(1024维),由于维度和数学模型完全不兼容,必须在数据库里开辟 4 个完全独立的 Collection。 - 逻辑隔离:单 Collection + Partition/Namespace(分区)—— 适合模型相同的情况
如果 1~3 层你用的都是同一种文本 Embedding 模型,可以建一个大 Collection,内部开辟 3 个 Partition:partition_structure、partition_text、partition_table。检索时,通过添加过滤标签(Filter Tag)来实现分层检索。
三、 分层之后的“多路融合检索”怎么做?
分层之后,不能各玩各的,必须在最上层通过一个“路由与融合网关(Retriever Gateway)”重新拧成一股绳。这就是我们前面提到的 RAG-Fusion 机制的超级升级版:
- 用户发起 Query。
- 多层并发检索(Multi-tier Retrieval):
后台拉起 4 个并发线程(异步 IO),同时去 4 个 Layer 捞数据。每层各吐出各自的 Top-10 文档。 - 异构融合与重排(Hybrid Rerank & RRF):
- 先过一道 RRF(倒数排名融合) 算子,把所有层召回的文档按照排位强行拉平合并。
- 紧接着挂载一个 Reranker(重排模型),把合并后的 Top-30 文档做最后一轮针对原始提问的“交叉注意力打分”。
- 截断控窗(Context Control):
卡死只要最后的 Top-5(比如最终包含 1个表格、1个架构图的Caption、3个核心细节正文),打包灌入大模型上下文。
💡 这样做有什么降维打击级的优势?
- 物理消灭上下文爆表:因为每一层各司其职,你不需要为了找一句话而把整章的废话都打包进去,精准度提升数倍。
- 更新极度丝滑:如果 PDF 里只是改了一张架构图,你只需要去定点抹除并更新 Layer 4(多模态层)里的那一条向量记录,其他三层(正文、表格、骨架)的索引动都不用动。这极大地降低了大数据量下的知识库运维成本。
