RAGFlow 知识图谱 APIInteractive Reference v1.0

RAGFlow 知识图谱 API 参考手册

完整的 RAGFlow GraphRAG API 交互式文档,涵盖认证、数据集、文档、检索、对话及知识图谱构建全流程

RESTful API 可交互测试 GraphRAG 代码即用

API 测试器配置

请确保 RAGFlow 服务已启动且允许跨域访问 (CORS)。若遇到跨域问题,请检查服务端配置或使用浏览器插件临时禁用 CORS 限制。

认证与配置

API Key 管理与 Bearer Token 认证机制,所有 API 请求均需携带有效的 API Key

认证方式:RAGFlow 使用 Bearer Token 认证。在请求头中添加 Authorization: Bearer <your-api-key> 即可。API Key 可通过 RAGFlow Web 界面(系统设置 → API 密钥)获取,也可通过下方 API 创建。
POST/api/v1/tokens创建API密钥
请求参数
字段类型必填说明
namestring必填Token 名称,用于标识此 API 密钥
响应示例
JSON Response
{ "code": 0, "data": { "token": "ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "name": "my-api-key", "create_time": 1715000000 } }
cURL
curl -X POST "http://localhost:80/api/v1/tokens" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "my-api-key"}'
Python
import requests url = "http://localhost:80/api/v1/tokens" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "my-api-key"} response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/tokens列出API密钥
请求参数
字段类型必填说明
pageinteger可选页码,默认 1
page_sizeinteger可选每页数量,默认 30
响应示例
JSON Response
{ "code": 0, "data": [ { "token": "ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "name": "my-api-key", "create_time": 1715000000 } ] }
cURL
curl -X GET "http://localhost:80/api/v1/tokens?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests url = "http://localhost:80/api/v1/tokens" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
DELETE/api/v1/tokens/{token}删除API密钥
请求参数
字段类型必填说明
tokenstring必填要删除的 API 密钥 Token 值
响应示例
JSON Response
{ "code": 0 }
cURL
curl -X DELETE "http://localhost:80/api/v1/tokens/ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests token = "ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" url = f"http://localhost:80/api/v1/tokens/{token}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} response = requests.delete(url, headers=headers) print(response.json())

数据集管理

数据集是 RAGFlow 的核心容器,创建数据集时可配置 GraphRAG 参数以启用知识图谱功能

知识图谱关联:数据集是知识图谱的载体。创建数据集时通过 chunk_method 设置为 "graphrag",并配置 graphrag 参数即可启用知识图谱构建。解析文档后,系统将自动提取实体、关系并构建图谱。
POST/api/v1/datasets创建数据集
请求参数
字段类型必填说明
namestring必填数据集名称
chunk_methodstring可选分块方法,启用图谱设为 "graphrag"
graphrag.entity_typesarray可选实体类型列表,如 ["Organization","Person","Geo","Event","Category"]
graphrag.methodstring可选图谱构建方法:"light"(轻量)或 "general"(通用)
graphrag.communityboolean可选是否启用社区检测,默认 false
graphrag.resolutionboolean可选是否启用实体消解(合并相同实体),默认 false
embedding_modelstring可选Embedding 模型名称
permissionstring可选权限:"me" 或 "team"
响应示例
JSON Response
{ "code": 0, "data": { "id": "ds-abc123", "name": "knowledge-graph-ds", "chunk_method": "graphrag", "graphrag": { "entity_types": [ "Organization", "Person", "Geo", "Event", "Category" ], "method": "light", "community": false, "resolution": false } } }
cURL
curl -X POST "http://localhost:80/api/v1/datasets" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "knowledge-graph-ds", "chunk_method": "graphrag", "graphrag": {"entity_types": ["Organization", "Person", "Geo", "Event", "Category"], "method": "light", "community": false, "resolution": false}}'
Python
import requests url = "http://localhost:80/api/v1/datasets" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = { "name": "knowledge-graph-ds", "chunk_method": "graphrag", "graphrag": { "entity_types": ["Organization", "Person", "Geo", "Event", "Category"], "method": "light", "community": False, "resolution": False } } response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/datasets列出数据集
请求参数
字段类型必填说明
pageinteger可选页码,默认 1
page_sizeinteger可选每页数量,默认 30
orderbystring可选排序字段
descboolean可选是否降序
namestring可选按名称过滤
响应示例
JSON Response
{ "code": 0, "data": [ { "id": "ds-abc123", "name": "knowledge-graph-ds", "chunk_method": "graphrag", "document_count": 5, "chunk_num": 128 } ] }
cURL
curl -X GET "http://localhost:80/api/v1/datasets?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests url = "http://localhost:80/api/v1/datasets" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
PUT/api/v1/datasets/{dataset_id}更新数据集
请求参数
字段类型必填说明
dataset_idstring必填数据集 ID
namestring可选数据集名称
chunk_methodstring可选分块方法
graphragobject可选GraphRAG 配置(同创建接口)
embedding_modelstring可选Embedding 模型
响应示例
JSON Response
{ "code": 0, "data": { "id": "ds-abc123", "name": "updated-ds-name", "chunk_method": "graphrag" } }
cURL
curl -X PUT "http://localhost:80/api/v1/datasets/ds-abc123" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "updated-ds-name", "graphrag": {"community": true, "resolution": true}}'
Python
import requests dataset_id = "ds-abc123" url = f"http://localhost:80/api/v1/datasets/{dataset_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "updated-ds-name", "graphrag": {"community": True, "resolution": True}} response = requests.put(url, json=payload, headers=headers) print(response.json())
DELETE/api/v1/datasets删除数据集
请求参数
字段类型必填说明
idsarray必填要删除的数据集 ID 列表
响应示例
JSON Response
{ "code": 0 }
cURL
curl -X DELETE "http://localhost:80/api/v1/datasets" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"ids": ["ds-abc123", "ds-def456"]}'
Python
import requests url = "http://localhost:80/api/v1/datasets" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"ids": ["ds-abc123", "ds-def456"]} response = requests.delete(url, json=payload, headers=headers) print(response.json())

