十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Langchain-Chatchat 如何用 chatchat kb 命令对知识库执行增量更新、库内重建与数据库清理

Langchain-Chatchat 如何用 chatchat kb 命令对知识库执行增量更新、库内重建与数据库清理 Langchain-Chatchat 如何用 chatchat kb 命令对知识库执行增量更新、库内重建与数据库清理【免费下载链接】Langchain-ChatchatLangchain-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项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat在 Langchain-Chatchat 中初始化知识库之后常见的维护动作有三种往知识库目录里拷贝了新文档、切换了 Embedding 模型或向量库类型后需要重新向量化、在文件浏览器里删除了部分文档后本地文件夹与数据库记录不一致。这些操作都不需要重装项目全部由chatchat kb子命令完成——它是 init_database.py 中定义的命令在 cli.py 里注册为kb命令。执行前请确保已经完成chatchat init初始化、model_settings.yaml中模型配置正确并且模型推理框架及对应 Embedding 模型已经启动否则会失败。执行chatchat kb --help可以看到全部选项。执行 kb 命令前的准备条件项目已完成安装与chatchat init初始化CHATCHAT_ROOT下已生成*_settings.yaml配置文件文档文件存放在知识库目录默认CHATCHAT_ROOT/data/knowledge_base可通过basic_settings.yaml中的KB_ROOT_PATH修改下对应知识库的content文件夹中Embedding 模型可用。README 中在chatchat kb -r前明确提醒进行知识库初始化前请确保已经启动模型推理框架及对应embedding模型且已完成模型接入配置需要处理某个特定知识库时用-n/--kb-name指定知识库名称该选项可重复传入不传时默认处理KB_ROOT_PATH下存在的所有文件夹需要指定 Embedding 模型时用-e/--embed-model不传时默认取model_settings.yaml中的默认 Embedding 模型。五个选项分别处理哪些文件chatchat kb各选项的作用范围在 migrate.md 中有对应说明核心是本地content文件夹与数据库记录之间的同步方向选项处理对象文档给出的使用条件-i/--increment只处理存在于本地文件夹、不存在于数据库中的文件增量创建向量时使用-u/--update-in-db只处理数据库中已存在的文件跳过仅存在于本地文件夹的文件为库内文件重建向量时使用-r/--recreate-vs重建整个向量库并用本地文件夹现有文件填充已将文档拷贝到 content 文件夹但向量库未填充或DEFAULT_VS_TYPE/DEFAULT_EMBEDDING_MODEL改变时--prune-db删除数据库中存在、本地文件夹中已不存在的文档记录在文件浏览器中删除了文档文件之后使用--prune-folder删除本地文件夹中存在、数据库中不存在的文档文件用于释放本地磁盘空间另有两个辅助选项--create-tables在表不存在时创建空表--clear-tables会先删除数据库表再重建属于破坏性操作migrate 文档明确提示生产环境中应谨慎使用以避免数据丢失。场景一新增文档后增量更新把新文档拷贝到目标知识库的content文件夹后执行chatchat kb -i -n samples这条命令只处理本地新增、数据库中尚不存在的文件已入库的文档不会被重复向量化适合文档持续增长的常态维护。-n samples换成实际知识库名称也可以重复指定多个省略-n则对所有知识库执行。如果新文档是首次入库、且向量库本来就为空也可以直接用重建模式chatchat kb -r它会重建全部向量库并用本地现有文件填充。场景二库内重建换模型或重新向量化两种情况用这个场景一是DEFAULT_EMBEDDING_MODEL或DEFAULT_VS_TYPE改变旧向量与新模型不匹配此时用-r重建整个向量库二是向量库结构不变只希望为数据库中已有的文件重新生成向量此时用-u。# 全量重建向量库换模型/换向量库类型后 chatchat kb -r # 只重建库内已有文件的向量跳过仅存在于本地的文件 chatchat kb -u -n samples注意 worker 的执行顺序是recreate_vs优先于update_in_db与increment的 elif 分支同一条命令里同时传-r和-u/-i时实际生效的是-r不要指望两者叠加执行。场景三删除文档后的数据库清理在 WebUI 文件浏览器或文件系统里删除文档后数据库里仍会留下记录或反之数据库删了文档而本地文件残留。按删除方向选清理命令# 删除数据库中存在、本地文件夹中已不存在的文档记录 chatchat kb --prune-db -n samples # 删除本地文件夹中存在、数据库中不存在的文件释放磁盘空间 chatchat kb --prune-folder -n samples--prune-db会逐个打印成功删除的文档信息知识库名称和文件名最后统一保存向量库状态。--prune-folder的副作用需要特别注意它直接删除本地文档文件删除操作不可逆migrate 文档明确要求执行前确保重要数据已经备份。如何判断命令执行成功命令完成后进程会打印总耗时worker 输出总计用时...。以 README 中chatchat kb -r的文档示例日志为准成功时输出形如以下为文档示例数值会因文档数量不同而变化---------------------------------------------------------------------------------------------------- 知识库名称 samples 知识库类型 faiss 向量模型 bge-large-zh-v1.5 知识库路径 /root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples 文件总数量 47 入库文件数 42 知识条目数 740 用时 0:02:29.701002 ---------------------------------------------------------------------------------------------------- 总计用时 0:02:33.414425核对要点是「入库文件数 / 知识条目数」是否符合预期-i模式下该数值应只包含本次新增文件--prune-db模式下以打印的删除文档清单是否覆盖你已删的文件为准。测试代码 test_migrate.py 中也展示了程序化核对方式通过知识库服务的list_files()检查文件是否入库、list_docs(file_name...)检查文档条目并校验doc.metadata[source]指向正确的文件名增量与 prune 场景可以参照它确认结果。已知问题与限制Windows 新建虚拟环境中执行重建或添加知识文件时可能卡住先用from unstructured.partition.auto import partition确认若该语句卡住README 给出的处理方式是卸载python-magic-bin并按原版本重装然后重新执行知识库命令pip uninstall python-magic-bin # check the version of the uninstalled package pip install python-magic-bin{version}其中{version}需替换为卸载时打印的原版本号。执行入口以 init_database.py 中定义的选项为准--prune-folder删文件不可逆、--clear-tables删表重建两条命令在不确定影响范围前不要带全库范围即省略-n执行。0.3.x 架构变动较大从旧版本迁移时 README 建议按文档重新部署并提前备份重要数据chatchat kb各选项不承担跨版本数据迁移职责。完成上述操作后服务本身无需重新初始化按 README 的流程用chatchat start -a启动或重启服务即可让 WebUI 与 API 使用更新后的知识库。【免费下载链接】Langchain-ChatchatLangchain-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项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表