非有限浮点元数据 (inf/nan) 会被默默地接受,然后丢弃,从而丢失元数据条目
作者: warter666创建于 2026年9月16日更新于 2026年9月16日
发生了什么事?
validate metadata()'接受任何Python活',包括inf'和nan'。 这些值通过客户端验证,但是它们不能被JSON序列化,因此在持久性/序列化期间会默默地下降.
后果:
- ** 静态元数据损失** – 添加QQ"分数":浮("inf"),"来源":"a""持续"源""但静态地降低"分数";添加QQ"分数":浮("inf")"为该记录唯一的密钥返回"metadatas:[无]". 数据也在客户端重新启动后丢失 。
- ** 不连贯的验证表面** –
$gt'/$lt'过滤器对掉的密钥无声地错过了记录,这令人困惑,因为文字似乎成功。
复制(chromadb 1.5.9,持久性)
[Python] 导入 chromadb, 临时文件
pc = chromadb. PersistentClient(路径=tempfile.mkdtemp ()) (中文(简体) ). c = pc.get 或 create collection ("t") (中文(简体) ). c.add(ids=["1],嵌入式=[[0.1,0.2]]], 元数据= [{'分数':活体 ("inf"),"源":"doc-a"}) 打印(c.get(ids=["1]]["metadatas"])
[{' source': 'doc-a'}] <-'core'无声地走了
`nan'、`update ()'路径(`validate update metadata')和列表值元数据内浮点数(`validate metadata list value')。
预期行为
包含非无限浮标的书写应在验证时用 " ValueError " 响亮地失败,这反映了巢状的地块已经被拒绝。 (备选:文档+消毒,但拒绝似乎与现有的严格性一致. )
乐于通过固定+测试打开公关,如果方法听起来不错.内容来源: chroma-core/chroma