文档管理

上传、解析文档,触发知识图谱构建。文档解析是 GraphRAG 构建图谱的核心步骤

POST/api/v1/datasets/{dataset_id}/documents上传文档
请求参数
字段类型必填说明
dataset_idstring必填数据集 ID
filefile必填上传的文件(支持 PDF/DOCX/TXT/MD 等)
chunk_methodstring可选覆盖数据集的分块方法
响应示例
JSON Response
{ "code": 0, "data": [ { "id": "doc-xyz789", "name": "report.pdf", "dataset_id": "ds-abc123", "status": 0, "chunk_method": "graphrag" } ] }
cURL
curl -X POST "http://localhost:80/api/v1/datasets/ds-abc123/documents" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -F "file=@/path/to/report.pdf"
Python
import requests dataset_id = "ds-abc123" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} files = {"file": open("/path/to/report.pdf", "rb")} response = requests.post(url, headers=headers, files=files) print(response.json())
GET/api/v1/datasets/{dataset_id}/documents列出文档
请求参数
字段类型必填说明
dataset_idstring必填数据集 ID
pageinteger可选页码
page_sizeinteger可选每页数量
keywordsstring可选关键词搜索
响应示例
JSON Response
{ "code": 0, "data": [ { "id": "doc-xyz789", "name": "report.pdf", "status": 1, "progress": 100, "chunk_num": 42 } ] }
cURL
curl -X GET "http://localhost:80/api/v1/datasets/ds-abc123/documents?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests dataset_id = "ds-abc123" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
GET/api/v1/datasets/{dataset_id}/documents/{document_id}下载文档
请求参数
字段类型必填说明
dataset_idstring必填数据集 ID
document_idstring必填文档 ID
cURL
curl -X GET "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -o "downloaded_file.pdf"
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} response = requests.get(url, headers=headers) with open("downloaded_file.pdf", "wb") as f: f.write(response.content)
DELETE/api/v1/datasets/{dataset_id}/documents删除文档
请求参数
字段类型必填说明
idsarray必填要删除的文档 ID 列表
响应示例
JSON Response
{ "code": 0 }
cURL
curl -X DELETE "http://localhost:80/api/v1/datasets/ds-abc123/documents" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"ids": ["doc-xyz789"]}'
Python
import requests dataset_id = "ds-abc123" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"ids": ["doc-xyz789"]} response = requests.delete(url, json=payload, headers=headers) print(response.json())
POST/api/v1/datasets/{dataset_id}/documents/{document_id}/parse解析文档触发图谱构建
核心步骤:对于 GraphRAG 数据集,调用此 API 将触发文档解析并自动构建知识图谱,包括实体抽取、关系提取和图谱存储。
请求参数
字段类型必填说明
dataset_idstring必填数据集 ID
document_idstring必填文档 ID
响应示例
JSON Response
{ "code": 0, "data": { "id": "doc-xyz789", "status": 1, "progress": 0 } }
cURL
curl -X POST "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789/parse" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}/parse" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} response = requests.post(url, headers=headers) print(response.json())
POST/api/v1/datasets/{dataset_id}/chunks停止解析
请求参数
字段类型必填说明
document_idsarray必填要停止解析的文档 ID 列表
cURL
curl -X POST "http://localhost:80/api/v1/datasets/ds-abc123/chunks" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"document_ids": ["doc-xyz789"]}'
Python
import requests dataset_id = "ds-abc123" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/chunks" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"document_ids": ["doc-xyz789"]} response = requests.post(url, json=payload, headers=headers) print(response.json())

