Skip to content
阅读进度

如何理解查询并行、期限与词法降级? ​

返回 EachOf 项目 目录

项目版本说明

这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。

标准回答 ​

当前混合召回组织词法分支和向量分支并行运行,语义分支还需要查询 Embedding。代码使用分支上下文、结果通道和独立数据库连接等方式限制相互阻塞,并在不再需要工作时传播取消。

默认总期限为 5秒,Embedding 3秒、词法 2秒、语义查询 2秒。这些是配置的超时预算,不是观测到的 P95,也不能机械相加为固定 9秒。父级期限与各分支启动时间共同决定实际可用时间。

查询向量或语义分支失败时可以返回词法降级结果,并标注降级方式;词法分支失败等情况有自己的错误处理。降级要保留权限和状态约束,不能偷偷返回陈旧的全局缓存,也不能将词法结果标成完整混合召回。

追问与回答 ​

并行为什么有时更慢 ​

可能争用连接池、CPU 或数据库缓存;需要测实际负载与连接预算。两路执行各自很快并不保证总系统吞吐更高。

如何避免 goroutine 等待泄漏 ​

发送和接收遵守取消协议,使用适当缓冲,保证每个分支都有终止路径;请求结束不代表内部计算会自动停止。

易混淆点 ​

  • 把超时默认值当作已达成的延迟指标。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。