chroma报错:Cannot return the results in a contigious 2D array. Probably ef or M is

193 阅读1分钟

导致报错有以下几种可能:

1.search中的k值大于可选数量,如只有3条符合的文档,但是k设置为5。
2.多个文档的content完全相同。

注意:出现此错误后,原本正常的查询大概率也会报错,所以排查起来非常困难。

在网上搜索解决方案时候有人提到 client.get_or_create_collection() 传入hnsw:M,调整此参数大小,我多次测试并未成功,可能还有其他触发原因未知。

测试环境如下: python:3.10
langchain:3.0
文档数(Document):17万左右

调试代码如下,基于langchain使用

from langchain_chroma import Chroma

vector_store = Chroma(embedding_function=ModelManage.get_embed_model(embed_model),
                          collection_name=knowledge_base_id,
                          persist_directory=os.path.join(KB_BASE_PATH, knowledge_base_id))
vector_store.similarity_search(question, k=3, filter={"color": "red"})