news 2026/9/10 21:56:35

Langchain-Chatchat 版本升级后如何用 chatchat kb --import-db 从备份恢复 info.db 数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Langchain-Chatchat 版本升级后如何用 chatchat kb --import-db 从备份恢复 info.db 数据

Langchain-Chatchat 版本升级后如何用 chatchat kb --import-db 从备份恢复 info.db 数据

【免费下载链接】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 到新版本后,知识库元数据库info.db的表结构可能发生变化,旧库不能直接沿用。但如果你的知识库和向量库内容本身没有改动、不需要重新向量化,项目提供了chatchat kb --import-db命令:从旧版本备份的 SQLite 数据库(即备份下来的info.db)把数据导入当前版本的info.db。本文只覆盖这一场景——版本升级导致info.db结构变化、但无需重建向量库时的数据恢复操作。

--import-db 的适用条件与边界

--import-db对应的实现是 import_from_db,其文档说明如下:

在知识库与向量库无变化的情况下,从备份数据库中导入数据到 info.db。适用于版本升级时,info.db 结构变化,但无需重新向量化的情况。请确保两边数据库表名一致,需要导入的字段名一致。当前仅支持 sqlite。

据此,使用它需要同时满足:

  • 备份文件是一个SQLite数据库(也就是旧版本的info.db文件拷贝),其他数据库类型不受支持;
  • 备份库与当前版本的数据库模型表名一致、待导入的字段名一致
  • 知识库与向量库无变化,向量数据不需要重建。

info.db的默认位置由 settings.py 定义,位于数据根目录(CHATCHAT_ROOT)下的data/knowledge_base/info.db,也可通过DB_ROOT_PATH/SQLALCHEMY_DATABASE_URI配置项指向其他路径(README.md 给出了自定义路径的示例配置)。备份时拷贝的就是这个文件。

注意一条边界:如果你的DEFAULT_VS_TYPE(向量库类型)或DEFAULT_EMBEDDING_MODEL(嵌入模型)发生了变化,或向量库尚未填充,属于重建向量库的场景,应使用chatchat kb -r--recreate-vs),而不是--import-db

准备:停止服务并备份旧版 info.db

导入前有两个来自文档的明确要求:

  • 执行导入时应确保没有其他操作正在访问目标数据库,以避免数据冲突(见 migrate.md 中import_from_db的注意事项),所以先停掉正在运行的 chatchat 服务;
  • 升级前先备份重要数据。README.md 中关于 0.3.x 的提示写明:“0.3.x 结构改变很大……记得提前备份重要数据!”,Docker 迁移文档 docs/install/README_docker.md 也要求在迁移前先备份好数据。

具体做法:把旧版本的info.db文件拷贝到一个安全位置,这个拷贝文件就是后面--import-db要传入的备份路径。

执行导入命令

chatchat kb子命令由 cli.py 注册(main.add_command(kb_main, "kb")),各选项定义在 init_database.py。基本命令:

chatchat kb --import-db <备份文件路径>

<备份文件路径>替换为上面备份下来的旧版info.db文件路径,例如:

chatchat kb --import-db ./data/knowledge_base/info.db.bak

如果担心新版本中部分表还不存在,可以组合--create-tables选项。它的 help 说明是 “create empty tables if not existed”:先看下表是否存在,不存在则创建,已存在的表不会被修改:

chatchat kb --create-tables --import-db ./data/knowledge_base/info.db.bak

chatchat kb的其他选项(-r-u-i--prune-db等)与本次恢复任务无关,不要与--import-db混用。

验证导入结果

文档没有给出一段固定的成功日志,可以依据import_from_db的实际输出行为来判断:

  • 对每个在备份库中存在、且对应当前数据库模型的表,终端会打印processing table: {表名},随后逐行打印导入的数据(代码中通过pprint输出每一行);
  • 成功完成时函数返回True;如果无法读取备份数据库或过程中遇到其他错误,会打印无法读取备份数据库:{sqlite_path}。错误信息:{e}并返回False(以上输出行为见 migrate.md 中“输出示例”与源码 migrate.py);
  • chatchat kb的父进程在子任务结束后打印总计用时:...(见 init_database.py)。

