混合检索与重排
状态:规划中的业务模块。关联任务:V2-S02、V2-S03、V2-S06;查看实施计划。真实函数和测试路径由阶段开发完成后补入。
业务问题
大量 schema 无法全部放入 Prompt。词法匹配擅长 SKU、字段名与编码,向量召回擅长相近业务表达,两者互补后还需要筛出少量上下文。
输入、输出与上下游
- 输入:问题、候选域、数据源、schema/semantic 版本、授权范围与预算。
- 输出:有序 Candidate 列表、来源排名、融合分数、重排分数和降级标记。
text
QueryIntent → SearchRepository → OpenSearch + Milvus → RRF → Reranker → Table/Column Context核心机制
RRF 对每个对象按每一路排名计算 sum(1 / (k + rank))。排名从 1 开始,未出现的路贡献 0,不能让缺失对象获得 rank=0 的高分。同一对象需按稳定 ID 合并。
教学示例取 k=60:表 A 在两路都排第 2,得分为 2/62≈0.03226;表 B 只在一路排第 1,得分为 1/61≈0.01639。这说明两路共同支持的候选可能更高;这些值只用于公式说明,k 的生产配置要用消融评测选择。
先表后列能够减少无关列,但必须保护连接键、指标依赖和权限所需字段。Reranker 改变排序,不会凭空补回两路都漏掉的对象。
失败与边界
单路超时:按允许策略降级且标注;双路失败:返回服务不可用;权限不匹配:在召回前过滤并复核;上下文为空:不得生成猜测表名。
学习实验
固定题集、模型和预算,比较 lexical-only、dense-only、hybrid、hybrid+rerank 的 Recall@K、最终正确率与时延。找到一个精确编码题和一个语义改写题。
先写预测结果,再执行;把实际输出、数据版本和代码入口放进 验收证据。现在尚无业务实现,此处实验需要对应阶段完成后运行。
读代码与面试复述
为什么不直接加 BM25 和向量分数?高 Recall 与高 Precision 冲突时怎么取舍?重排变慢是否值得?
阅读时先看契约,再跟一条正常链路和一条失败链路,最后读 adapter 与测试。使用 代码地图 定位模块;不要只背技术名称。