Cannot return the results in a contigious 2D array. Probably ef or M is too small

        在使用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,调整此参数大小,我多次测试并未成功,可能还有其他触发原因未知,如有其他触发条件或者解决方案请不啬赐教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值