图_8三级分块与跨库关联
原生 Excalidraw 可编辑画布,基于 SuperMew-0.1.0。请使用 Obsidian 的 Excalidraw 视图打开。
视图归属: 跨模块数据契约(M7 / M8;M5 读取)。
数据组织
- 一个解析页产生 L1 根块、L2 中层和 L3 叶子;数量仅为示例。
- L1 parent 为空;L2 parent/root 指向 L1;L3 parent 指向 L2、root 指向 L1。
存储与检索
- L1/L2 全文存 PG,Redis 缓存;只对 L3 做向量化并写 Milvus。
- 召回 L3 后,可根据 parent_chunk_id 回取更完整父文本。
边界
- chunk_id 层内编号不等于 chunk_idx 累计顺序。
- 这里只保留关联语义,完整 Schema 已在正文。
源码对应
backend/indexing/document_loader.py:_split_page_to_three_levels()backend/indexing/milvus_client.py:ensure_collection()backend/indexing/milvus_writer.py:write_documents()
Excalidraw Data
Text Elements
08 三级分块与跨库存储关联 ^804db0dd
结构示例:同一解析页。L3 用于召回;L1/L2 用于补回上下文。去掉重复的 Schema 字段表。 ^826f46d2
跨模块数据关联 · M7 / M8;供 M5 检索使用 · 返回 [[图_1项目设计|图1]] ^5fac9594
L1 根块 chunk_id = demo.pdf::p0::l1::0 parent 为空 / root 指向自己 ^8ba55dfd
L2 · l2::0 parent = root = l1::0 ^09bb51ca
L2 · l2::1 parent = root = l1::0 ^4db7eb87
L3 · l3::0 parent = l2::0 root = l1::0 ^05c4dc12
L3 · l3::1 parent = l2::0 root = l1::0 ^a42693aa
L3 · l3::2 parent = l2::1 root = l1::0 ^e6f47455
L3 · l3::3 parent = l2::1 root = l1::0 ^6e0d2051
PG parent_chunks + Redis 存储 L1/L2 原文和来源 按 chunk_id 批量回取 ^cfa5ce2e
Milvus · 仅 L3 本地 dense 向量 + text / 关联 ID 服务端 BM25 生成 sparse ^a942d11a
召回后按 parent_chunk_id 取父块 ^5fd3a03f
跨库关联是应用逻辑,没有数据库 FK。chunk_id 的层内编号与 chunk_idx 的文档累计遍历序号不是同一概念。 ^873114fb
读图说明 · M7 文档索引 + M8 数据 ^86ce367f
数据组织 ^022357ef
• 一个解析页产生 L1 根块、L2 中层和 L3 叶子 ;数量仅为示例。 ^b323696f
• L1 parent 为空;L2 parent/root 指向 L1;L3 parent 指向 L2、root 指向 L1。 ^7ae345af
存储与检索 ^3a1e12c4
• L1/L2 全文存 PG,Redis 缓存;只对 L3 做向 量化并写 Milvus。 ^6701f57a
• 召回 L3 后,可根据 parent_chunk_id 回取更 完整父文本。 ^e21eb273
边界 ^82feb270
• chunk_id 层内编号不等于 chunk_idx 累计顺序 。 ^d19c5c86
• 这里只保留关联语义,完整 Schema 已在正文。 ^df07b5ea
Element Links
5fac9594: [[图_1项目设计]]
%%
Drawing
1 | N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANqg8CEAGYArKgBmADhiWADKsixj+GKjDpGAc3WrkCACMAJzW9uQQQQDs4SBEeGD8CGYssfww2N6CyWaB5F6+fLE0YPj0ANYwAML0mPT4xgDEqABGuGYwgaot6Kjl3mWcjLg1dQ2IjTaW6JaoqpbYmJgAypB |
%%