Skip to content

A CLI tool for RAGFlow datasets with knowledge graph support. Create, update, query, and delete datasets with various chunking methods. Features 90+ entity types for text analysis. Configure via CLI or JSON files with customizable embedding models and chunking parameters

Notifications You must be signed in to change notification settings

MarcusYuan/ragflow_dataset_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

RAGFlow 数据集管理工具

这是一个用于管理RAGFlow数据集的命令行工具,支持创建、更新、删除、查询和列出数据集。

功能特点

  • 列出所有数据集
  • 获取数据集详细信息
  • 创建新数据集
  • 更新现有数据集
  • 删除数据集
  • 支持多种分块方法(naive, qa, table, knowledge_graph等)
  • 支持自定义解析器配置
  • 支持从JSON文件加载配置

安装

确保已安装Python 3.6+和requests库:

pip install requests

使用方法

列出所有数据集

python ragflow_dataset_manager.py list

获取数据集详情

python ragflow_dataset_manager.py get --dataset_id <数据集ID>

创建数据集

基本用法:

python ragflow_dataset_manager.py create --name "数据集名称" --embedding_model "嵌入模型名称" --chunk_method naive --use_default_config

使用自定义配置:

python ragflow_dataset_manager.py create --name "数据集名称" --embedding_model "嵌入模型名称" --chunk_method naive --chunk_token_num 256 --auto_keywords 1

使用配置文件:

python ragflow_dataset_manager.py create --name "数据集名称" --embedding_model "嵌入模型名称" --chunk_method naive --config_file config.json

创建知识图谱数据集:

python ragflow_dataset_manager.py create --name "知识图谱数据集" --embedding_model "嵌入模型名称" --chunk_method knowledge_graph --entity_types "人物,地点,事件" --graphrag_method custom

更新数据集

基本用法:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --name "新名称" --description "新描述"

更新分块方法:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --chunk_method qa --use_default_config

使用配置文件更新:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --config_file config.json --chunk_method qa

删除数据集

python ragflow_dataset_manager.py delete --dataset_id <数据集ID> --confirm

配置文件格式

配置文件应为JSON格式,例如:

{
  "chunk_token_num": 512,
  "delimiter": "\\n!?;。;!?",
  "auto_keywords": 1
}

对于知识图谱数据集,可以使用如下配置:

{
  "chunk_token_num": 512,
  "delimiter": "\\n!?;。;!?",
  "graphrag": {
    "method": "custom",
    "resolution": true,
    "community": true,
    "entity_types": ["人物", "地点", "事件", "时间"],
    "use_graphrag": true
  },
  "auto_keywords": 1,
  "auto_questions": 1,
  "layout_recognize": "DeepDOC"
}

小说知识图谱配置示例

以下是一个针对小说文本的详细知识图谱配置示例,包含了丰富的实体类型:

{
  "chunk_token_num": 512,
  "delimiter": "\\n!?;。;!?",
  "graphrag": {
    "method": "custom",
    "resolution": true,
    "community": true,
    "entity_types": [
      "人物名称", "人物性别", "人物年龄", "人物身份", "人物外貌", "人物职业", "人物关系", 
      "人物职务职称", "时代背景", "具体年代", "具体日期", "季节时节", "关键时刻", "地理位置", 
      "具体地点", "场景环境", "建筑场所", "自然环境", "天气气候", "事件名称", "事件时间", 
      "事件地点", "事件顺序", "事件起因", "事件过程", "事件结果", "事件影响", "历史事件", 
      "故事主题", "故事类型", "叙事视角", "故事线索", "章节信息", "情节走向", "情节转折", 
      "矛盾冲突", "悬念设置", "高潮情节", "结局类型", "关键道具", "场景物品", "标志性物品", 
      "服饰装扮", "生活用品", "饮食物品", "组织机构", "团体势力", "家族宗派", "帮派门派", 
      "性格特征", "心理变化", "行为动机", "语言特点", "成长轨迹", "个人魅力", "性格缺陷", 
      "处世态度", "生活哲学", "教育背景", "语言方言", "社会风貌", "文化习俗", "民族特色", 
      "地域文化", "声音描写", "气味描写", "光线描写", "情绪氛围", "权力关系", "阶层差异", 
      "文化冲突", "家庭关系", "亲情关系", "友情表现", "爱情描写", "情感类型", "价值观念", 
      "道德伦理", "社会议题", "人性探讨", "理想追求", "命运抉择", "身份认同", "信仰立场", 
      "生活状态", "心理创伤", "成功经历", "失败经历", "思想转变", "重要抉择"
    ],
    "use_graphrag": true
  },
  "auto_keywords": 1,
  "auto_questions": 1,
  "layout_recognize": "DeepDOC"
}

