[错误]: SparseVector 接受非有限值和非字符串标签,这些值在传输边界时会失败
作者: betacatsling创建于 2026年9月14日更新于 2026年9月14日
发生了什么事?
SparseVector. post init '验证`值'是数字,而且
“ 标签” 是匹配长度的列表, 但是它不检查浮动值
是有限的,或者每个标签都是字符串。
接受两项无法代表下游的投入:
- 非无限浮动值:
从chromadb.base 类型导入 SparseVector
sv = SparseVector (indices = [0],值= [float ("nan")] (中文(简体) ).
sv.to dict () (中文(简体) ).
# {'#类型':'sparse vector','indices': [0],'值': [n]]命令被序列化为 JSON 的 “值” : [null] , 它失败了 f32' 解码服务器侧 。 如果将 " null " 值还给客户, SparseVector. from dit'也在其上提出`ValueError':
[Python] SparseVector. from dict({"#类型":"sparse vector","indices": [0],"值": [无]}
值错误: SparseVector 值必须是数字, 在 0 位获得 NoneType
2. 非字符串标签:
```2ZZ
SparseVector( 指数= [0], 值= [1.0], 标签= [123])
# 已接受; to dict () exits {"tokens" : [123]}, 它失败了字符串 [] 解码预期行为
两个案件都应在明确`ValueError ' 的建筑工程中驳回。 非数字值和未分类指数已经是一样。
QQ 版本数
Chromadb 1.5.9 (目前的 " 主要 " ), Python 3.12。
建议的固定办法
在“SparseVector. 后 init ”中,拒绝非无限“浮动”值。
(math.isfinite')和非str'标签。 这是同样的故障快速治疗
元数据需要浮动(另见关于非无限元数据的讨论)
值),适用于稀有的矢量值和标签.
内容来源: chroma-core/chroma