块管理

管理文档解析后生成的文本块,每个块可能关联图谱中的实体与关系

POST/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks添加块
请求参数
字段类型必填说明
contentstring必填块文本内容
important_keywordsarray可选关键关键词列表
questionstring可选与此块关联的问题
响应示例
JSON Response
{ "code": 0, "data": { "chunk_id": "chunk-aaa111", "content": "RAGFlow 是一个开源的 RAG 引擎...", "important_keywords": [ "RAGFlow", "RAG" ] } }
cURL
curl -X POST "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789/chunks" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"content": "RAGFlow 是一个开源的 RAG 引擎", "important_keywords": ["RAGFlow", "RAG"]}'
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"content": "RAGFlow 是一个开源的 RAG 引擎", "important_keywords": ["RAGFlow", "RAG"]} response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks列出块
请求参数
字段类型必填说明
pageinteger可选页码
page_sizeinteger可选每页数量
cURL
curl -X GET "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789/chunks?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
DELETE/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks删除块
请求参数
字段类型必填说明
chunk_idsarray必填要删除的块 ID 列表
cURL
curl -X DELETE "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789/chunks" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"chunk_ids": ["chunk-aaa111"]}'
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"chunk_ids": ["chunk-aaa111"]} response = requests.delete(url, json=payload, headers=headers) print(response.json())
PUT/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks/{chunk_id}更新块
请求参数
字段类型必填说明
contentstring可选更新块内容
important_keywordsarray可选更新关键词
questionstring可选更新关联问题
availableinteger可选是否启用:0 禁用,1 启用
cURL
curl -X PUT "http://localhost:80/api/v1/datasets/ds-abc123/documents/doc-xyz789/chunks/chunk-aaa111" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"content": "更新后的块内容", "important_keywords": ["RAGFlow", "GraphRAG"]}'
Python
import requests dataset_id = "ds-abc123" document_id = "doc-xyz789" chunk_id = "chunk-aaa111" url = f"http://localhost:80/api/v1/datasets/{dataset_id}/documents/{document_id}/chunks/{chunk_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"content": "更新后的块内容", "important_keywords": ["RAGFlow", "GraphRAG"]} response = requests.put(url, json=payload, headers=headers) print(response.json())

检索服务

支持向量检索与知识图谱混合检索,是 GraphRAG 的核心查询能力

