记录一下那天晚上的排查过程。Vespa 8 的 schema 里把字段声明成 tensor
刚开始盯着「文档里混用了不同模型的向量」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。schema 里维度写死,与模型输出不一致。也可能是feed 时字段名与 schema 不一致,落到了另一个字段。
不容易想到的是,改完 schema 没有重新部署应用包。
先打印一条向量的实际维度
python -c "import json;d=json.load(open('doc.json'));print(len(d['fields']['embedding']))"
然后改 schema 维度后重新部署
vespa deploy --wait 300 app_pkg/
接着重新 feed 一条样本验证
vespa feed doc.json
等前面都确认过,再按向量查询确认能召回
vespa query 'yql=select * from doc where true'
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
别只看报错消失,验证要多做一步。feed 返回成功计数为一,查询能按向量召回该文档,日志里没有维度不匹配。
提醒一点。维度错误要到 feed 阶段才暴露,schema 里最好用一个变量集中声明维度。这类问题最好一次改到位,反复小改反而容易把原因搅混。