这个配置适用于小说文本分析,能够识别和提取各种人物、时间、地点、事件、情节等实体,构建丰富的知识图谱。

选项说明

通用选项

  • --api_url: API URL,默认为预设值
  • --api_key: API Key,默认为预设值

创建/更新数据集选项

  • --name: 数据集名称
  • --embedding_model: 嵌入模型名称
  • --chunk_method: 分块方法,可选值:naive, qa, table, knowledge_graph
  • --parser_config: 解析器配置(JSON格式)
  • --config_file: 从JSON文件加载解析器配置
  • --use_default_config: 使用默认配置
  • --description: 数据集描述
  • --permission: 数据集权限,可选值:me(仅自己), team(团队)
  • --language: 数据集语言,可选值:English, Chinese
  • --similarity_threshold: 相似度阈值(0.0-1.0)
  • --pagerank: 页面排名权重(0.0-1.0)
  • --vector_similarity_weight: 向量相似度权重(0.0-1.0)

特定分块方式的配置选项

  • --chunk_token_num: 分块令牌数量
  • --delimiter: 分隔符
  • --layout_recognize: 布局识别方式,可选值:DeepDOC, None
  • --html4excel: 是否使用HTML处理Excel
  • --auto_questions: 是否自动生成问题,可选值:0(否), 1(是)
  • --auto_keywords: 是否自动生成关键词,可选值:0(否), 1(是)

知识图谱特定选项

  • --graphrag_method: 知识图谱方法,可选值:general, custom
  • --graphrag_resolution: 是否启用解析
  • --graphrag_community: 是否启用社区
  • --entity_types: 实体类型列表,用逗号分隔

知识图谱实体类型分类

知识图谱实体类型可以根据不同领域和需求进行定制,以下是常见的分类:

  1. 人物相关:人物名称、人物性别、人物年龄、人物身份、人物外貌、人物职业、人物关系、人物职务职称等
  2. 时间相关:时代背景、具体年代、具体日期、季节时节、关键时刻等
  3. 地点相关:地理位置、具体地点、场景环境、建筑场所、自然环境、天气气候等
  4. 事件相关:事件名称、事件时间、事件地点、事件顺序、事件起因、事件过程、事件结果、事件影响、历史事件等
  5. 故事相关:故事主题、故事类型、叙事视角、故事线索、章节信息、情节走向、情节转折、矛盾冲突、悬念设置、高潮情节、结局类型等
  6. 物品相关:关键道具、场景物品、标志性物品、服饰装扮、生活用品、饮食物品等
  7. 组织相关:组织机构、团体势力、家族宗派、帮派门派等
  8. 描述相关:性格特征、心理变化、行为动机、语言特点、成长轨迹、个人魅力、性格缺陷、处世态度、生活哲学、教育背景、语言方言等
  9. 社会文化:社会风貌、文化习俗、民族特色、地域文化等
  10. 感官描写:声音描写、气味描写、光线描写、情绪氛围等
  11. 关系互动:权力关系、阶层差异、文化冲突、家庭关系、亲情关系、友情表现、爱情描写、情感类型等
  12. 思想观念:价值观念、道德伦理、社会议题、人性探讨、理想追求、命运抉择、身份认同、信仰立场等
  13. 经历状态:生活状态、心理创伤、成功经历、失败经历、思想转变、重要抉择等

不同切片方法的默认配置

使用--use_default_config参数时,会根据选择的分块方法自动生成相应的解析器配置:

通用切片 (naive)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "html4excel": false,
  "layout_recognize": "DeepDOC",
  "raptor": {"use_raptor": false}
}

问答切片 (qa)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "auto_questions": 1,
  "auto_keywords": 0,
  "layout_recognize": "DeepDOC"
}

表格切片 (table)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "html4excel": true,
  "layout_recognize": "DeepDOC"
}

