图_4检索与Evidence构建
原生 Excalidraw 可编辑画布,基于 SuperMew-0.1.0。请使用 Obsidian 的 Excalidraw 视图打开。
视图归属: M5 检索专题。
输入与输出
- 输入 query 与 top_k;输出 docs 和检索 meta,尚未生成答案。
流程
- BGE query 编码后,Milvus 对 L3 执行 dense + BM25 + RRF。
- 候选经过两轮父块合并;Redis 优先、PG 回取父文本。
- 精排或回退排序先截 top_k,再过滤最低分,不回填。
异常
- Hybrid 链异常会重试 dense;精排失败回退原分排序。
- 最终可能少于 top_k 或为空;空证据由 M5 决策。
源码对应
backend/rag/utils.py:retrieve_documents()backend/rag/utils.py:_finalize_retrieval()backend/rag/utils.py:_auto_merge_candidates()backend/rag/utils.py:_rerank_documents()backend/indexing/milvus_client.py:hybrid_retrieve()backend/indexing/parent_chunk_store.py:get_documents_by_ids()
上级主图
[[图_5RAG决策流程]]
Excalidraw Data
Text Elements
04 检索与 Evidence 构建 ^3d90d0c9
原版真实分支与时序;全部图形、文字与连线均为可编辑元素。 ^fe97f90c
M5 检索专题 · 上级主图:[[图_5RAG决策流程|图5]] ^12b23a4d
输入 query / top_k ^f274d864
计算 candidate_k 过滤 chunk_level == 3 ^148cfa56
本地 BGE-M3 编码 query ^b08fcbcd
尝试 Hybrid Retrieval ^8bd9a7de
Dense · HNSW / IP 每路 2 × candidate_k ^ca24d437
BM25 · 中文 analyzer 每路 2 × candidate_k ^0fe6e650
RRF k=60 最多 candidate_k 个候选 L3 ^0632a3a3
Auto-Merge 两轮 L3 → L2 → L1 默认同父命中数 ≥ 2 ^2f44e4ae
Redis 优先 / PG 回源 ParentChunkStore ^ef84ec58
Rerank 有效启用? ^20afaf45
HTTP Rerank query + 候选文本 / top_n ^75b0b829
按原有效分排序 ^ace66f31
先保留最多 top_k ^000d95ae
再按 RERANK_MIN_SCORE 过滤 不回填到 top_k ^6e2898bd
输出 docs + retrieval meta Evidence 文本可含父块 ^2b5818e6
Dense Fallback 召回 candidate_k 个 L3 ^21384547
docs 为空 + 失败 meta 上层按空证据处理 ^feef802c
按 parent_chunk_id 取父块 ^3a29bec3
是 ^1d59412b
否 ^2e2c4a75
成功 ^7de24b30
HTTP / 解析 / 超时失败 ^d657a674
Hybrid 或其后处理异常 ^3f93499b
成功:同一后处理 ^f2e822b3
编码失败 ^a3cbf42b
Fallback 链仍异常 ^c006141c
读图说明 · M5 RAG 知识引擎 ^a98d04dd
输入与输出 ^dda8ba77
• 输入 query 与 top_k;输出 docs 和检索 meta ,尚未生成答案。 ^35cb2021
流程 ^f5f66c88
• BGE query 编码后,Milvus 对 L3 执行 dense
- BM25 + RRF。 ^ccd31928
• 候选经过两轮父块合并;Redis 优先、PG 回取 父文本。 ^196ba166
• 精排或回退排序先截 top_k,再过滤最低分,不 回填。 ^1182993c
异常 ^b89d564a
• Hybrid 链异常会重试 dense;精排失败回退原 分排序。 ^aef17f36
• 最终可能少于 top_k 或为空;空证据由 M5 决 策。 ^34da724c
Element Links
12b23a4d: [[图_5RAG决策流程]]
%%
Drawing
1 | N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANqg8CEADMArKgBslgJwAOdKsixj+GKjDpGAc3WrkCACMgQDMAAzkEEEA7BEgRHhg/AhmLHH8MNjeginRluRevnxxNGD49ADWMADC9Jj0+MYAxKgARrhmMIGqreioFd7lnIy4tfWNiE0mdiboJqiqJtiYmAD |
%%