混合检索:当数据集配置了 GraphRAG 时,检索 API 会同时利用向量相似度和图谱关系进行混合检索,通过 vector_similarity_weight 参数控制向量与图谱的权重比例。
POST/api/v1/retrieval检索相关块支持向量图谱混合检索
请求参数
字段类型必填说明
questionstring必填检索问题
dataset_idsarray必填数据集 ID 列表
document_idsarray可选限定文档 ID 列表
pageinteger可选页码,默认 1
page_sizeinteger可选每页数量,默认 30
similarity_thresholdfloat可选相似度阈值,默认 0.2
vector_similarity_weightfloat可选向量相似度权重 (0~1),图谱权重=1-此值
top_kinteger可选返回 Top K 结果,默认 1024
rerank_idstring可选Rerank 模型 ID
keywordboolean可选是否启用关键词检索
highlightboolean可选是否高亮匹配内容
响应示例
JSON Response
{ "code": 0, "data": { "chunks": [ { "chunk_id": "chunk-aaa111", "content": "RAGFlow 支持知识图谱构建...", "similarity": 0.85, "document_id": "doc-xyz789", "dataset_id": "ds-abc123" } ], "total": 15 } }
cURL
curl -X POST "http://localhost:80/api/v1/retrieval" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"question": "RAGFlow 如何构建知识图谱?", "dataset_ids": ["ds-abc123"], "page": 1, "page_size": 10, "similarity_threshold": 0.2, "vector_similarity_weight": 0.7, "top_k": 1024, "keyword": false, "highlight": true}'
Python
import requests url = "http://localhost:80/api/v1/retrieval" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = { "question": "RAGFlow 如何构建知识图谱?", "dataset_ids": ["ds-abc123"], "page": 1, "page_size": 10, "similarity_threshold": 0.2, "vector_similarity_weight": 0.7, "top_k": 1024, "keyword": False, "highlight": True } response = requests.post(url, json=payload, headers=headers) print(response.json())

聊天助手

创建和管理聊天助手,关联知识图谱数据集以实现基于图谱的智能问答

POST/api/v1/chats创建聊天助手
请求参数
字段类型必填说明
namestring必填助手名称
dataset_idsarray必填关联数据集 ID 列表
llmobject可选LLM 配置
promptobject可选提示词配置
响应示例
JSON Response
{ "code": 0, "data": { "id": "chat-abc123", "name": "KG Assistant", "dataset_ids": [ "ds-abc123" ] } }
cURL
curl -X POST "http://localhost:80/api/v1/chats" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "KG Assistant", "dataset_ids": ["ds-abc123"]}'
Python
import requests url = "http://localhost:80/api/v1/chats" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "KG Assistant", "dataset_ids": ["ds-abc123"]} response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/chats列出聊天助手
请求参数
字段类型必填说明
pageinteger可选页码
page_sizeinteger可选每页数量
namestring可选按名称过滤
cURL
curl -X GET "http://localhost:80/api/v1/chats?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests url = "http://localhost:80/api/v1/chats" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
PUT/api/v1/chats/{chat_id}更新聊天助手
请求参数
字段类型必填说明
namestring可选助手名称
dataset_idsarray可选关联数据集
llmobject可选LLM 配置
promptobject可选提示词配置
cURL
curl -X PUT "http://localhost:80/api/v1/chats/chat-abc123" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "Updated KG Assistant"}'
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "Updated KG Assistant"} response = requests.put(url, json=payload, headers=headers) print(response.json())
DELETE/api/v1/chats/{chat_id}删除聊天助手
cURL
curl -X DELETE "http://localhost:80/api/v1/chats/chat-abc123" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} response = requests.delete(url, headers=headers) print(response.json())

会话管理

管理聊天助手内的会话,每个会话维护独立的对话上下文

POST/api/v1/chats/{chat_id}/sessions创建会话
请求参数
字段类型必填说明
namestring可选会话名称
cURL
curl -X POST "http://localhost:80/api/v1/chats/chat-abc123/sessions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "New Session"}'
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}/sessions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "New Session"} response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/chats/{chat_id}/sessions列出会话
cURL
curl -X GET "http://localhost:80/api/v1/chats/chat-abc123/sessions?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}/sessions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
PUT/api/v1/chats/{chat_id}/sessions/{session_id}更新会话
请求参数
字段类型必填说明
namestring可选会话名称
cURL
curl -X PUT "http://localhost:80/api/v1/chats/chat-abc123/sessions/sess-xyz789" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "Updated Session"}'
Python
import requests chat_id = "chat-abc123" session_id = "sess-xyz789" url = f"http://localhost:80/api/v1/chats/{chat_id}/sessions/{session_id}" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"name": "Updated Session"} response = requests.put(url, json=payload, headers=headers) print(response.json())
DELETE/api/v1/chats/{chat_id}/sessions删除会话
请求参数
字段类型必填说明
idsarray必填要删除的会话 ID 列表
cURL
curl -X DELETE "http://localhost:80/api/v1/chats/chat-abc123/sessions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"ids": ["sess-xyz789"]}'
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}/sessions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"ids": ["sess-xyz789"]} response = requests.delete(url, json=payload, headers=headers) print(response.json())

