Skip to content

xuanxiaochenmi/Dify-based-Local-Knowledge-Base

Repository files navigation

Dify-based-Local-Knowledge-Base-Construction-System

版本信息

  • 当前版本:1.0.0
  • 最后更新日期:2025-11-03

项目简介

Dify-based-Local-Knowledge-Base-Construction-System 是一个简单的本地知识库管理系统,用于自动扫描、管理本地文件并同步更新到 Dify 知识库平台。该系统支持文件的自动检测、上传、更新和删除,并提供完整的日志记录和错误处理机制。

  • 注意:
    • 本项目基于dify的知识库平台,需要先自行部署dify知识库平台,具体部署步骤请参考dify官方文档。
    • 本项目仅支持扫描本地文件,不支持远程文件同步。

系统架构

系统由以下核心模块组成:

  1. main.py:主程序入口,负责文件扫描、状态检测和知识库同步
  2. update_knowledge.py:文件更新检测模块,用于检查文件是否需要更新
  3. update_dify.py:Dify API 交互模块,负责文件的上传、更新和删除操作
  4. config_manager.py:配置管理模块,提供统一的配置加载和命令行参数处理功能
  5. file_scan.py:文件扫描模块,负责遍历指定路径下的文件

环境配置

在运行系统之前,请确保已安装所需的依赖库。项目依赖信息存储在 requirements.txt 文件中。

依赖库列表

# Local Knowledge Base 项目依赖库列表

# YAML配置文件解析库
pyyaml>=6.0

# MySQL数据库连接库
mysql-connector-python>=8.0.0

# HTTP请求库(用于Dify API调用)
requests>=2.28.0

# 可选:日志增强库(如需要更高级的日志功能)
# python-dotenv>=0.20.0
# logging-handlers>=0.1.0

安装步骤

  1. 进入项目目录:

    cd /home/root01/Local_Knowledge_Base
  2. 使用 pip 安装依赖:

    pip install -r requirements.txt
  3. 确保系统已安装 Python 3.8 或更高版本

虚拟环境建议

为了避免依赖冲突,建议在虚拟环境中运行项目:

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Linux/MacOS
source venv/bin/activate
# Windows
env\Scripts\activate

# 安装依赖
pip install -r requirements.txt

配置说明

系统配置存储在 config.yaml 文件中,包含以下主要配置项:

1. 扫描配置 (scan_config)

scan_config:
  scan_paths:          # 需要扫描的文件路径列表
    - /path/to/folder1
    - /path/to/folder2
  blacklist:           # 扫描黑名单(不包含的文件或目录)
    - /path/to/exclude
  scan_interval: 3600  # 扫描间隔时间(秒)

2. Dify 配置 (dify_config)

dify_config:
  api_key: "your_api_key"        # Dify API密钥
  base_url: "https://api.dify.ai"  # Dify服务基础URL
  knowledge_base_mapping:        # 文件路径与知识库ID的映射关系
    "/path/to/folder1": "kb_id_1"
    "/path/to/folder2": "kb_id_2"

3. MySQL 配置 (mysql_config)

mysql_config:
  host: "localhost"      # 数据库主机
  port: 3306             # 数据库端口
  user: "root"           # 数据库用户名
  password: "password"   # 数据库密码
  database: "knowledge_db"  # 数据库名称

4. 日志配置 (log_config)

log_config:
  log_dir: "./logs"       # 日志目录
  log_level: "INFO"       # 日志级别(DEBUG, INFO, WARNING, ERROR)
  alert_config:           # 告警配置
    enabled: false        # 是否启用告警
    email:                # 邮件配置
      recipients: []      # 收件人列表
      smtp_server: ""     # SMTP服务器
      smtp_port: 0        # SMTP端口
      username: ""        # SMTP用户名
      password: ""        # SMTP密码

使用方法

1. 基本使用

确保已安装所需依赖,然后直接运行主程序:

cd /home/root01/Local_Knowledge_Base
python main.py

2. 单独运行各模块

  • 文件更新检测

    python update_knowledge.py
  • Dify API 操作

    python update_dify.py

命令行参数

系统支持通过命令行参数覆盖配置文件中的设置,格式为 --配置项 新值。例如:

常用命令行参数


```bash
# 修改扫描路径
python main.py --scan_paths "/path/to/new/folder" "/another/path"

# 修改 Dify API 密钥
python main.py --dify_api_key "new_api_key"

# 修改 MySQL 数据库信息
python main.py --mysql_database "new_db_name" --mysql_password "new_password"

# 修改日志级别
python main.py --log_level "DEBUG"

完整参数列表

  • --scan_paths:扫描路径列表(多个路径用空格分隔)
  • --blacklist:黑名单路径
  • --scan_interval:扫描间隔(秒)
  • --dify_api_key:Dify API 密钥
  • --dify_base_url:Dify 基础 URL
  • --mysql_host:MySQL 主机
  • --mysql_port:MySQL 端口
  • --mysql_user:MySQL 用户名
  • --mysql_password:MySQL 密码
  • --mysql_database:MySQL 数据库名
  • --log_dir:日志目录
  • --log_level:日志级别

日志系统

系统日志存储在 ./logs/ 目录下,包括:

  • main.log:主程序运行日志
  • update_knowledge.log:文件更新检测日志
  • update_dify.log:Dify API 操作日志
  • file_scan.log:文件扫描日志
  • cron_job.log:定时任务执行日志

可以通过修改 log_level 配置来调整日志详细程度:

  • DEBUG:最详细的日志,包含所有调试信息
  • INFO:标准日志,记录正常运行信息
  • WARNING:仅记录警告和错误信息
  • ERROR:仅记录错误信息

工作流程

  1. 配置加载:系统启动时从 config.yaml 加载默认配置,并应用命令行参数中的覆盖设置
  2. 文件扫描:根据配置的路径扫描本地文件系统
  3. 数据库同步:将扫描结果与数据库中的记录进行比对
  4. 文件处理
    • 新增文件:上传到 Dify 知识库
    • 修改文件:更新 Dify 知识库中的对应文件
    • 删除文件:从 Dify 知识库中删除对应文件
  5. 错误处理:自动重试上传失败的文件,并记录详细错误信息

定时任务设置

如需设置定时执行,可以使用 Linux 的 cron 服务:

# 编辑 crontab 配置
crontab -e

# 添加每天凌晨 2 点执行的任务
0 2 * * * cd /home/root01/Local_Knowledge_Base && python main.py >> ./logs/cron_job.log 2>&1

常见问题排查

  1. 文件无法上传:检查 Dify API 密钥和知识库 ID 是否正确
  2. 数据库连接失败:验证 MySQL 配置是否正确,确保数据库服务正常运行
  3. 日志文件过大:可以调整日志级别或定期清理日志文件
  4. 扫描效率低:减少扫描路径或增加扫描间隔时间

注意事项

  1. 请妥善保管配置文件中的 API 密钥和数据库密码等敏感信息
  2. 首次运行前,请确保已创建对应的数据库和表
  3. 对于大量文件的场景,建议适当增加扫描间隔时间以减少系统资源占用
  4. 定期备份数据库以防数据丢失

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages