You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ChromaDB v0.5.0中get_or_create_collection报错但可查询集合的问题咨询

ChromaDB v0.5.0 get_or_create_collection 报错排查

问题场景

在Python 3.10.12的pipenv环境中使用ChromaDB官方包v0.5.0时,调用PersistentClient.get_or_create_collection()方法获取已存在的集合时,抛出错误:Collection "test_collection" is not created.,但调用client.list_collections()能正常列出目标集合,且可正常查询该集合内的文本。空项目中复制相同代码无法复现该问题。

相关代码

import chromadb
from chromadb import embedding_functions

client = chromadb.PersistentClient(path="/path/to/collection/directory")
print(f"Available collections: {client.list_collections()}")    # 此语句能返回目标集合
embedding_function = embedding_functions.SentenceTransformerEmbeddingFunction("all-mpnet-base-v2", "cuda")
client.get_or_create_collection("test_collection", embedding_function)

报错来源:*/lib/python3.10/site-packages/chromadb/api/segment.py第189行

可能原因及解决方案

1. 嵌入函数不匹配

ChromaDB会校验集合创建时使用的嵌入函数与当前传入的是否完全一致。如果原集合创建时的嵌入函数参数(模型名、设备等)和现在传入的SentenceTransformerEmbeddingFunction有差异,会被判定为不同集合,触发报错。

解决方法:

  • 确认原集合创建时的嵌入函数参数,完全一致地传入get_or_create_collection
  • 若不确定原参数,可先不传入嵌入函数获取集合,查看其元数据:
    collection = client.get_collection("test_collection")
    print(collection.metadata)  # 查看嵌入函数相关元数据
    

2. 环境依赖不一致

即使ChromaDB版本相同,当前pipenv环境的依赖(如sentence-transformers、torch版本)可能和空项目存在差异,导致嵌入函数校验逻辑异常。

解决方法:

  • 对比空项目与当前环境的依赖清单,统一相关依赖版本
  • 删除Pipfile.lock后重新执行pipenv install,重建环境依赖

3. ChromaDB v0.5.0已知bug

该版本存在部分集合元数据校验相关的bug,尤其在跨环境复用集合目录时容易触发。

解决方法:

  • 升级ChromaDB至v0.5.1及以上版本,官方后续版本修复了相关校验逻辑问题
  • 若无法升级,可先不传入嵌入函数获取集合,再手动绑定:
    collection = client.get_collection("test_collection")
    collection._embedding_function = embedding_function
    

内容的提问来源于stack exchange,提问作者hoosengold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:53:19