对话接口

与聊天助手进行实时对话,支持流式和非流式响应,可结合知识图谱进行回答

POST/api/v1/chats/{chat_id}/completions与聊天助手对话
请求参数
字段类型必填说明
questionstring必填用户问题
session_idstring可选会话 ID(不传则创建新会话)
streamboolean可选是否流式输出,默认 true
dataset_idsarray可选指定检索的数据集
响应示例
JSON Response
{ "code": 0, "data": { "answer": "RAGFlow 通过 GraphRAG 模块构建知识图谱...", "reference": { "chunks": [ { "chunk_id": "chunk-aaa111", "similarity": 0.85 } ] } } }
cURL
curl -X POST "http://localhost:80/api/v1/chats/chat-abc123/completions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"question": "RAGFlow 如何构建知识图谱?", "stream": false}'
Python
import requests chat_id = "chat-abc123" url = f"http://localhost:80/api/v1/chats/{chat_id}/completions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"question": "RAGFlow 如何构建知识图谱?", "stream": False} response = requests.post(url, json=payload, headers=headers) print(response.json())
POST/api/v1/chats_openai/{chat_id}/chat/completionsOpenAI兼容对话接口
OpenAI 兼容:此接口兼容 OpenAI Chat Completions API 格式,可直接替换 OpenAI 的 base_url 使用。
请求参数
字段类型必填说明
messagesarray必填消息列表,格式同 OpenAI
streamboolean可选是否流式输出
session_idstring可选会话 ID
cURL
curl -X POST "http://localhost:80/api/v1/chats_openai/chat-abc123/chat/completions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"messages": [{"role": "user", "content": "RAGFlow 如何构建知识图谱?"}], "stream": false}'
Python
from openai import OpenAI client = OpenAI( api_key="ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", base_url="http://localhost:80/api/v1/chats_openai/chat-abc123" ) response = client.chat.completions.create( messages=[{"role": "user", "content": "RAGFlow 如何构建知识图谱?"}], stream=False ) print(response.choices[0].message.content)

代理管理

管理 RAGFlow 代理(Agent),代理可编排复杂工作流并调用知识图谱

POST/api/v1/agents/{agent_id}/sessions与代理创建会话
cURL
curl -X POST "http://localhost:80/api/v1/agents/agent-abc123/sessions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json"
Python
import requests agent_id = "agent-abc123" url = f"http://localhost:80/api/v1/agents/{agent_id}/sessions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} response = requests.post(url, headers=headers) print(response.json())
POST/api/v1/agents/{agent_id}/completions与代理对话
请求参数
字段类型必填说明
questionstring必填用户问题
session_idstring可选会话 ID
streamboolean可选是否流式输出
cURL
curl -X POST "http://localhost:80/api/v1/agents/agent-abc123/completions" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"question": "帮我分析知识图谱中的实体关系", "stream": false}'
Python
import requests agent_id = "agent-abc123" url = f"http://localhost:80/api/v1/agents/{agent_id}/completions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm", "Content-Type": "application/json"} payload = {"question": "帮我分析知识图谱中的实体关系", "stream": False} response = requests.post(url, json=payload, headers=headers) print(response.json())
GET/api/v1/agents/{agent_id}/sessions列出代理会话
cURL
curl -X GET "http://localhost:80/api/v1/agents/agent-abc123/sessions?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests agent_id = "agent-abc123" url = f"http://localhost:80/api/v1/agents/{agent_id}/sessions" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())
GET/api/v1/agents列出代理
cURL
curl -X GET "http://localhost:80/api/v1/agents?page=1&page_size=30" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"
Python
import requests url = "http://localhost:80/api/v1/agents" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} params = {"page": 1, "page_size": 30} response = requests.get(url, headers=headers, params=params) print(response.json())

知识图谱专项 (GraphRAG)

RAGFlow GraphRAG 的完整配置说明与构建工作流

GraphRAG 是 RAGFlow 的知识图谱增强检索模块。通过在数据集级别配置 GraphRAG 参数,系统在解析文档时会自动抽取实体和关系,构建知识图谱,并在检索时结合图谱关系进行混合检索,显著提升复杂查询的准确度。

