agentic_huge_data_base / wiki
页面 RAGFlow · 7.4 数据集与知识库 API·DeepWiki 中文全文译文

7.4 · 数据集与知识库 API(Dataset and Knowledge Base APIs)

复杂文档理解与引用检索 · 聚焦本章的模块关系、源码依据与实现要点。

项目RAGFlow 章节7.4 状态全文译文 模块测试、发布与运维、检索、召回与索引、界面与交互、入库与解析
源码线索
  • api/apps/backward_compat.py
  • api/apps/restful_apis/chunk_api.py
  • api/apps/restful_apis/dataset_api.py
  • api/apps/sdk/dify_retrieval.py
  • api/apps/sdk/doc.py
  • api/apps/sdk/session.py
  • api/apps/services/dataset_api_service.py
  • api/db/joint_services/tenant_model_service.py
  • api/utils/validation_utils.py
  • docs/references/http_api_reference.md
模块标签
  • 测试、发布与运维
  • 检索、召回与索引
  • 界面与交互
  • 入库与解析
  • 图谱与关系

章节正文

数据集与知识库 API

数据集与知识库 API

相关源文件

本章引用的主要源码文件:

  • api/apps/backward_compat.py
  • api/apps/restful_apis/chunk_api.py
  • api/apps/restful_apis/dataset_api.py
  • api/apps/sdk/dify_retrieval.py
  • api/apps/sdk/doc.py
  • api/apps/sdk/session.py
  • api/apps/services/dataset_api_service.py
  • api/db/joint_services/tenant_model_service.py
  • api/utils/validation_utils.py
  • docs/references/http_api_reference.md
  • docs/references/python_api_reference.md
  • docs/release_notes.md
  • sdk/python/ragflow_sdk/modules/__init__.py
  • sdk/python/ragflow_sdk/modules/agent.py
  • sdk/python/ragflow_sdk/modules/base.py
  • sdk/python/ragflow_sdk/modules/chat.py
  • sdk/python/ragflow_sdk/modules/chunk.py
  • sdk/python/ragflow_sdk/modules/dataset.py
  • sdk/python/ragflow_sdk/modules/document.py
  • sdk/python/ragflow_sdk/modules/session.py
  • sdk/python/ragflow_sdk/ragflow.py
  • test/testcases/test_http_api/common.py
  • test/testcases/test_http_api/test_dataset_management/test_create_dataset.py
  • test/testcases/test_http_api/test_dataset_management/test_delete_datasets.py
  • test/testcases/test_http_api/test_dataset_management/test_dify_retrieval_routes_unit.py
  • test/testcases/test_http_api/test_dataset_management/test_knowledge_graph.py
  • test/testcases/test_http_api/test_dataset_management/test_list_datasets.py
  • test/testcases/test_http_api/test_dataset_management/test_update_dataset.py
  • test/testcases/test_http_api/test_file_management_within_dataset/test_doc_sdk_routes_unit.py
  • test/testcases/test_http_api/test_file_management_within_dataset/test_update_document.py
  • test/testcases/test_sdk_api/test_dataset_mangement/test_create_dataset.py
  • test/testcases/test_sdk_api/test_dataset_mangement/test_delete_datasets.py
  • test/testcases/test_sdk_api/test_dataset_mangement/test_list_datasets.py
  • test/testcases/test_sdk_api/test_dataset_mangement/test_update_dataset.py
  • test/testcases/test_sdk_api/test_file_management_within_dataset/test_update_document.py
  • test/testcases/test_web_api/test_chunk_app/test_chunk_routes_unit.py
  • test/testcases/test_web_api/test_dataset_management/test_dataset_sdk_routes_unit.py
  • web/src/components/knowledge-base-item.tsx
  • web/src/components/ui/multi-select.tsx
  • web/src/hooks/use-knowledge-request.ts
  • web/src/interfaces/request/knowledge.ts
  • web/src/less/mixins.less
  • web/src/pages/dataset/components/metedata/hooks/use-manage-modal.ts
  • web/src/pages/dataset/components/metedata/hooks/use-manage-values-modal.ts
  • web/src/pages/dataset/components/metedata/interface.ts
  • web/src/pages/dataset/components/metedata/manage-modal-column.tsx
  • web/src/pages/dataset/components/metedata/manage-modal.tsx
  • web/src/pages/dataset/components/metedata/manage-values-modal.tsx
  • web/src/pages/dataset/dataset/dataset-table.tsx
  • web/src/pages/dataset/dataset/generate-button/hook.ts
  • web/src/pages/dataset/dataset/hooks.ts
  • web/src/pages/dataset/dataset/index.tsx
  • web/src/pages/dataset/dataset/parsing-status-cell.tsx
  • web/src/pages/dataset/dataset/use-bulk-operate-dataset.tsx
  • web/src/pages/dataset/dataset/use-dataset-table-columns.tsx
  • web/src/pages/dataset/index.tsx
  • web/src/pages/dataset/sidebar/index.tsx
  • web/src/pages/dataset/testing/index.tsx
  • web/src/pages/dataset/testing/testing-form.tsx
  • web/src/pages/dataset/testing/testing-result.tsx

目的与范围

本文档记录了 RAGFlow 中用于创建、配置和管理数据集(也称为知识库)的 REST API 端点及底层服务架构。数据集作为文档的逻辑容器,定义了关键的处理参数,包括解析策略、嵌入向量模型和访问权限。

