导致报错有以下几种可能:
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"})