Skip to main content

检索与 RAG

MimirQ 采用多路混合检索架构,将 Vector、BM25、SPLADE 三路召回并行执行后通过 RRF 融合,再经 ColBERT/Reranker 精排,实现高召回率与高精度的平衡。

混合检索架构

note

默认混合检索为 Vector + BM25 + RRF 融合。SPLADE 稀疏检索默认关闭(SPARSE_RETRIEVAL_ENABLED=false),ColBERT 为可选精排后端,二者均需显式启用。

检索方式对比

检索方式召回率精度延迟适用场景
Vector(Dense)语义相似度匹配
BM25(Lexical)极低精确关键词/术语匹配
SPLADE(Sparse,默认关闭稀疏语义+词汇混合;需设 SPARSE_RETRIEVAL_ENABLED=true 启用
ColBERT ANN(可选)极高精排阶段;deterministic 实现,HF provider 可选
检索模式自动选择

guess_retrieval_mode() 根据 query 特征自动选择最优检索模式;retrieval_profiles 提供预设配置(如 recall_first 偏召回率优先)。

RRF 融合

Reciprocal Rank Fusion 将多路排序结果合并为统一分数:

RRF(d) = Σ 1 / (k + rank_r(d))

其中 k 为平滑常数(默认 60)。各路检索结果按 RRF 分数降序排列后送入 Reranker。

加权混合

HybridSearchOptions 支持加权融合模式:

参数默认值说明
alpha0.5Vector vs Keyword 混合比
vector_weight0.6Vector 路权重
keyword_weight0.4BM25 路权重
enable_weight_reranktrue是否启用加权重排

重排策略

精排支持多种 Reranker 后端:

  • Cross-Encoder — 高精度,延迟较高
  • ColBERT ANN — 近似最近邻,精度与速度兼顾
  • MMR(Maximal Marginal Relevance) — 兼顾相关性与多样性
MMR 参数

mmr_lambda 控制相关性与多样性的权衡(默认 0.7),mmr_fetch_k_multiplier 控制 MMR 候选池倍率(默认 4x)。

核心配置参数

参数默认值说明
top_k5最终返回文档数
score_threshold0.7最低分数阈值
retrieval_modehybrid检索模式(vector / keyword / hybrid)
SPARSE_PROVIDERdeterministic稀疏检索后端(deterministic / splade)
RETRIEVAL_CONTRACT_MODE""检索合约(evidence_strict / audit_trace 等)

检索合约模式

模式说明
deterministic_recall确定性召回,结果可复现
must_recall_strict必须召回相关文档,否则报错
evidence_strict严格证据链要求
audit_trace审计追踪模式

关键源码

文件职责
app/rag/retriever.pyHybridRetriever 主逻辑
app/rag/retrieval/orchestrator.py检索编排器(~3800+ 行)
app/rag/retrieval/sparse.pySPLADE 稀疏检索
app/rag/retrieval/colbert_ann.pyColBERT ANN 索引
app/rag/reranker/factory.pyReranker 工厂
app/rag/core/retrieval_profiles.py检索 Profile 预设

相关链接:对话与模板 · 知识图谱 · 证据与可解释性