Closed jiyang2024 closed 7 months ago
你好 @jiyang2024!很高兴再次见到你,希望你一切都好。
您在初始化数据库并切换到 Milvus 向量库时遇到的 "A list of valid ids are required when auto_id is False" 错误可能是由于在向 Milvus 数据库添加文档时没有明确指定它们的 ID,而 Milvus 的 auto_id
设置为 False
。
在 Milvus 中,当您向集合添加文档(向量)时,可以选择让 Milvus 通过将 auto_id
设置为 True
来自动为这些文档生成唯一的 ID,或者您可以通过将 auto_id
设置为 False
来为每个文档提供您自己的唯一 ID。错误消息表明 auto_id
被设置为 False
,但是添加文档到数据库的代码没有提供 ID 列表。
要解决此问题,您需要修改 MilvusKBService
类中的 add_doc
方法,当 auto_id
设置为 False
时,包括为每个被添加的文档提供 ID。如果 MilvusKBService
类与其他 KB 服务类相似,且当前不处理 ID,那么您需要调整它,要么在应用程序中生成 ID,要么更改配置,让 Milvus 通过将 auto_id
设置为 True
来自动处理 ID 生成。
如果您可以控制应用程序中的 Milvus 集合创建过程,您可以确保在创建集合时将 auto_id
设置为 True
。这个更改将允许 Milvus 自动为文档分配 ID,从而避免需要手动指定它们。然而,如果您出于特定原因需要保持 auto_id
为 False
,那么您将需要修改文档插入逻辑,为每个文档包含一个唯一的 ID。
由于提供的上下文没有包括 MilvusKBService
类的实现细节或 Milvus 集合是如何配置的,我无法提供具体的代码更改。您需要查看 MilvusKBService
类,特别是 add_doc
方法,并确保它根据您的 auto_id
配置正确处理 ID。
参考源代码:
你好,初始化时,发现milvus的数据库和collection都没有发现,如何修改collection的auto_id 设置为True?
server/knowledge_base/kb_service/milvus_kb_service.py文件,56行后面加一个参数设置auto_id为True
您好,auto_id为True之后仍继续报错,请问你是怎么解决的?
我也遇到了,同问
我也遇到了,同问
你可以看一下我的那个issue
langchain 0.0.354 langchain-community 0.0.20 langchain-core 0.1.23 版本改成这样就可以了,我使用的是langchainchatchat0.2.10版本代码,milvus版本伟2.2.13
切换milvus向量库,执行python init_database.py --recreate-vs进行初始化报错, 错误信息: Traceback (most recent call last): File "/root/jgy/Langchain-Chatchat/init_database.py", line 107, in
folder2db(kb_names=args.kb_name, mode="recreate_vs", embed_model=args.embed_model)
File "/root/jgy/Langchain-Chatchat/server/knowledge_base/migrate.py", line 128, in folder2db
files2vs(kb_name, kb_files)
File "/root/jgy/Langchain-Chatchat/server/knowledge_base/migrate.py", line 113, in files2vs
kb.add_doc(kb_file=kb_file, not_refresh_vs_cache=True)
File "/root/jgy/Langchain-Chatchat/server/knowledge_base/kb_service/base.py", line 131, in add_doc
doc_infos = self.do_add_doc(docs, kwargs)
File "/root/jgy/Langchain-Chatchat/server/knowledge_base/kb_service/milvus_kb_service.py", line 83, in do_add_doc
ids = self.milvus.add_documents(docs)
File "/root/anaconda3/envs/env_rag/lib/python3.10/site-packages/langchain_core/vectorstores.py", line 119, in add_documents
return self.add_texts(texts, metadatas, kwargs)
File "/root/anaconda3/envs/env_rag/lib/python3.10/site-packages/langchain_community/vectorstores/milvus.py", line 520, in add_texts
assert isinstance(
AssertionError: A list of valid ids are required when auto_id is False.