Closed Thunderltx closed 7 months ago
嘿,@Thunderltx!很高兴再次看到你在这里提问。希望一切都好!
在Langchain-Chatchat应用中,当"源文件"和"向量库"有一个叉号(×)时,表示相应的文件在本地知识库文件夹或向量库数据库中不存在。这是由cell_renderer
函数决定的,如果值为true
(表示存在),则返回一个勾号(✓);如果值为false
(表示不存在),则返回一个叉号(×)。这种渲染逻辑应用于知识库页面的"in_folder"和"in_db"列,分别表示源文件在文件夹中的存在和向量库在数据库中的存在。
cell_renderer = JsCode("""function(params) {if(params.value==true){return '✓'}else{return '×'}}""")
...
doc_details["in_folder"] = doc_details["in_folder"].replace(True, "✓").replace(False, "×")
doc_details["in_db"] = doc_details["in_db"].replace(True, "✓").replace(False, "×")
...
("in_folder", "源文件"): {"cellRenderer": cell_renderer},
("in_db", "向量库"): {"cellRenderer": cell_renderer},
源码参考:webui_pages/knowledge_base/knowledge_base.py
关于上传源文件的过程,你可以参考以下步骤:
LOADER_DICT
变量指定。相关的代码片段如下:
if st.button(
"添加文件到知识库",
disabled=len(files) == 0,
):
ret = api.upload_kb_docs(files,
knowledge_base_name=kb,
override=True,
chunk_size=chunk_size,
chunk_overlap=chunk_overlap,
zh_title_enhance=zh_title_enhance)
if msg := check_success_msg(ret):
st.toast(msg, icon="✔")
elif msg := check_error_msg(ret):
st.toast(msg, icon="✖")
这个片段显示了使用st.button
函数创建上传按钮,当没有文件被选中时条件性地禁用按钮,以及调用api.upload_kb_docs
执行上传操作的过程。
源码参考:webui_pages/knowledge_base/knowledge_base.py
如果你在上传文件后发现"源文件"和"向量库"仍然显示叉号(×),可能是因为你还没有调用recreate_vector_store
端点来向量化你的文档。这个端点负责根据内容中的文档重建向量库。因此,上传文件后,你应该调用这个端点来向量化你的文档。这个解决方案是在以下问题中提出的:[BUG] 上传知识库文件无法向量化。
如果你已经尝试了以上步骤,但问题仍然存在,你可以尝试以下解决方案:
确保所有依赖项都是最新的,通过卸载和重新安装它们,特别是如果你从Langchain-Chatchat的旧版本升级到新版本。这是因为一些库可能由于依赖问题没有正确更新。
检查API运行日志中的任何错误消息,这可能提供更多关于问题的见解。
如果你正在使用版本v0.1.x并升级到v0.2.x,建议创建一个新的环境并重新安装所有依赖项,因为这些版本之间的结构和依赖项有重大变化。
验证configs
文件中的配置是否正确。如果一切看起来正常,尝试删除当前的向量库并创建一个新的。
确保在配置文件中使用绝对路径。这是一个用户在新安装版本0.2时遇到类似问题的解决方案。
这个解决方案是在以下问题中提出的:[BUG] 无法生成向量库。
希望这些信息能帮助你解决问题。如果你还有其他问题或需要进一步的帮助,请随时提问。
0.2.10更新后的bug,可以忽略这个问题
我也遇到同样的问题,报错如下:
:cannot import name 'KO_NAMES' from 'charset_normalizer.constant' (/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/charset_normalizer/constant.py)
0.2.10更新后的bug,可以忽略这个问题 原来是bug啊,好的,了解了
# 已使用cell_renderer做替换处理,此处就不需要重复处理
# doc_details["in_folder"] = doc_details["in_folder"].replace(True, "✓").replace(False, "×")
# doc_details["in_db"] = doc_details["in_db"].replace(True, "✓").replace(False, "×")
gb = config_aggrid(
doc_details,
{
("No", "序号"): {},
("file_name", "文档名称"): {},
# ("file_ext", "文档类型"): {},
# ("file_version", "文档版本"): {},
("document_loader", "文档加载器"): {},
("docs_count", "文档数量"): {},
("text_splitter", "分词器"): {},
# ("create_time", "创建时间"): {},
("in_folder", "源文件"): {"cellRenderer": cell_renderer},
("in_db", "向量库"): {"cellRenderer": cell_renderer},
},
"multiple",
)
同问