Langchain-Chatchat v0.2.8版本中默认使用的SQLite数据库,本文主要介绍将SQLite替换为MySQL数据库。因为在生产环境中,通常还是会用MySQL数据库。
一.新建数据库和修改配置文件
1.新建db为langchain-chatchat
使用mysql数据库来存储知识库,使用MySQL新建db为langchain-chatchat,其中字符集和排序规则分别为utf8mb4 — UTF-8 Unicode和utf8mb4_0900_ai_ci。如下所示:


2.修改kb_config.py配置文件
如果使用其它数据库(非SQLite数据库),直接修改SQLALCHEMY_DATABASE_URI。F:\ConversationSystem\ChatCopilot\Langchain\Langchain-Chatchat-0.2.8\configs\kb_config.py,如下所示:

3.安装pymysql包
需要安装pymysql包,pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple。否则报错,如下所示:

4.可能遇到临时文件目录不存在问题
如果Debug时遇到临时文件目录找不到的情况,可以修改BASE_TEMP_DIR目录,如下所示:

5.知识库信息错误
这个时候启动项目python start.py -a
会报知识库信息错误,因为这个时候知识库还没有初始化,如下所示:

二.初始化数据库
1.初始化操作
通过命令python init_database.py --recreate-vs
初始化知识库/数据库。如下所示:


2.初始化相关命令
python init_database.py --recreate-vs
命令具体进行了什么操作呢?查看源码F:\ConversationSystem\ChatCopilot\Langchain\Langchain-Chatchat-0.2.8\init_database.py,如下所示:

相关命令解释,如下所示:
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.解释python init_database.py --recreate-vs
命令
因为没有指定知识库名字和embedding模型,所以对存在于KB_ROOT_PATH中的所有文件夹(知识库)和默认embedding模型进行操作。默认使用的faiss向量数据库,一方面生成向量库文件,另一方面生成数据库文件。
4.向量库文件
包括index.faiss和index.pkl这2个文件,如下所示:

5.数据库文件
主要是conversation、file_doc、knowledge_base、knowledge_file、message和summary_chunk这几张表,如下所示:
(1)file_doc数据表

(2)knowledge_base数据表

(3)knowledge_file数据表


参考文献
[1] https://github.com/chatchat-space/Langchain-Chatchat/blob/master/init_database.py
[2] 替换Langchain-Chatchat中的数据库为MySQL:https://z0yrmerhgi8.feishu.cn/wiki/Qdj4wSj9Yiq7yWkeZAecz86UnUd
(文:NLP工程化)