#7739·chroma

[错误]: SparseVector 接受非有限值和非字符串标签,这些值在传输边界时会失败

作者: betacatsling创建于 2026年9月14日更新于 2026年9月14日

发生了什么事?

SparseVector. post init '验证`值'是数字,而且 “ 标签” 是匹配长度的列表, 但是它不检查浮动值 是有限的,或者每个标签都是字符串。

接受两项无法代表下游的投入:

  1. 非无限浮动值:
zz
从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