bisheng
bisheng copied to clipboard
上传知识库文件过大解析失败
bisheng\src\backend\bisheng\api\v1\knowledge.py vectore_client.add_texts 向量存储时没有对texts进行拆分存储,导致pos请求9001 milvus-minio服务时没有向量结果返回 fix建议:对texts进行裁剪分批调用vectore_client.add_texts
正常的存储都会接一个 text_split 来进行处理,knowledge 这块默认采用了split。方便提供数据的话,我们复现下
17M的pdf文本 敏捷软件开发:原则、模式与实践.pdf https://github.com/zengfeng/books/blob/master/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%EF%BC%9A%E5%8E%9F%E5%88%99%E3%80%81%E6%A8%A1%E5%BC%8F%E4%B8%8E%E5%AE%9E%E8%B7%B5.pdf
正常的存储都会接一个 text_split 来进行处理,knowledge 这块默认采用了split。方便提供数据的话,我们复现下
text_split 得整个数组(可能上万)全部传给了 vectore_clinet.add_texts, 如果使用 milvus, 目前是会卡死
我将数组拆分分批add_texts是可以正常处理,我看流程分批是不会有什么问题的吧?发自我的 iPhone在 2024年1月11日,11:08,todo @.***> 写道:
正常的存储都会接一个 text_split 来进行处理,knowledge 这块默认采用了split。方便提供数据的话,我们复现下
text_split 得整个数组(可能上万)全部传给了 vectore_clinet.add_texts, 如果使用 milvus, 目前是会卡死
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>
我的修改方式 bisheng\src\backend\bisheng\api\v1\knowledge.py vectore_client.add_texts(texts=texts, metadatas=metadatas) 修改为按批写入
size_of_list = sys.getsizeof(texts)
# 拆分进行向量存储--
if size_of_list > 5000:
cut_len = math.ceil(len(texts) / (math.ceil(size_of_list/5000)) )
logger.info(f'vectore_client.add_texts cut-texts file_name={knowledge_file.file_name} size_of_list={size_of_list} len_texts={len(texts)} cut_len={cut_len}')
for text_sub, metadata_sub in zip(cut_list(texts, cut_len), cut_list(metadatas, cut_len)):
vectore_client.add_texts(texts=text_sub, metadatas=metadata_sub)
else:
vectore_client.add_texts(texts=texts, metadatas=metadatas)
我的修改方式 bisheng\src\backend\bisheng\api\v1\knowledge.py vectore_client.add_texts(texts=texts, metadatas=metadatas) 修改为按批写入
size_of_list = sys.getsizeof(texts) # 拆分进行向量存储-- if size_of_list > 5000: cut_len = math.ceil(len(texts) / (math.ceil(size_of_list/5000)) ) logger.info(f'vectore_client.add_texts cut-texts file_name={knowledge_file.file_name} size_of_list={size_of_list} len_texts={len(texts)} cut_len={cut_len}') for text_sub, metadata_sub in zip(cut_list(texts, cut_len), cut_list(metadatas, cut_len)): vectore_client.add_texts(texts=text_sub, metadatas=metadata_sub) else: vectore_client.add_texts(texts=texts, metadatas=metadatas)
可以提交代码