有关数据集内的文档上传和管理,请参阅文档与文件管理 API。有关聊天操作期间的数据检索,请参阅聊天与会话 API

数据集资源模型

RAGFlow 中的数据集由 api/db/db_models.py 中定义的 Knowledgebase 模型表示。它封装了以下技术属性:

  • 标识:唯一 ID、名称、描述和头像 api/db/db_models.py:595-605
  • 解析配置parser_id(片段切分方法)和方法特定的 parser_config 设置 api/db/db_models.py:611-615
  • 嵌入向量模型:用于向量化文档片段的特定模型(embd_idapi/db/db_models.py:610-610
  • 访问控制:权限级别(meteamapi/db/db_models.py:616-616
  • 统计信息:反规范化的计数器,包括文档数、片段数和 Token 数 api/db/db_models.py:618-621
  • 高级功能:RAPTOR、GraphRAG 和 PageIndex(原 ToC)的设置 docs/release_notes.md:108-110api/db/db_models.py:623-625
数据集-文档-片段关系

标题:"数据集层级与存储映射"

RAGFlow · 数据集-文档-片段关系 · 图 1
RAGFlow · 数据集-文档-片段关系 · 图 1

来源: api/db/db_models.py:595-754api/db/services/knowledgebase_service.py:32-48api/db/services/document_service.py:45-76

核心数据集操作

创建数据集

端点: POST /api/v1/datasets

创建一个新的数据集。请求通过 api/apps/services/dataset_api_service.py 中的 create_dataset 处理,该函数负责元数据配置和嵌入向量模型验证 api/apps/services/dataset_api_service.py:54-107

标题:"数据集创建流程"

RAGFlow · 创建数据集 · 图 2
RAGFlow · 创建数据集 · 图 2

关键参数:

参数类型必填描述
name字符串唯一的数据集名称(最多 128 个字符)docs/references/python_api_reference.md:142-147
embedding_model字符串格式:model_name@factory docs/references/python_api_reference.md:131-131
permission枚举"me"(默认)或 "team" docs/references/python_api_reference.md:160-163
chunk_method枚举解析器类型(例如 naiveqamanualdocs/references/python_api_reference.md:165-180
parser_config对象方法特定的配置 docs/references/python_api_reference.md:181-209
auto_metadata_config对象基于大语言模型(LLM)的自动元数据提取配置 api/apps/services/dataset_api_service.py:66-82

来源: docs/references/http_api_reference.md:440-643sdk/python/ragflow_sdk/ragflow.py:56-84api/apps/services/dataset_api_service.py:54-107

列出和删除数据集

端点: GET /api/v1/datasetsDELETE /api/v1/datasets

删除过程由服务层的 delete_datasets 处理,该函数会从数据库和文档存储(Elasticsearch/Infinity)中级联删除关联的文档 api/apps/services/dataset_api_service.py:110-174

来源: api/apps/services/dataset_api_service.py:110-174sdk/python/ragflow_sdk/ragflow.py:86-116

解析器与任务管理

解析器选择工厂

系统支持多种片段切分方法。支持的方法包括 naiveqatablepaperbooklawspresentationpictureoneemailknowledge-graph docs/references/python_api_reference.md:165-209

知识库增强任务

高级知识库功能通过 TaskService 触发后台任务。

  • GraphRAG:用于基于图的检索的实体和关系提取 api/apps/services/dataset_api_service.py:36-37
  • RAPTOR:用于层级摘要的递归抽象处理 api/apps/services/dataset_api_service.py:38-38
  • 思维导图:可视化知识结构 api/apps/services/dataset_api_service.py:39-39

api/db/services/document_service.py 中的 queue_raptor_o_graphrag_tasks 函数负责将这些专门任务加入队列 api/apps/services/dataset_api_service.py:23-23

检索与搜索接口

检索系统支持跨数据集的基于元数据的过滤。SDK 中的 retrieve 方法允许用户使用特定的相似度权重和元数据条件同时查询多个数据集 sdk/python/ragflow_sdk/ragflow.py:187-203

标题:"检索逻辑流程"

RAGFlow · 检索与搜索接口 · 图 3
RAGFlow · 检索与搜索接口 · 图 3

元数据过滤逻辑: 检索结果可以使用请求体中的 metadata_condition 进行缩小。系统使用 meta_filterconvert_conditions 应用过滤器 api/apps/sdk/dify_retrieval.py:31-31DocMetadataService 管理用于在搜索引擎执行前缩小文档 ID 范围的元数据 api/apps/sdk/dify_retrieval.py:27-27

来源: sdk/python/ragflow_sdk/ragflow.py:187-203api/apps/sdk/dify_retrieval.py:110-185api/db/services/doc_metadata_service.py:21-21

实现参考

关键服务类
角色文件
KnowledgebaseService数据集的 CRUD 和权限逻辑api/db/services/knowledgebase_service.py
DocumentService文档记录和状态的管理api/db/services/document_service.py
DocMetadataService元数据持久化和批量更新api/db/services/doc_metadata_service.py
TaskService解析/索引任务的生命周期管理api/db/services/task_service.py
File2DocumentService原始文件与文档实体之间的映射api/db/services/file2document_service.py

来源: api/db/services/knowledgebase_service.py:32-48api/db/services/document_service.py:45-46api/db/services/doc_metadata_service.py:21-21api/db/services/task_service.py:28-28api/db/services/file2document_service.py:25-25