テキストでドキュメントを更新
ドキュメントのテキスト内容、名前、または処理設定を更新します。テキストが変更されると、ドキュメントを再インデックスします。
1 min read
post/datasets/{dataset_id}/documents/{document_id}/update-by-text
Request example
curl --request POST \
--url https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}/update-by-text \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"doc_form": "text_model",
"doc_language": "English",
"name": "<string>",
"process_rule": {
"mode": "automatic",
"rules": {
"pre_processing_rules": [
{
"enabled": true,
"id": "remove_stopwords"
}
],
"segmentation": {
"chunk_overlap": 0,
"max_tokens": 1,
"separator": "\n"
}
}
},
"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"
}
},
"text": "<string>"
}'import requests
url = "https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}/update-by-text"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
payload = {
"doc_form": "text_model",
"doc_language": "English",
"name": "<string>",
"process_rule": {
"mode": "automatic",
"rules": {
"pre_processing_rules": [
{
"enabled": True,
"id": "remove_stopwords"
}
],
"segmentation": {
"chunk_overlap": 0,
"max_tokens": 1,
"separator": "
"
}
}
},
"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"
}
},
"text": "<string>"
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text)const response = await fetch('https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}/update-by-text', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"doc_form": "text_model",
"doc_language": "English",
"name": "<string>",
"process_rule": {
"mode": "automatic",
"rules": {
"pre_processing_rules": [
{
"enabled": true,
"id": "remove_stopwords"
}
],
"segmentation": {
"chunk_overlap": 0,
"max_tokens": 1,
"separator": "\n"
}
}
},
"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"
}
},
"text": "<string>"
})
});
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}/documents/{document_id}/update-by-text',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"doc_form": "text_model",
"doc_language": "English",
"name": "<string>",
"process_rule": {
"mode": "automatic",
"rules": {
"pre_processing_rules": [
{
"enabled": true,
"id": "remove_stopwords"
}
],
"segmentation": {
"chunk_overlap": 0,
"max_tokens": 1,
"separator": "\\n"
}
}
},
"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"
}
},
"text": "<string>"
}',
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}/documents/{document_id}/update-by-text"
payload := strings.NewReader("{\n \"doc_form\": \"text_model\",\n \"doc_language\": \"English\",\n \"name\": \"<string>\",\n \"process_rule\": {\n \"mode\": \"automatic\",\n \"rules\": {\n \"pre_processing_rules\": [\n {\n \"enabled\": true,\n \"id\": \"remove_stopwords\"\n }\n ],\n \"segmentation\": {\n \"chunk_overlap\": 0,\n \"max_tokens\": 1,\n \"separator\": \"\\n\"\n }\n }\n },\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 \"text\": \"<string>\"\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}/documents/{document_id}/update-by-text"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"doc_form\": \"text_model\",\n \"doc_language\": \"English\",\n \"name\": \"<string>\",\n \"process_rule\": {\n \"mode\": \"automatic\",\n \"rules\": {\n \"pre_processing_rules\": [\n {\n \"enabled\": true,\n \"id\": \"remove_stopwords\"\n }\n ],\n \"segmentation\": {\n \"chunk_overlap\": 0,\n \"max_tokens\": 1,\n \"separator\": \"\\n\"\n }\n }\n },\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 \"text\": \"<string>\"\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}/documents/{document_id}/update-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 = '{
"doc_form": "text_model",
"doc_language": "English",
"name": "<string>",
"process_rule": {
"mode": "automatic",
"rules": {
"pre_processing_rules": [
{
"enabled": true,
"id": "remove_stopwords"
}
],
"segmentation": {
"chunk_overlap": 0,
"max_tokens": 1,
"separator": "\\n"
}
}
},
"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"
}
},
"text": "<string>"
}'
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": "available",
"doc_form": "text_model",
"doc_metadata": [],
"enabled": true,
"error": null,
"hit_count": 0,
"id": "a8e0e5b5-78c6-4130-a5ce-25feb0e0b4ac",
"indexing_status": "completed",
"name": "guide.txt",
"need_summary": false,
"position": 1,
"summary_index_status": null,
"tokens": 512,
"word_count": 350
}
}{
"code": "invalid_param",
"message": "name is required when text is provided.",
"status": 400
}{
"code": "invalid_param",
"message": "Document is not available",
"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": "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": "not_found",
"message": "Document 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}/documents/{document_id}/update-by-text
Authorization
すべてのリクエストは API キーで認証します:Authorization: Bearer {API_KEY}。アプリのエンドポイントにはアプリの API キーを、ナレッジのエンドポイントにはナレッジベースの API キーを使用します(Dify API クイックスタート)。
キーはサーバーサイドで保管し、クライアントコードには決して埋め込まないでください。キーが欠落または無効なリクエストは HTTP 401(unauthorized)で失敗します。
Path parameters
ナレッジベース ID。ナレッジベースリストを取得 で取得します。スコープを限定したキーでは、Dify の URL から ID をコピー してください。
ドキュメント ID です。ナレッジベースのドキュメントリストを取得 から取得します。
Body
application/jsontext_model は標準テキストチャンキング、hierarchical_model は親子チャンク構造、qa_model は質問・回答ペアの抽出です。Default: "text_model"
Options:
text_modelhierarchical_modelqa_modelドキュメント名です。
text を指定する場合は必須です。チャンキングの処理ルールです。
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
リランキングモデル名です。
リランクモデルプロバイダーの識別子です。organization/plugin_name/provider_name の形式です(例:langgenius/cohere/cohere)。cohere のような短縮名は langgenius/<name>/<name> に展開され、langgenius が公開したプラグインでのみ機能します。
有効な値は 利用可能なモデルを取得 で model_type=rerank を指定した際の provider フィールドから取得します。
結果の最小関連性スコアです。
score_threshold_enabled が true の場合にのみ有効です。スコア閾値フィルタリングが有効かどうかです。
検索に使用される検索メソッドです。
Options:
keyword_searchsemantic_searchfull_text_searchhybrid_search返す結果の最大数です。
ハイブリッド検索の重み設定です。
Show child attributesHide child attributes
キーワード検索の重み設定です。
Show child attributesHide child attributes
キーワード検索結果に割り当てられた重みです。
セマンティック検索の重み設定です。
セマンティック検索とキーワード検索の重みを調整するための戦略です。
Options:
semantic_firstkeyword_firstcustomizedドキュメントのテキスト内容です。
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 は QA ペア抽出を示します。このドキュメントに割り当てられたメタデータ値です。
このドキュメントが検索に対して有効かどうかです。
インデックス作成が失敗した場合のエラーメッセージです。エラーなしの場合は
null です。ドキュメントが検索クエリでマッチした回数です。
ドキュメントの一意識別子です。
現在のインデックスステータスです。
waiting はキュー待ち、parsing はコンテンツ抽出中、cleaning はノイズ除去中、splitting はチャンキング中、indexing はベクトル構築中、completed は準備完了、error は失敗、paused は手動一時停止を示します。ドキュメント名です。
このドキュメントに要約を生成する必要があるかどうかです。
リスト内のドキュメントの表示位置です。
このドキュメントの要約インデックスのステータスです。要約インデックスが設定されていない場合は
null です。ドキュメント内の合計トークン数です。
ドキュメントの合計単語数です。