在使用langchain+chroma的进行检索时候遇到了此错误,排查了好久,最后总结出几个会触发的条件。
1) search中的k值大于可选数量,如只有3条符合的文档,但是k设置为5。 2) 多个文档的content完全相同,在使用excel导入不规范时容易出现此情况。
注意:出现此错误后,原本正常的查询也会报错。排查原因修改代码后,要重新向量化再测试。
测试环境:
#python版本:3.10
#langchain版本:3.0
#chroma版本:0.5.23
#chroma-hnswlib版本:0.76
#此向量库大约有17万文档(Document)
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"})
在网上搜索解决方案时候有人提到 client.get_or_create_collection() 传入hnsw:M,调整此参数大小,我多次测试并未成功,可能还有其他触发原因未知,如有其他触发条件或者解决方案请不啬赐教。