如果终端出现无法读取备份数据库错误行,说明本次导入失败,需要检查备份文件路径是否正确、文件是否为可读的 SQLite 文件。执行过程中按 Ctrl+C 会终止子进程(代码中捕获KeyboardInterrupt后调用p.terminate()),此时不要当作完成,应重新执行。

确认数据导入无误后,按项目文档的启动方式执行chatchat start -a重新启动服务即可。

限制与注意事项

  • 仅支持 SQLite:备份库必须是 SQLite 文件,不支持其他数据库(import_from_db文档说明“当前仅支持 sqlite”)。
  • 字段按当前模型过滤:导入时每一行会按当前数据库模型定义的列名过滤,备份中不在当前模型列内的字段不会被写入(见 migrate.py 中data = {k: row[k] for k in row.keys() if k in model.columns}的过滤逻辑)。所以备份库与当前模型表名、字段名不一致时,缺失或不匹配的字段不会导入。
  • 不存在的表会被跳过:备份库中没有的表直接跳过,不报错。
  • 不涉及向量数据:该命令只恢复info.db中的元数据,不清除、不重建任何向量库。向量库类型或嵌入模型变化时请改用chatchat kb -r
  • --create-tables不修改已有表:它只创建尚不存在的表,不会更新或修改现有表结构(见 migrate.md 中create_tables的注意事项)。

相关文档与源码路径:

  • markdown_docs/server/knowledge_base/migrate.md:import_from_dbcreate_tablesfolder2db等迁移函数的完整说明
  • libs/chatchat-server/chatchat/server/knowledge_base/migrate.py:导入实现
  • libs/chatchat-server/chatchat/init_database.py:chatchat kb的 CLI 选项定义
  • libs/chatchat-server/chatchat/settings.py:info.db默认路径配置

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 21:55:22

PostgreSQL阻塞查询检测与优化实战

1. 为什么需要关注PostgreSQL阻塞查询 在数据库运维过程中&#xff0c;阻塞查询就像交通堵塞中的头车——它不仅自己无法前进&#xff0c;还会导致后方所有依赖它的查询陷入等待状态。我曾在生产环境遇到过一起典型的阻塞案例&#xff1a;一个简单的报表查询阻塞了整个业务系统…

作者头像 李华
网站建设 2026/9/10 21:54:57

Folo 移动端如何用 Expo 在 macOS 上搭建开发环境并跑通 iOS 模拟器

Folo 移动端如何用 Expo 在 macOS 上搭建开发环境并跑通 iOS 模拟器 【免费下载链接】follow &#x1f9e1; Folo is the AI RSS Reader 项目地址: https://gitcode.com/GitHub_Trending/fol/follow Folo 的移动端是一个基于 Expo 的 React Native 应用&#xff0c;代码…

作者头像 李华
网站建设 2026/9/10 21:54:07

药品追溯扫码设备技术演进与市场应用分析

1. 药品追溯码扫码设备行业现状分析全球医药行业正经历数字化转型浪潮&#xff0c;药品追溯系统作为保障用药安全的核心基础设施&#xff0c;其配套硬件设备市场迎来爆发式增长。扫码一体机作为药品流通环节的关键数据采集终端&#xff0c;已从简单的条码识别工具进化为具备多重…

作者头像 李华
网站建设 2026/9/10 21:53:59

通达信股市风向标:主图副图选股公式源码详解

在通达信里折腾指标&#xff0c;少说也有七八年了。后台经常有朋友问&#xff0c;能不能给一套真正能当“风向标”用的东西&#xff0c;一眼看出趋势方向、量能到底配不配合&#xff0c;而不是每天盯着红红绿绿的K线猜来猜去。今天我就把自用的这套“股市风向标”完整分享出来&…

作者头像 李华