外观
如何理解查询并行、期限与词法降级?
项目版本说明
这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。
标准回答
当前混合召回组织词法分支和向量分支并行运行,语义分支还需要查询 Embedding。代码使用分支上下文、结果通道和独立数据库连接等方式限制相互阻塞,并在不再需要工作时传播取消。
默认总期限为 5秒,Embedding 3秒、词法 2秒、语义查询 2秒。这些是配置的超时预算,不是观测到的 P95,也不能机械相加为固定 9秒。父级期限与各分支启动时间共同决定实际可用时间。
查询向量或语义分支失败时可以返回词法降级结果,并标注降级方式;词法分支失败等情况有自己的错误处理。降级要保留权限和状态约束,不能偷偷返回陈旧的全局缓存,也不能将词法结果标成完整混合召回。
追问与回答
并行为什么有时更慢
可能争用连接池、CPU 或数据库缓存;需要测实际负载与连接预算。两路执行各自很快并不保证总系统吞吐更高。
如何避免 goroutine 等待泄漏
发送和接收遵守取消协议,使用适当缓冲,保证每个分支都有终止路径;请求结束不代表内部计算会自动停止。
易混淆点
- 把超时默认值当作已达成的延迟指标。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q166