从 v0.17.2 到 v0.25.6,RAGFlow 的数据库经历了重大扩展:
🏗️ 架构层面:
(tenant_id, llm_factory, llm_name) 迁移到自增整数主键 id,所有关联表新增 tenant_*_id 外键字段evaluation_datasets → evaluation_cases → evaluation_runs → evaluation_resultsconnector + connector2kb + sync_logs 数据源管理memory 表支持多种记忆类型📐 字段类型变更:
File.size / Document.size:IntegerField → BigIntegerFieldTenantLLM.api_key:CharField(1024) → TextFieldCanvasTemplate.title / description:TextField → JSONField(多语言)User.email:新增 UNIQUE 约束Document.process_duation / Task.process_duation → process_duration(拼写修正)| # | 表名 | v0.17.2 | v0.25.6 | 变更类型 |
|---|---|---|---|---|
| 1 | user | ✅ | ✅ | 结构变更 |
| 2 | tenant | ✅ | ✅ | 结构变更 |
| 3 | user_tenant | ✅ | ✅ | 未变更 |
| 4 | invitation_code | ✅ | ✅ | 未变更 |
| 5 | llm_factories | ✅ | ✅ | 结构变更 |
| 6 | llm | ✅ | ✅ | 结构变更 |
| 7 | tenant_llm | ✅ | ✅ | 结构变更(主键重构) |
| 8 | tenant_langfuse | ❌ | ✅ | 新增 |
| 9 | knowledgebase | ✅ | ✅ | 结构变更 |
| 10 | document | ✅ | ✅ | 结构变更 |
| 11 | file | ✅ | ✅ | 结构变更 |
| 12 | file2document | ✅ | ✅ | 未变更 |
| 13 | task | ✅ | ✅ | 结构变更 |
| 14 | dialog | ✅ | ✅ | 结构变更 |
| 15 | conversation | ✅ | ✅ | 未变更 |
| 16 | api_token | ✅ | ✅ | 未变更 |
| 17 | api_4_conversation | ✅ | ✅ | 结构变更 |
| 18 | user_canvas | ✅ | ✅ | 结构变更 |
| 19 | canvas_template | ✅ | ✅ | 结构变更 |
| 20 | user_canvas_version | ❌ | ✅ | 新增 |
| 21 | mcp_server | ❌ | ✅ | 新增 |
| 22 | search | ❌ | ✅ | 新增 |
| 23 | pipeline_operation_log | ❌ | ✅ | 新增 |
| 24 | connector | ❌ | ✅ | 新增 |
| 25 | connector2kb | ❌ | ✅ | 新增 |
| 26 | sync_logs | ❌ | ✅ | 新增 |
| 27 | evaluation_datasets | ❌ | ✅ | 新增 |
| 28 | evaluation_cases | ❌ | ✅ | 新增 |
| 29 | evaluation_runs | ❌ | ✅ | 新增 |
| 30 | evaluation_results | ❌ | ✅ | 新增 |
| 31 | memory | ❌ | ✅ | 新增 |
| 32 | system_settings | ❌ | ✅ | 新增 |
共 18 张表。核心实体:User → UserTenant → Tenant → Knowledgebase → Document → Task
共 32 张表。绿色标注为新增表,黄色标注为结构变更表。
| 表名 | 用途 | 字段数 | 关联关系 |
|---|---|---|---|
| tenant_langfuse | Langfuse 可观测性集成配置 | 6 | tenant_id → tenant.id |
| user_canvas_version | Agent Canvas 版本管理 | 8 | user_canvas_id → user_canvas.id |
| mcp_server | MCP (Model Context Protocol) 服务配置 | 10 | tenant_id → tenant.id |
| search | 独立搜索配置(跨 KB 搜索) | 10 | tenant_id → tenant.id |
| pipeline_operation_log | Pipeline 文档处理操作日志 | 21 | tenant_id, kb_id, document_id, pipeline_id |
| connector | 外部数据源连接器 | 12 | tenant_id → tenant.id |
| connector2kb | 连接器与知识库多对多关联 | 5 | connector_id, kb_id |
| sync_logs | 连接器同步日志 | 17 | connector_id, kb_id |
| evaluation_datasets | RAG 评估数据集(Ground Truth) | 9 | tenant_id → tenant.id |
| evaluation_cases | 评估测试用例 | 8 | dataset_id → evaluation_datasets.id |
| evaluation_runs | 评估运行记录 | 9 | dataset_id, dialog_id |
| evaluation_results | 单个用例的评估结果 | 8 | run_id, case_id |
| memory | Agent 记忆存储(支持多种记忆类型) | 20 | tenant_id → tenant.id |
| system_settings | 系统级配置键值存储 | 5 | — |
以下列出所有发生字段变更的表。🟢 = 新增字段,🟡 = 修改字段
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 修改 | CharField(255), index=True | CharField(255), unique=True | 从普通索引升级为 UNIQUE 约束 | |
| 修改 | 基类 | UserMixin | AuthUser | 从 Flask-Login 迁移到 Quart-Auth |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | tenant_llm_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 Chat 模型) |
| 新增 | tenant_embd_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 Embedding 模型) |
| 新增 | tenant_asr_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 ASR 模型) |
| 新增 | tenant_img2txt_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 Image2Text 模型) |
| 新增 | tenant_rerank_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 Rerank 模型) |
| 新增 | tenant_tts_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id(默认 TTS 模型) |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | rank | IntegerField | 0 | 排序权重 |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | is_tools | BooleanField | False | 标记模型是否支持 Function Calling / Tools |
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 新增 | id | — | PrimaryKeyField (auto-inc) | 新增自增主键,替代原复合主键 |
| 修改 | api_key | CharField(1024) | TextField | API Key 长度不再受限 |
| 新增 | status | — | CharField(1), default="1" | 启用/禁用状态 |
| 修改 | 主键 | CompositeKey(tenant_id, llm_factory, llm_name) | PrimaryKeyField(id) + UNIQUE(tenant_id, llm_factory, llm_name) | 主键从复合键变为自增 ID |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | tenant_embd_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id |
| 新增 | pipeline_id | CharField(32), index | NULL | 关联 Pipeline |
| 新增 | graphrag_task_id | CharField(32), index | NULL | Graph RAG 任务 ID |
| 新增 | graphrag_task_finish_at | DateTimeField | NULL | Graph RAG 完成时间 |
| 新增 | raptor_task_id | CharField(32), index | NULL | RAPTOR 任务 ID |
| 新增 | raptor_task_finish_at | DateTimeField | NULL | RAPTOR 完成时间 |
| 新增 | mindmap_task_id | CharField(32), index | NULL | Mindmap 任务 ID |
| 新增 | mindmap_task_finish_at | DateTimeField | NULL | Mindmap 完成时间 |
| 修改 | parser_config | {"pages": [[1, 1000000]]} | 追加 table_context_size, image_context_size | 新增上下文窗口配置 |
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 新增 | pipeline_id | — | CharField(32), index | 关联 Pipeline |
| 新增 | suffix | — | CharField(32), index | 真实文件后缀 |
| 新增 | content_hash | — | CharField(32), index | xxhash128 内容哈希 |
| 修改 | size | IntegerField | BigIntegerField | 支持 >2GB 文件 |
| 修改 | process_duation | FloatField | → process_duration | 拼写修正 |
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 修改 | size | IntegerField | BigIntegerField | 支持 >2GB 文件 |
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 新增 | priority | — | IntegerField, default=0 | 任务优先级 |
| 修改 | process_duation | FloatField | → process_duration | 拼写修正 |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | tenant_llm_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id |
| 新增 | tenant_rerank_id | IntegerField, nullable, index | NULL | 指向 tenant_llm.id |
| 新增 | meta_data_filter | JSONField | {} | 元数据过滤 |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | name | CharField(255), nullable | NULL | 会话名称 |
| 新增 | exp_user_id | CharField(255), nullable, index | NULL | 对外用户 ID |
| 新增 | errors | TextField, nullable | NULL | 错误信息 |
| 新增 | version_title | CharField(255), nullable | NULL | Canvas 版本记录 |
| 变更 | 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| 新增 | permission | CharField(16), index | "me" | 权限: me|team |
| 新增 | release | BooleanField, index | False | 已发布 |
| 新增 | canvas_category | CharField(32), index | "agent_canvas" | 分类 |
| 新增 | tags | CharField(512), index | "" | 标签 |
| 变更 | 字段 | v0.17.2 | v0.25.6 | 说明 |
|---|---|---|---|---|
| 修改 | title | CharField(255) | JSONField(多语言) | 支持 {"en":"...","zh":"..."} |
| 修改 | description | TextField | JSONField(多语言) | 支持多语言 |
| 新增 | canvas_types | — | ListField | 多类型标签 |
| 新增 | canvas_category | — | CharField(32), index | 分类 |
以下列出 v0.25.6 中所有新增表的完整字段定义。
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| tenant_id | CharField(32) | PK FK→tenant | 租户 ID |
| secret_key | CharField(2048) | NOT NULL, IDX | Langfuse Secret Key |
| public_key | CharField(2048) | NOT NULL, IDX | Langfuse Public Key |
| host | CharField(128) | NOT NULL, IDX | Langfuse 服务地址 |
| create_time / create_date / update_time / update_date | — | 继承 BaseModel | 时间戳 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 版本 ID |
| user_canvas_id | CharField(255) | FK→user_canvas IDX | 所属画布 |
| title | CharField(255) | nullable | 版本标题 |
| description | TextField | nullable | 版本描述 |
| release | BooleanField | IDX, default=False | 是否发布 |
| dsl | JSONField | default={} | 画布 DSL |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | MCP 服务 ID |
| name | CharField(255) | NOT NULL | 服务名称 |
| tenant_id | CharField(32) | FK→tenant IDX | 所属租户 |
| url | CharField(2048) | NOT NULL | MCP Server URL |
| server_type | CharField(32) | NOT NULL | 服务类型 |
| description | TextField | nullable | 描述 |
| variables | JSONField | default={} | 环境变量 |
| headers | JSONField | default={} | 自定义请求头 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 搜索配置 ID |
| tenant_id | CharField(32) | FK→tenant IDX | 所属租户 |
| name | CharField(128) | IDX | 搜索名称 |
| created_by | CharField(32) | IDX | 创建者 |
| search_config | JSONField | — | 搜索配置 |
| status | CharField(1) | default="1" | 状态 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 日志 ID |
| document_id | CharField(32) | IDX | 文档 ID |
| tenant_id | CharField(32) | IDX | 租户 ID |
| kb_id | CharField(32) | IDX | 知识库 ID |
| pipeline_id | CharField(32) | IDX | Pipeline ID |
| pipeline_title | CharField(32) | — | Pipeline 标题 |
| parser_id | CharField(32) | IDX | Parser ID |
| document_name | CharField(255) | — | 文件名 |
| document_suffix | CharField(255) | — | 文件后缀 |
| document_type | CharField(255) | — | 文档类型 |
| source_from | CharField(255) | — | 来源 |
| progress / progress_msg / process_begin_at / process_duration | — | — | 处理进度 |
| dsl | JSONField | — | Pipeline DSL |
| task_type | CharField(32) | — | 任务类型 |
| operation_status | CharField(32) | — | 操作状态 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 连接器 ID |
| tenant_id | CharField(32) | FK→tenant IDX | 所属租户 |
| name | CharField(128) | NOT NULL | 连接器名称 |
| source | CharField(128) | IDX | 数据源类型 |
| input_type | CharField(128) | IDX | 输入方式 |
| config | JSONField | default={} | 连接器配置 |
| refresh_freq | IntegerField | default=0 | 刷新频率 |
| prune_freq | IntegerField | default=0 | 清理频率 |
| timeout_secs | IntegerField | default=3600 | 超时 |
| indexing_start | DateTimeField | nullable | 索引开始时间 |
| status | CharField(16) | default="schedule" | 调度状态 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 数据集 ID |
| tenant_id | CharField(32) | FK→tenant IDX | 所属租户 |
| name | CharField(255) | IDX | 数据集名称 |
| description | TextField | nullable | 描述 |
| kb_ids | JSONField | — | 评估目标知识库 |
| created_by | CharField(32) | IDX | 创建者 |
| status | IntegerField | default=1 | 1=有效, 0=无效 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | CharField(32) | PK | 记忆 ID |
| name | CharField(128) | NOT NULL | 记忆名称 |
| tenant_id | CharField(32) | FK→tenant IDX | 所属租户 |
| memory_type | IntegerField | IDX, default=1 | 位标志: 1=raw, 2=semantic, 4=episodic, 8=procedural |
| storage_type | CharField(32) | IDX, default="table" | 存储方式: table|graph |
| embd_id | CharField(128) | — | Embedding 模型 |
| llm_id | CharField(128) | — | Chat 模型 |
| permissions | CharField(16) | IDX, default="me" | 权限 |
| memory_size | IntegerField | default=5242880 | 最大记忆大小 |
| forgetting_policy | CharField(32) | default="FIFO" | 遗忘策略 |
| temperature | FloatField | default=0.5 | 检索温度 |
| system_prompt / user_prompt | TextField | nullable | Prompt 模板 |
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
| name | CharField(128) | PK | 配置键名 |
| source | CharField(32) | — | 配置来源 |
| data_type | CharField(32) | — | 数据类型 |
| value | TextField | NOT NULL | 配置值 |