知识图谱切片 (knowledge_graph)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "graphrag": {
    "use_graphrag": true,
    "method": "general",
    "resolution": true,
    "community": true,
    "entity_types": [
      "人物", "神仙", "猴类", "凡人", 
      "地点", "大洲", "国家", "山川", "洞府", 
      "物品", "自然物品", "食物", 
      "事件", "自然现象", "猴类活动", "神仙活动", 
      "概念", "时间概念", "宗教概念"
    ]
  }
}

论文切片 (paper)

{
  "chunk_token_num": 256,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC",
  "auto_keywords": 1
}

书籍切片 (book)

{
  "chunk_token_num": 512,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC",
  "auto_keywords": 1
}

法律文档切片 (laws)

{
  "chunk_token_num": 256,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC",
  "auto_keywords": 1
}

演示文稿切片 (presentation)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC",
  "html4excel": true
}

图片切片 (picture)

{
  "chunk_token_num": 128,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC"
}

单一切片 (one)

{
  "chunk_token_num": 1024,
  "delimiter": "\\n!?;。;!?"
}

邮件切片 (email)

{
  "chunk_token_num": 256,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC"
}

手动切片 (manual)

{
  "chunk_token_num": 256,
  "delimiter": "\\n!?;。;!?",
  "layout_recognize": "DeepDOC"
}

使用示例

创建数据集示例

创建一个使用默认配置的中文数据集:

python ragflow_dataset_manager.py create --name "测试数据集" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method naive --use_default_config --description "这是一个测试数据集" --permission team --language Chinese

创建一个问答切片数据集:

python ragflow_dataset_manager.py create --name "问答数据集" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method qa --use_default_config --description "这是一个问答数据集" --permission team --language Chinese

创建一个知识图谱数据集:

python ragflow_dataset_manager.py create --name "知识图谱数据集" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method knowledge_graph --use_default_config --description "这是一个知识图谱数据集" --permission team --language Chinese

创建一个自定义配置的数据集:

python ragflow_dataset_manager.py create --name "自定义数据集" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method naive --chunk_token_num 256 --auto_keywords 1 --description "这是一个自定义配置的数据集" --permission team --language Chinese

创建一个自定义知识图谱数据集:

python ragflow_dataset_manager.py create --name "自定义知识图谱" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method knowledge_graph --entity_types "人物,地点,事件,时间" --graphrag_method custom --description "这是一个自定义知识图谱数据集" --permission team --language Chinese

使用配置文件创建知识图谱数据集

使用配置文件创建详细的知识图谱数据集:

python ragflow_dataset_manager.py create --name "小说知识图谱" --embedding_model "BAAI/bge-large-zh-v1.5" --chunk_method knowledge_graph --config_file configs/knowledge_graph_config.json

更新数据集示例

更新数据集名称:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --name "新数据集名称"

更新数据集描述:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --description "新的数据集描述"

更新数据集语言:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --language Chinese

更新相似度阈值:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --similarity_threshold 0.3

更新页面排名权重:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --pagerank 0.5

更新向量相似度权重:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --vector_similarity_weight 0.7

更新分块方法:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --chunk_method manual --use_default_config

更新权限:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --permission team

更新特定分块配置:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --chunk_token_num 512 --auto_questions 1

更新知识图谱配置

使用配置文件更新知识图谱数据集:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --config_file configs/knowledge_graph_config.json --chunk_method knowledge_graph

更新知识图谱实体类型:

python ragflow_dataset_manager.py update --dataset_id <数据集ID> --entity_types "人物名称,人物性别,人物年龄,地理位置,具体地点,事件名称,事件时间,事件地点"

注意事项

  1. 默认API地址为 http://192.168.3.2:9380,可通过 --api_url 参数修改
  2. 默认API密钥为 ragflow-I0ZTg0YjljMDE0NjExZjA4ZWM4MDI0Mm,可通过 --api_key 参数修改
  3. 创建或更新数据集时,如果指定了 --use_default_config 参数,将根据分块方法自动生成默认的解析器配置
  4. 删除数据集操作不可逆,请谨慎操作
  5. 自定义parser_config时,请确保JSON格式正确,在命令行中使用时需要正确转义

About

A CLI tool for RAGFlow datasets with knowledge graph support. Create, update, query, and delete datasets with various chunking methods. Features 90+ entity types for text analysis. Configure via CLI or JSON files with customizable embedding models and chunking parameters

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages