chromadb 0.5.5 调 create_collection,名字用 kb_2026_11_15_invoice_vectors_v2_final_prod,抛 InvalidCollectionException,提示名称必须 3 到 63 个字符。

这类报错背后常见的原因有几处,逐个排除就行。名称长度超过了 63 个字符的上限;名称里带了大写字母或非法符号;以点开头,被当成保留名称;同名集合已存在但参数不同,创建冲突。

量一下名称长度和字符集

python -c "n='kb_2026_11_15_invoice_vectors_v2_final_prod';print(len(n))"

接着改成短名并保持可读

python -c "print('kb_invoice_v2')"

然后用 get_or_create 避免重复创建报错

python -c "print(client.get_or_create_collection('kb_invoice_v2'))"

等前面都确认过,再在配置层统一生成集合名并加校验

python validate_collection.py --max 63

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

中途换过一次思路,把范围缩到最小的那一层,反而快了。

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

改完先别撤,确认这几项。集合创建成功,名字长度不超过 63,重复执行脚本不再抛异常。

集合名通常还被用作目录名和 URL 片段,限制比想象中严,把日期和版本放在元数据里,比堆在名字里更稳妥。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189