已合并
[feature] kv-conductor /query 支持 msgpack 编码,10倍性能收益 #687
jason lyu创建于 19 天前
[feature] kv-conductor /query 支持 msgpack 编码,10倍性能收益 #687
已合并
Pull Request已成功合入, 合并人@tobking
(感谢 jason lyu 的贡献)19 天前 关联了issue:【feature】实现rust版kv-conductor,[Feature-Request|需求反馈]: kv-conductor /query 支持 MessagePack 编码,长上下文查询端到端提速
19 天前 关联了issue:【feature】实现rust版kv-conductor,[Feature-Request|需求反馈]: kv-conductor /query 支持 MessagePack 编码,长上下文查询端到端提速
ascend-robot
19 天前 评论:
19 天前 评论:
ascend docs pipeline is running...


19 天前 添加了label:docs-ci-pipeline-running
19 天前 添加了label:stat/needs-squash
此处折叠了105条消息 查看更多
yuzechen
16 天前 评论:
16 天前 评论:
/lgtm


16 天前 添加了label:approvedlgtm
15 天前 关闭了关联的issue
15 天前 合入了pull request
1. 合入背景
为 kv-conductor 的
/query与/query_by_hash增加 MessagePack 编解码支持,并在 Coordinator 端到端打通(ConductorApiClient.query_conductor默认走 msgpack)。长上下文(1M/5M token)场景下,KV 亲和性查询的请求体积与编解码耗时显著下降。借鉴 Mooncake conductor #3258 的
Content-Type分派方案;与 KV Conductor 的前缀索引能力(#338 对应的自研 kv-conductor)配套演进。关联 ISSUE:#455
2. 修改内容
motor/kv_conductor/)/query、/query_by_hash按请求Content-Type分派:application/msgpack→rmp_serde解码请求,响应/错误/空结果用rmp::encode手工编码;其他 Content-Type 走原 JSON 路径(行为不变)。QueryResponse使用#[serde(flatten)](tenants展开到顶层 map),msgpack 序列化器不支持 flatten——手工编码保证 msgpack wire 形状与 JSON 逐字节等价,并有单元测试(rmpv→serde_json 结构化对比)守护。QueryRequest/QueryByHashRequest增加Serialize(原仅Deserialize)。ConductorApiClient:新增encode_query_msgpack/decode_query_response_msgpack(msgspec),query_conductor()按kv_conductor_config.query_encoding(默认"msgpack")分派;响应按服务器Content-Type解析(msgpack → msgspec,否则 JSON),旧版 JSON-only conductor 自动兼容,无需配置切换。SafeHTTPSClient新增post_bytes()(原始 body POST)。KvConductorConfig新增query_encoding配置项。/query_by_hash、404/400 错误路径按请求编码返回);cargo clippy -D warnings、cargo fmt通过。json配置路径、legacy JSON 响应 fallback)、coordinator 模块 1155 全过。3. 资料变更
涉及:
docs/zh/user_guide/configuration/config_reference.md:新增kv_conductor_config.query_encoding配置说明。.agent/skills/motor-dev/references/coordinator.md、kv-conductor.md):新增 msgpack 编解码章节与端到端数据,并修正两处过时内容(服务端加权评分模型已移除、src/indexer.rs→src/indexer/目录)。4. 接口变更
涉及(客户面可见):
POST /query、POST /query_by_hash新增Content-Type: application/msgpack请求编码支持,响应随请求编码返回(JSON 默认行为不变,向后兼容)。kv_conductor_config.query_encoding(默认"msgpack";对接旧版 conductor 可配"json")。5. 测试结果
性能收益(真实 kv-conductor release 进程 + Coordinator client 真实编解码路径,best-of-5,DeepSeek V4 风格长上下文):
短上下文覆盖(1 ~ 16K tokens,纯编解码,msgspec vs json.dumps/loads,best-of-20000):
json.dumps/loads 的固定开销(~1-1.2us),短上下文(普通对话场景)同样占优;
query_encoding: "msgpack"在短/长上下文下均无回归。功能测试:
cargo test:120 单元 + 20 集成全过;bash tests/run_tests.sh tests/coordinator/:1155 用例全过;测试场景:单元(编解码往返/等价性)、集成(HTTP Content-Type 协商、错误路径、JSON 兼容)、端到端(1M/5M 长上下文性能)。精度/显存不涉及(无模型运行)。
6. CheckList