更新知识库
更新知识库。仅更改请求体中包含的字段。
1 min read
patch/datasets/{dataset_id}
Request example
curl --request PATCH \
--url https://api.dify.ai/v1/datasets/{dataset_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"description": "<string>",
"embedding_model": "<string>",
"embedding_model_provider": "<string>",
"external_knowledge_api_id": "<string>",
"external_knowledge_id": "<string>",
"external_retrieval_model": {
"score_threshold": 1,
"score_threshold_enabled": true,
"top_k": 1
},
"indexing_technique": "high_quality",
"name": "<string>",
"partial_member_list": [
{
"user_id": "<string>"
}
],
"permission": "only_me",
"retrieval_model": {
"metadata_filtering_conditions": {
"conditions": [
{
"comparison_operator": "contains",
"name": "<string>",
"value": "<string>"
}
],
"logical_operator": "and"
},
"reranking_enable": true,
"reranking_mode": "reranking_model",
"reranking_model": {
"reranking_model_name": "<string>",
"reranking_provider_name": "<string>"
},
"score_threshold": 1,
"score_threshold_enabled": true,
"search_method": "keyword_search",
"top_k": 1,
"weights": {
"keyword_setting": {
"keyword_weight": 1
},
"vector_setting": {
"embedding_model_name": "<string>",
"embedding_provider_name": "<string>",
"vector_weight": 1
},
"weight_type": "semantic_first"
}
}
}'import requests
url = "https://api.dify.ai/v1/datasets/{dataset_id}"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
payload = {
"description": "<string>",
"embedding_model": "<string>",
"embedding_model_provider": "<string>",
"external_knowledge_api_id": "<string>",
"external_knowledge_id": "<string>",
"external_retrieval_model": {
"score_threshold": 1,
"score_threshold_enabled": True,
"top_k": 1
},
"indexing_technique": "high_quality",
"name": "<string>",
"partial_member_list": [
{
"user_id": "<string>"
}
],
"permission": "only_me",
"retrieval_model": {
"metadata_filtering_conditions": {
"conditions": [
{
"comparison_operator": "contains",
"name": "<string>",
"value": "<string>"
}
],
"logical_operator": "and"
},
"reranking_enable": True,
"reranking_mode": "reranking_model",
"reranking_model": {
"reranking_model_name": "<string>",
"reranking_provider_name": "<string>"
},
"score_threshold": 1,
"score_threshold_enabled": True,
"search_method": "keyword_search",
"top_k": 1,
"weights": {
"keyword_setting": {
"keyword_weight": 1
},
"vector_setting": {
"embedding_model_name": "<string>",
"embedding_provider_name": "<string>",
"vector_weight": 1
},
"weight_type": "semantic_first"
}
}
}
response = requests.request("PATCH", url, headers=headers, json=payload)
print(response.text)const response = await fetch('https://api.dify.ai/v1/datasets/{dataset_id}', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"description": "<string>",
"embedding_model": "<string>",
"embedding_model_provider": "<string>",
"external_knowledge_api_id": "<string>",
"external_knowledge_id": "<string>",
"external_retrieval_model": {
"score_threshold": 1,
"score_threshold_enabled": true,
"top_k": 1
},
"indexing_technique": "high_quality",
"name": "<string>",
"partial_member_list": [
{
"user_id": "<string>"
}
],
"permission": "only_me",
"retrieval_model": {
"metadata_filtering_conditions": {
"conditions": [
{
"comparison_operator": "contains",
"name": "<string>",
"value": "<string>"
}
],
"logical_operator": "and"
},
"reranking_enable": true,
"reranking_mode": "reranking_model",
"reranking_model": {
"reranking_model_name": "<string>",
"reranking_provider_name": "<string>"
},
"score_threshold": 1,
"score_threshold_enabled": true,
"search_method": "keyword_search",
"top_k": 1,
"weights": {
"keyword_setting": {
"keyword_weight": 1
},
"vector_setting": {
"embedding_model_name": "<string>",
"embedding_provider_name": "<string>",
"vector_weight": 1
},
"weight_type": "semantic_first"
}
}
})
});
const data = await response.json();
console.log(data);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.dify.ai/v1/datasets/{dataset_id}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => '{
"description": "<string>",
"embedding_model": "<string>",
"embedding_model_provider": "<string>",
"external_knowledge_api_id": "<string>",
"external_knowledge_id": "<string>",
"external_retrieval_model": {
"score_threshold": 1,
"score_threshold_enabled": true,
"top_k": 1
},
"indexing_technique": "high_quality",
"name": "<string>",
"partial_member_list": [
{
"user_id": "<string>"
}
],
"permission": "only_me",
"retrieval_model": {
"metadata_filtering_conditions": {
"conditions": [
{
"comparison_operator": "contains",
"name": "<string>",
"value": "<string>"
}
],
"logical_operator": "and"
},
"reranking_enable": true,
"reranking_mode": "reranking_model",
"reranking_model": {
"reranking_model_name": "<string>",
"reranking_provider_name": "<string>"
},
"score_threshold": 1,
"score_threshold_enabled": true,
"search_method": "keyword_search",
"top_k": 1,
"weights": {
"keyword_setting": {
"keyword_weight": 1
},
"vector_setting": {
"embedding_model_name": "<string>",
"embedding_provider_name": "<string>",
"vector_weight": 1
},
"weight_type": "semantic_first"
}
}
}',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
url := "https://api.dify.ai/v1/datasets/{dataset_id}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"embedding_model\": \"<string>\",\n \"embedding_model_provider\": \"<string>\",\n \"external_knowledge_api_id\": \"<string>\",\n \"external_knowledge_id\": \"<string>\",\n \"external_retrieval_model\": {\n \"score_threshold\": 1,\n \"score_threshold_enabled\": true,\n \"top_k\": 1\n },\n \"indexing_technique\": \"high_quality\",\n \"name\": \"<string>\",\n \"partial_member_list\": [\n {\n \"user_id\": \"<string>\"\n }\n ],\n \"permission\": \"only_me\",\n \"retrieval_model\": {\n \"metadata_filtering_conditions\": {\n \"conditions\": [\n {\n \"comparison_operator\": \"contains\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"logical_operator\": \"and\"\n },\n \"reranking_enable\": true,\n \"reranking_mode\": \"reranking_model\",\n \"reranking_model\": {\n \"reranking_model_name\": \"<string>\",\n \"reranking_provider_name\": \"<string>\"\n },\n \"score_threshold\": 1,\n \"score_threshold_enabled\": true,\n \"search_method\": \"keyword_search\",\n \"top_k\": 1,\n \"weights\": {\n \"keyword_setting\": {\n \"keyword_weight\": 1\n },\n \"vector_setting\": {\n \"embedding_model_name\": \"<string>\",\n \"embedding_provider_name\": \"<string>\",\n \"vector_weight\": 1\n },\n \"weight_type\": \"semantic_first\"\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.dify.ai/v1/datasets/{dataset_id}"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString("{\n \"description\": \"<string>\",\n \"embedding_model\": \"<string>\",\n \"embedding_model_provider\": \"<string>\",\n \"external_knowledge_api_id\": \"<string>\",\n \"external_knowledge_id\": \"<string>\",\n \"external_retrieval_model\": {\n \"score_threshold\": 1,\n \"score_threshold_enabled\": true,\n \"top_k\": 1\n },\n \"indexing_technique\": \"high_quality\",\n \"name\": \"<string>\",\n \"partial_member_list\": [\n {\n \"user_id\": \"<string>\"\n }\n ],\n \"permission\": \"only_me\",\n \"retrieval_model\": {\n \"metadata_filtering_conditions\": {\n \"conditions\": [\n {\n \"comparison_operator\": \"contains\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"logical_operator\": \"and\"\n },\n \"reranking_enable\": true,\n \"reranking_mode\": \"reranking_model\",\n \"reranking_model\": {\n \"reranking_model_name\": \"<string>\",\n \"reranking_provider_name\": \"<string>\"\n },\n \"score_threshold\": 1,\n \"score_threshold_enabled\": true,\n \"search_method\": \"keyword_search\",\n \"top_k\": 1,\n \"weights\": {\n \"keyword_setting\": {\n \"keyword_weight\": 1\n },\n \"vector_setting\": {\n \"embedding_model_name\": \"<string>\",\n \"embedding_provider_name\": \"<string>\",\n \"vector_weight\": 1\n },\n \"weight_type\": \"semantic_first\"\n }\n }\n}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require 'uri'
require 'net/http'
url = URI('https://api.dify.ai/v1/datasets/{dataset_id}')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = url.scheme == 'https'
request = Net::HTTP::Patch.new(url)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = '{
"description": "<string>",
"embedding_model": "<string>",
"embedding_model_provider": "<string>",
"external_knowledge_api_id": "<string>",
"external_knowledge_id": "<string>",
"external_retrieval_model": {
"score_threshold": 1,
"score_threshold_enabled": true,
"top_k": 1
},
"indexing_technique": "high_quality",
"name": "<string>",
"partial_member_list": [
{
"user_id": "<string>"
}
],
"permission": "only_me",
"retrieval_model": {
"metadata_filtering_conditions": {
"conditions": [
{
"comparison_operator": "contains",
"name": "<string>",
"value": "<string>"
}
],
"logical_operator": "and"
},
"reranking_enable": true,
"reranking_mode": "reranking_model",
"reranking_model": {
"reranking_model_name": "<string>",
"reranking_provider_name": "<string>"
},
"score_threshold": 1,
"score_threshold_enabled": true,
"search_method": "keyword_search",
"top_k": 1,
"weights": {
"keyword_setting": {
"keyword_weight": 1
},
"vector_setting": {
"embedding_model_name": "<string>",
"embedding_provider_name": "<string>",
"vector_weight": 1
},
"weight_type": "semantic_first"
}
}
}'
response = http.request(request)
puts response.read_bodyResponse
{
"app_count": 0,
"author_name": "admin",
"built_in_field_enabled": true,
"chunk_structure": null,
"created_at": 1741267200,
"created_by": "ad313dd6-ef04-4dd1-a5b0-c0f0b9e2e7e4",
"data_source_type": null,
"description": "产品 API 技术文档",
"doc_form": "text_model",
"doc_metadata": [],
"document_count": 0,
"embedding_available": true,
"embedding_model": "text-embedding-3-small",
"embedding_model_provider": "langgenius/openai/openai",
"enable_api": true,
"external_knowledge_info": null,
"external_retrieval_model": null,
"icon_info": null,
"id": "c42e2a6e-40b3-4330-96f8-f1e4d768e8c9",
"indexing_technique": "high_quality",
"is_multimodal": false,
"is_published": false,
"maintainer": "admin",
"name": "Product Documentation",
"partial_member_list": [],
"permission": "only_me",
"pipeline_id": null,
"provider": "vendor",
"retrieval_model_dict": {
"reranking_enable": false,
"reranking_mode": null,
"reranking_model": {
"reranking_model_name": "",
"reranking_provider_name": ""
},
"score_threshold": null,
"score_threshold_enabled": false,
"search_method": "semantic_search",
"top_k": 3,
"weights": null
},
"runtime_mode": null,
"summary_index_setting": null,
"tags": [],
"total_available_documents": 0,
"total_documents": 0,
"updated_at": 1741267200,
"updated_by": "ad313dd6-ef04-4dd1-a5b0-c0f0b9e2e7e4",
"word_count": 0
}{
"code": "invalid_param",
"message": "No Embedding Model available. Please configure a valid provider in the Settings -> Model Provider.",
"status": 400
}{
"code": "forbidden",
"message": "Dataset api access is not enabled.",
"status": 403
}{
"code": "forbidden",
"message": "Sorry, you have reached the knowledge base request rate limit of your subscription.",
"status": 403
}{
"code": "forbidden",
"message": "The API key is not authorized to access this knowledge base.",
"status": 403
}{
"code": "not_found",
"message": "Dataset not found.",
"status": 404
}patch/datasets/{dataset_id}
Authorization
Path parameters
知识库 ID,通过 获取知识库列表 获取。使用限定范围的密钥时,从 Dify 页面 URL 复制 ID。
Body
application/json嵌入模型供应商标识符,格式为 organization/plugin_name/provider_name(例如 langgenius/openai/openai)。openai 这类简写会展开为 langgenius/<name>/<name>,仅对 langgenius 发布的插件有效。
有效取值从 获取可用模型 中 model_type=text-embedding 返回的 provider 字段获取。
外部知识库 API 连接的 ID。
外部知识库的 ID。
外部知识库的检索设置。
high_quality 使用嵌入模型进行精确搜索;economy 使用基于关键词的索引。Options:
high_qualityeconomy当
permission 为 partial_members 时有访问权限的团队成员列表。Show child attributesHide child attributes
要授予访问权限的团队成员 ID。
控制谁可以访问此知识库。
only_me 仅限创建者,all_team_members 授权整个工作区访问,partial_members 授权指定成员访问。Options:
only_meall_team_memberspartial_membersShow child attributesHide child attributes
仅检索文档元数据匹配指定条件的分段。条件由服务端基于文档元数据字段评估。
Show child attributesHide child attributes
要评估的元数据条件列表。
Show child attributesHide child attributes
按元数据类型选择要应用的比较方式:
- 字符串或数组类型元数据:
contains、not contains、start with、end with、is、is not、empty、not empty、in、not in - 数值类型元数据:
=、≠、>、<、≥、≤ - 时间类型元数据:
before、after
Options:
containsnot containsstart withend withisis notemptynot emptyinnot in=≠><≥≤beforeafter用于比较的元数据字段名称。
用于比较的值。类型取决于
comparison_operator:大多数字符串运算符使用字符串;in 和 not in 使用字符串数组;数值运算符使用数字;empty 和 not empty 时省略。是否启用重排序。
重排序模式。当
reranking_enable 为 true 时必填。Options:
reranking_modelweighted_score重排序模型配置。
Show child attributesHide child attributes
结果的最低相关性分数。仅在
score_threshold_enabled 为 true 时生效。是否启用分数阈值过滤。
用于检索的搜索方法。
Options:
keyword_searchsemantic_searchfull_text_searchhybrid_search返回的最大结果数。
混合搜索的权重配置。
Show child attributesHide child attributes
关键词搜索权重设置。
Show child attributesHide child attributes
分配给关键词搜索结果的权重。
语义搜索权重设置。
Responses
application/json
知识库更新成功。
当前使用该知识库的应用数量。
创建者的显示名称。
是否启用内置元数据字段(例如
document_name、uploader)。分段结构配置。
创建时间戳(Unix 纪元,单位为秒)。
创建该知识库的用户 ID。
文档的数据源类型,尚未配置时为
null。描述知识库用途或内容的可选文本。
文档分块模式。
text_model 表示标准文本分块,hierarchical_model 表示父子结构,qa_model 表示问答对提取。知识库的元数据字段定义。
知识库中的文档总数。
配置的嵌入模型当前是否可用。
用于索引的嵌入模型名称。
嵌入模型供应商标识符,格式为
organization/plugin_name/provider_name(例如 langgenius/openai/openai)。旧版知识库可能返回简写形式(例如 openai)。该知识库是否启用 API 访问。
外部知识库的连接详情。当
provider 为 external 时存在。外部知识库的检索设置。内部知识库时为
null。知识库的图标显示配置。
知识库的唯一标识符。
high_quality 使用嵌入模型进行精确搜索;economy 使用基于关键词的索引。是否启用多模态内容处理。
知识库是否已发布。
知识库维护者的显示名称。未设置时为
null。知识库的显示名称。在工作区内唯一。
当
permission 为 partial_members 时被授予访问权限的成员账户 ID。更新响应中始终返回;详情响应中仅当 permission 为 partial_members 时返回。控制谁可以访问此知识库。可选值:
only_me、all_team_members、partial_members。自定义处理流水线的 ID(如果已配置)。
供应商类型。内部管理为
vendor,外部知识库连接为 external。知识库的检索配置。
Show child attributesHide child attributes
是否启用重排序。
重排序模式。
reranking_model 表示基于模型的重排序,weighted_score 表示基于分数的加权。重排序禁用时为 null。重排序模型配置。
结果的最低相关性分数。仅在
score_threshold_enabled 为 true 时生效。是否启用分数阈值过滤。
用于检索的搜索方式。
keyword_search 表示关键词匹配,semantic_search 表示基于嵌入的语义相似度,full_text_search 表示全文索引,hybrid_search 表示语义和关键词混合搜索。返回的最大结果数。
混合搜索的权重配置。
Show child attributesHide child attributes
关键词搜索权重设置。
Show child attributesHide child attributes
分配给关键词搜索结果的权重。
语义搜索权重设置。
平衡语义搜索和关键词搜索权重的策略。
运行时处理模式。
摘要索引配置。
与该知识库关联的标签。
已启用且可用的文档数量。
文档总数。
最后更新时间戳(Unix 纪元,单位为秒)。
最后更新该知识库的用户 ID。
所有文档的总字数。