GraphRAG 配置参数详解

chunk_method
设为 "graphrag" 以启用知识图谱构建模式
string: "graphrag"
graphrag.entity_types
定义要从文档中抽取的实体类型列表
array<string>
graphrag.method
图谱构建方法:light(轻量快速)或 general(通用高精度)
string: "light" | "general"
graphrag.community
是否启用社区检测,发现图谱中的实体群落
boolean, 默认 false
graphrag.resolution
是否启用实体消解,合并指向同一实体的不同表述
boolean, 默认 false

实体类型配置

通过 graphrag.entity_types 定义要从文档中抽取的实体类别:

Organization
组织机构,如公司、政府部门、非营利组织
Person
人物,如企业高管、研究人员、公众人物
Geo
地理位置,如城市、国家、地区
Event
事件,如会议、产品发布、历史事件
Category
分类/概念,如技术领域、产品类别

构建方法选择

light
轻量模式:速度快,资源消耗低,适合大规模文档的快速图谱构建。使用简化抽取策略。
general
通用模式:精度高,实体和关系抽取更完整,适合对图谱质量要求较高的场景。

图谱构建工作流

1
创建数据集
配置 chunk_method=graphrag 及 graphrag 参数
2
上传文档
将文档上传至 GraphRAG 数据集
3
触发解析
调用 parse API 启动图谱构建
4
图谱检索
使用 retrieval API 进行混合检索
5
智能问答
通过 chat API 获取基于图谱的回答

完整 GraphRAG 工作流代码示例

cURL - 完整工作流
# 步骤1: 创建 GraphRAG 数据集 curl -X POST "http://localhost:80/api/v1/datasets" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"name": "kg-dataset", "chunk_method": "graphrag", "graphrag": {"entity_types": ["Organization", "Person", "Geo", "Event", "Category"], "method": "light", "community": true, "resolution": true}}' # 步骤2: 上传文档 curl -X POST "http://localhost:80/api/v1/datasets/{dataset_id}/documents" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -F "file=@knowledge_base.pdf" # 步骤3: 触发解析(构建图谱) curl -X POST "http://localhost:80/api/v1/datasets/{dataset_id}/documents/{doc_id}/parse" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" # 步骤4: 混合检索 curl -X POST "http://localhost:80/api/v1/retrieval" \ -H "Authorization: Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm" \ -H "Content-Type: application/json" \ -d '{"question": "相关组织之间有什么合作关系?", "dataset_ids": ["{dataset_id}"], "vector_similarity_weight": 0.5}'
Python - 完整工作流
import requests BASE = "http://localhost:80" headers = {"Authorization": "Bearer ragflow-IzMDY0MzE5YWUxMWEyM2FiOTM0NTI0Mm"} # 步骤1: 创建 GraphRAG 数据集 resp = requests.post(f"{BASE}/api/v1/datasets", json={ "name": "kg-dataset", "chunk_method": "graphrag", "graphrag": { "entity_types": ["Organization", "Person", "Geo", "Event", "Category"], "method": "light", "community": True, "resolution": True } }, headers={**headers, "Content-Type": "application/json"}) dataset_id = resp.json()["data"]["id"] print(f"数据集已创建: {dataset_id}") # 步骤2: 上传文档 with open("knowledge_base.pdf", "rb") as f: resp = requests.post( f"{BASE}/api/v1/datasets/{dataset_id}/documents", headers=headers, files={"file": f} ) doc_id = resp.json()["data"][0]["id"] print(f"文档已上传: {doc_id}") # 步骤3: 触发解析(构建图谱) resp = requests.post( f"{BASE}/api/v1/datasets/{dataset_id}/documents/{doc_id}/parse", headers=headers ) print("解析已触发,图谱构建中...") # 步骤4: 混合检索 resp = requests.post(f"{BASE}/api/v1/retrieval", json={ "question": "相关组织之间有什么合作关系?", "dataset_ids": [dataset_id], "vector_similarity_weight": 0.5 }, headers={**headers, "Content-Type": "application/json"}) print("检索结果:", resp.json())

RAGFlow 知识图谱 API 参考手册 | 基于 RAGFlow 官方 API 文档整理

RAGFlow GitHub