文档文本内容。
从文本创建文档
在知识库中通过纯文本创建文档。索引异步进行;使用返回的
batch ID 通过 获取文档嵌入状态(进度) 跟踪。1 min read
post/datasets/{dataset_id}/document/create-by-text
Request example
curl --request POST \
--url https://api.dify.ai/v1/datasets/{dataset_id}/document/create-by-text \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"indexing_technique": "high_quality",
"name": "guide.txt",
"text": "Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents."
}'import requests
url = "https://api.dify.ai/v1/datasets/{dataset_id}/document/create-by-text"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
payload = {
"indexing_technique": "high_quality",
"name": "guide.txt",
"text": "Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents."
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text)const response = await fetch('https://api.dify.ai/v1/datasets/{dataset_id}/document/create-by-text', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"indexing_technique": "high_quality",
"name": "guide.txt",
"text": "Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents."
})
});
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}/document/create-by-text',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"indexing_technique": "high_quality",
"name": "guide.txt",
"text": "Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents."
}',
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}/document/create-by-text"
payload := strings.NewReader("{\n \"indexing_technique\": \"high_quality\",\n \"name\": \"guide.txt\",\n \"text\": \"Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents.\"\n}")
req, _ := http.NewRequest("POST", 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}/document/create-by-text"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"indexing_technique\": \"high_quality\",\n \"name\": \"guide.txt\",\n \"text\": \"Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents.\"\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}/document/create-by-text')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = url.scheme == 'https'
request = Net::HTTP::Post.new(url)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = '{
"indexing_technique": "high_quality",
"name": "guide.txt",
"text": "Dify is an open-source LLM application development platform. This guide covers building AI applications with workflows, RAG pipelines, and agents."
}'
response = http.request(request)
puts response.read_bodyResponse
{
"batch": "20250306150245647595",
"document": {
"archived": false,
"created_at": 1741267200,
"created_by": "ad313dd6-ef04-4dd1-a5b0-c0f0b9e2e7e4",
"created_from": "api",
"data_source_detail_dict": {
"upload_file": {
"created_at": 1741267200,
"created_by": "ad313dd6-ef04-4dd1-a5b0-c0f0b9e2e7e4",
"extension": "txt",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mime_type": "text/plain",
"name": "guide.txt",
"size": 2048
}
},
"data_source_info": {
"upload_file_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
"data_source_type": "upload_file",
"dataset_process_rule_id": "e1f2a3b4-c5d6-7890-ef12-345678901234",
"disabled_at": null,
"disabled_by": null,
"display_status": "indexing",
"doc_form": "text_model",
"doc_metadata": [],
"enabled": true,
"error": null,
"hit_count": 0,
"id": "a8e0e5b5-78c6-4130-a5ce-25feb0e0b4ac",
"indexing_status": "indexing",
"name": "guide.txt",
"need_summary": false,
"position": 1,
"summary_index_status": null,
"tokens": 0,
"word_count": 0
}
}{
"code": "invalid_param",
"message": "indexing_technique is required.",
"status": 400
}{
"code": "provider_not_initialize",
"message": "No valid model provider credentials found. Please go to Settings -> Model Provider to complete your provider credentials.",
"status": 400
}{
"code": "forbidden",
"message": "Dataset api access is not enabled.",
"status": 403
}{
"code": "forbidden",
"message": "The capacity of the vector space has reached the limit of your subscription.",
"status": 403
}{
"code": "forbidden",
"message": "The number of documents has reached the limit of your subscription.",
"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
}{
"code": "service_unavailable",
"message": "Unable to verify vector space usage right now. Please try again later.",
"status": 503
}post/datasets/{dataset_id}/document/create-by-text
Authorization
Path parameters
知识库 ID,通过 获取知识库列表 获取。使用限定范围的密钥时,从 Dify 页面 URL 复制 ID。
Body
application/jsontext_model 为标准文本分段,hierarchical_model 为父子分段结构,qa_model 为问答对提取。Default: "text_model"
Options:
text_modelhierarchical_modelqa_model向知识库添加首个文档时必填。后续文档如果省略此字段,将继承知识库的索引方式。
high_quality 使用嵌入模型进行精确搜索;economy 使用基于关键词的索引。Options:
high_qualityeconomy文档名称。
用于版本控制的原始文档 ID。从 获取知识库的文档列表 获取。
分块处理规则。
Show child attributesHide child attributes
automatic 使用内置规则,custom 允许手动配置,hierarchical 启用父子分段结构(配合 doc_form: hierarchical_model 使用)。Options:
automaticcustomhierarchicalShow child attributesHide child attributes
Show 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
文档创建成功。
用于跟踪索引进度的批次 ID。
Show child attributesHide child attributes
文档是否已归档。
创建时间戳(Unix 纪元,单位为秒)。
创建该文档的用户 ID。
文档来源。通过 API 创建时为
api,通过 UI 创建时为 web。详细的数据源信息,包括文件详情。
原始数据源信息,随
data_source_type 而异。文档的创建方式。文件上传为
upload_file,Notion 导入为 notion_import。应用于该文档的处理规则 ID。
文档被禁用的时间戳。启用时为
null。禁用该文档的用户 ID。启用时为
null。基于
indexing_status 和 enabled 状态派生的面向用户的显示状态。文档分块模式。
text_model 表示标准文本分块,hierarchical_model 表示父子结构,qa_model 表示问答对提取。分配给该文档的元数据值。
该文档是否启用检索。
索引失败时的错误消息。无错误时为
null。该文档在检索查询中被匹配的次数。
文档的唯一标识符。
当前索引状态。
waiting 表示排队中,parsing 表示正在提取内容,cleaning 表示正在去噪,splitting 表示正在分块,indexing 表示正在构建向量,completed 表示就绪,error 表示失败,paused 表示手动暂停。文档名称。
是否需要为该文档生成摘要。
文档在列表中的显示位置。
该文档的摘要索引状态。未配置摘要索引时为
null。文档中的令牌总数。
文档的总字数。