chatchat-space / Langchain-Chatchat

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain
Apache License 2.0
31.7k stars 5.53k forks source link

【源文件】和【向量库】有× (打叉)是什么意思啊 #3460

Closed Thunderltx closed 7 months ago

Thunderltx commented 7 months ago

微信截图_20240321113606

dosubot[bot] commented 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

关于上传源文件的过程,你可以参考以下步骤:

  1. 导航到你想要上传文件的知识库页面。
  2. 从下拉菜单中选择你想要上传文件的知识库,菜单标签为"请选择或新建知识库:"。
  3. 使用标签为"上传知识文件:"的文件上传组件选择你想要上传的文件。文件上传器支持多种文件格式,这些格式由LOADER_DICT变量指定。
  4. 在"文件处理配置"展开器中配置文件处理设置。这包括设置"单段文本最大长度:","相邻文本重合长度:",以及是否启用"开启中文标题加强"。
  5. 点击"添加文件到知识库"按钮将选定的文件上传到知识库。这个操作将上传文档,可能会覆盖现有的文档,并根据指定的块大小,块重叠,以及是否启用中文标题增强进行处理。

相关的代码片段如下:

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] 上传知识库文件无法向量化

如果你已经尝试了以上步骤,但问题仍然存在,你可以尝试以下解决方案:

  1. 确保所有依赖项都是最新的,通过卸载和重新安装它们,特别是如果你从Langchain-Chatchat的旧版本升级到新版本。这是因为一些库可能由于依赖问题没有正确更新。

  2. 检查API运行日志中的任何错误消息,这可能提供更多关于问题的见解。

  3. 如果你正在使用版本v0.1.x并升级到v0.2.x,建议创建一个新的环境并重新安装所有依赖项,因为这些版本之间的结构和依赖项有重大变化。

  4. 验证configs文件中的配置是否正确。如果一切看起来正常,尝试删除当前的向量库并创建一个新的。

  5. 确保在配置文件中使用绝对路径。这是一个用户在新安装版本0.2时遇到类似问题的解决方案。

这个解决方案是在以下问题中提出的:[BUG] 无法生成向量库

希望这些信息能帮助你解决问题。如果你还有其他问题或需要进一步的帮助,请随时提问。

Sources

#### About Dosu This response is meant to be useful and save you time. It is **not meant to be a precise solution**, but rather a starting point for your own research. Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant. If you want to continue the conversation, start your reply with @dosu-bot.
glide-the commented 7 months ago

0.2.10更新后的bug,可以忽略这个问题

apsyang commented 7 months ago

我也遇到同样的问题,报错如下:

:cannot import name 'KO_NAMES' from 'charset_normalizer.constant' (/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/charset_normalizer/constant.py)

Thunderltx commented 7 months ago

0.2.10更新后的bug,可以忽略这个问题 原来是bug啊,好的,了解了

weigong1983 commented 7 months ago
        # 已使用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",
        )
DreamZhongJu commented 6 months ago

同问