ナレッジベース設定を更新
ナレッジベースの埋め込みモデルまたは検索設定を変更します。コンテンツのインデックス前後でのモデル設定については、モデルと検索設定の変更 を参照してください。
動作は、モデルがすでにアクティブかどうかによって異なります:
- 最初のドキュメントがインデックスされる前は、設定は保留中として保存され、
200が返ります。設定は最初のドキュメントのインデックス時に検証され、有効になります。embeddingまたはretrievalを省略すると、そのグループは保留中の値のまま残ります。 - モデルがアクティブになった後は
202が返り、変更は移行として実行されます。移行が終わるまでmigration.idで 設定の移行を取得 をポーリングし、その後で最終的な設定を読み取ってください。アクティブな埋め込みモデルを再送信する場合など、移行が不要な変更では200が返ります。
埋め込みモデルを変更すると、すべてのドキュメントが埋め込み直されます。推論モデルを含め、検索設定の変更は再構築なしで反映されます。インデックス済みのドキュメントは、ドキュメントを再インデックス で再インデックスするまで、以前のモデルが構築した内容のままです。
ルール:
embeddingとretrievalの少なくとも一方を送信します。モデルがアクティブになった後は、1 回の呼び出しでどちらか一方だけを送信します。retrievalには有効なリランクモデルが必要です。rerank.enabled: trueとrerank.modelを一緒に送信します。retrievalには埋め込みモデルが必要です。同じ呼び出しで送信するか、事前に保存しておきます。そうでない場合は409が返ります。scoreThreshold.enabled: trueにはscoreThreshold.valueが必要です。
curl --request PATCH \
--url https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"embedding": {
"model": "text-embedding-3-small",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"expectedRevision": 7,
"retrieval": {
"defaultMode": "fast",
"reasoningModel": {
"model": "gpt-4.1-mini",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"scoreThreshold": {
"enabled": true,
"stage": "mode-final",
"value": 0.4
},
"topK": 10
}
}'import requests
url = "https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/settings"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
payload = {
"embedding": {
"model": "text-embedding-3-small",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"expectedRevision": 7,
"retrieval": {
"defaultMode": "fast",
"reasoningModel": {
"model": "gpt-4.1-mini",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"rerank": {
"enabled": True,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"scoreThreshold": {
"enabled": True,
"stage": "mode-final",
"value": 0.4
},
"topK": 10
}
}
response = requests.request("PATCH", url, headers=headers, json=payload)
print(response.text)const response = await fetch('https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/settings', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"embedding": {
"model": "text-embedding-3-small",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"expectedRevision": 7,
"retrieval": {
"defaultMode": "fast",
"reasoningModel": {
"model": "gpt-4.1-mini",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"scoreThreshold": {
"enabled": true,
"stage": "mode-final",
"value": 0.4
},
"topK": 10
}
})
});
const data = await response.json();
console.log(data);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/settings',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => '{
"embedding": {
"model": "text-embedding-3-small",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"expectedRevision": 7,
"retrieval": {
"defaultMode": "fast",
"reasoningModel": {
"model": "gpt-4.1-mini",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"scoreThreshold": {
"enabled": true,
"stage": "mode-final",
"value": 0.4
},
"topK": 10
}
}',
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/knowledge-fs/spaces/{knowledge_base_id}/settings"
payload := strings.NewReader("{\n \"embedding\": {\n \"model\": \"text-embedding-3-small\",\n \"pluginId\": \"langgenius/openai\",\n \"provider\": \"openai\"\n },\n \"expectedRevision\": 7,\n \"retrieval\": {\n \"defaultMode\": \"fast\",\n \"reasoningModel\": {\n \"model\": \"gpt-4.1-mini\",\n \"pluginId\": \"langgenius/openai\",\n \"provider\": \"openai\"\n },\n \"rerank\": {\n \"enabled\": true,\n \"model\": {\n \"model\": \"rerank-v3.5\",\n \"pluginId\": \"langgenius/cohere\",\n \"provider\": \"cohere\"\n }\n },\n \"scoreThreshold\": {\n \"enabled\": true,\n \"stage\": \"mode-final\",\n \"value\": 0.4\n },\n \"topK\": 10\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/knowledge-fs/spaces/{knowledge_base_id}/settings"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString("{\n \"embedding\": {\n \"model\": \"text-embedding-3-small\",\n \"pluginId\": \"langgenius/openai\",\n \"provider\": \"openai\"\n },\n \"expectedRevision\": 7,\n \"retrieval\": {\n \"defaultMode\": \"fast\",\n \"reasoningModel\": {\n \"model\": \"gpt-4.1-mini\",\n \"pluginId\": \"langgenius/openai\",\n \"provider\": \"openai\"\n },\n \"rerank\": {\n \"enabled\": true,\n \"model\": {\n \"model\": \"rerank-v3.5\",\n \"pluginId\": \"langgenius/cohere\",\n \"provider\": \"cohere\"\n }\n },\n \"scoreThreshold\": {\n \"enabled\": true,\n \"stage\": \"mode-final\",\n \"value\": 0.4\n },\n \"topK\": 10\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/knowledge-fs/spaces/{knowledge_base_id}/settings')
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 = '{
"embedding": {
"model": "text-embedding-3-small",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"expectedRevision": 7,
"retrieval": {
"defaultMode": "fast",
"reasoningModel": {
"model": "gpt-4.1-mini",
"pluginId": "langgenius/openai",
"provider": "openai"
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"scoreThreshold": {
"enabled": true,
"stage": "mode-final",
"value": 0.4
},
"topK": 10
}
}'
response = http.request(request)
puts response.read_body{
"migration": null,
"settings": {
"active_profile_available": false,
"active_profile_revisions": {
"embedding": null,
"retrieval": null
},
"capabilities": {
"deep": false,
"index": false,
"ingest": true,
"query": false,
"research": false,
"source_sync": true
},
"configuration_state": "active",
"embedding": {
"dimension": null,
"model": "text-embedding-3-small",
"plugin_id": "langgenius/openai",
"provider": "openai",
"revision": null,
"vector_space_id": null
},
"issues": [],
"retrieval": {
"default_mode": "fast",
"reasoning_model": {
"dimension": null,
"model": "gpt-4.1-mini",
"plugin_id": "langgenius/openai",
"provider": "openai",
"revision": null,
"vector_space_id": null
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"revision": null,
"score_threshold": {
"enabled": true,
"stage": "mode-final",
"value": 0.4
},
"top_k": 10
},
"revision": 8
}
}{
"migration": {
"candidate_publication_fingerprint": null,
"changed_kind": "embedding",
"checkpoint": "queued",
"completed_at": null,
"created_at": "2026-09-08T03:10:00Z",
"error_code": null,
"evaluation_summary": null,
"id": "a7c3e9f1-2b4d-4c6e-8f0a-1b3d5f7a9c2e",
"knowledge_space_id": "0a9d3c2e-5b6f-4e1a-8c7d-2f3e4a5b6c7d",
"rebuild_scope": "full-vector-space",
"run_state": "queued",
"updated_at": "2026-09-08T03:10:00Z"
},
"settings": {
"active_profile_available": true,
"active_profile_revisions": {
"embedding": 2,
"retrieval": 3
},
"capabilities": {
"deep": true,
"index": true,
"ingest": true,
"query": true,
"research": true,
"source_sync": true
},
"configuration_state": "active",
"embedding": {
"dimension": 1536,
"model": "text-embedding-3-small",
"plugin_id": "langgenius/openai",
"provider": "openai",
"revision": 2,
"vector_space_id": "embedding-space-sha256:4f7c2d9a1b3e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4"
},
"issues": [],
"retrieval": {
"default_mode": "fast",
"reasoning_model": {
"dimension": null,
"model": "gpt-4.1-mini",
"plugin_id": "langgenius/openai",
"provider": "openai",
"revision": null,
"vector_space_id": null
},
"rerank": {
"enabled": true,
"model": {
"model": "rerank-v3.5",
"pluginId": "langgenius/cohere",
"provider": "cohere"
}
},
"revision": 3,
"score_threshold": {
"enabled": false,
"stage": "mode-final",
"value": null
},
"top_k": 10
},
"revision": 7
}
}{
"code": "knowledge_fs_invalid_request",
"message": "Agent Knowledge Base request is invalid.",
"status": 400,
"violations": [
{
"field": [
"expectedRevision"
],
"type": "missing"
}
]
}{
"code": "knowledge_fs_invalid_request",
"failure": {
"category": "validation",
"code": "KNOWLEDGE_FS_INVALID_REQUEST",
"message": "The Agent Knowledge Base request is invalid.",
"retryPolicy": "never",
"traceId": "9b7d3e1a-4c2f-4a8e-b6d0-5f1e2c3d4a5b"
},
"message": "The Agent Knowledge Base request is invalid.",
"status": 400
}{
"code": "knowledge_fs_invalid_credential",
"message": "Invalid Agent Knowledge Base service credential.",
"status": 401
}{
"code": "unauthorized",
"message": "Authorization header must be provided and start with 'Bearer'",
"status": 401
}{
"code": "unauthorized",
"message": "Access token is invalid",
"status": 401
}{
"code": "forbidden",
"message": "Sorry, you have reached the knowledge base request rate limit of your subscription.",
"status": 403
}{
"code": "knowledge_fs_access_denied",
"message": "Agent Knowledge Base operation is not allowed.",
"status": 403
}{
"code": "knowledge_fs_resource_not_found",
"failure": {
"category": "not_found",
"code": "KNOWLEDGE_FS_NOT_FOUND",
"message": "The requested Agent Knowledge Base resource was not found.",
"retryPolicy": "never",
"traceId": "9b7d3e1a-4c2f-4a8e-b6d0-5f1e2c3d4a5b"
},
"message": "The requested Agent Knowledge Base resource was not found.",
"status": 404
}{
"code": "not_found",
"message": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
"status": 404
}{
"code": "knowledge_fs_conflict",
"failure": {
"action": "retry",
"category": "conflict",
"code": "KNOWLEDGE_FS_CONFLICT",
"message": "The Agent Knowledge Base operation conflicts with the current resource state.",
"retryPolicy": "manual",
"traceId": "9b7d3e1a-4c2f-4a8e-b6d0-5f1e2c3d4a5b"
},
"message": "The Agent Knowledge Base operation conflicts with the current resource state.",
"status": 409
}{
"code": "knowledge_fs_conflict",
"failure": {
"action": "retry",
"category": "conflict",
"code": "KNOWLEDGE_SPACE_SETTINGS_REVISION_CONFLICT",
"message": "Knowledge space settings have changed. Reload the latest settings and review your changes before saving again.",
"retryPolicy": "manual",
"traceId": "5e2a9c17-3b4d-4f60-8a1b-2c3d4e5f6a7b"
},
"message": "Knowledge space settings have changed. Reload the latest settings and review your changes before saving again.",
"status": 409
}{
"code": "knowledge_fs_request_rejected",
"message": "Agent Knowledge Base request was rejected.",
"status": 422
}{
"code": "knowledge_fs_upstream_unavailable",
"message": "Agent Knowledge Base is unavailable.",
"status": 502
}{
"code": "knowledge_fs_upstream_unavailable",
"failure": {
"action": "contact_admin",
"category": "internal",
"code": "KNOWLEDGE_FS_INTERNAL_ERROR",
"message": "Agent Knowledge Base could not complete the operation. Try again, or contact an administrator with the error reference.",
"retryPolicy": "manual",
"traceId": "9b7d3e1a-4c2f-4a8e-b6d0-5f1e2c3d4a5b"
},
"message": "Agent Knowledge Base could not complete the operation. Try again, or contact an administrator with the error reference.",
"status": 502
}{
"code": "knowledge_fs_operation_unavailable",
"message": "Agent Knowledge Base operation is not available.",
"status": 503
}{
"code": "knowledge_fs_operation_unavailable",
"failure": {
"action": "retry",
"category": "dependency",
"code": "KNOWLEDGE_FS_UNAVAILABLE",
"message": "A service required by Agent Knowledge Base is temporarily unavailable.",
"retryPolicy": "manual",
"traceId": "5e2a9c17-3b4d-4f60-8a1b-2c3d4e5f6a7b"
},
"message": "A service required by Agent Knowledge Base is temporarily unavailable.",
"status": 503
}Authorization
すべてのリクエストは API キーで認証します:Authorization: Bearer {API_KEY}。アプリのエンドポイントにはアプリの API キーを、ナレッジのエンドポイントにはナレッジベースの API キーを使用します(Dify API クイックスタート)。
キーはサーバーサイドで保管し、クライアントコードには決して埋め込まないでください。キーが欠落または無効なリクエストは HTTP 401(unauthorized)で失敗します。
Path parameters
…/knowledge-fs/spaces/<knowledge base ID>)です。アドレスバーでは /datasets/new/ の後のセグメントです。Body
application/jsonResponses
settings は ナレッジベース設定を取得 と同じ形式で、その revision を次回の更新で送信します。設定が保留中の間は、active_profile_available は false、capabilities.query も false のままです。null です。移行は開始されていません。Show child attributesHide child attributes
true です。最初のドキュメントのインデックス処理が済むとアクティブになります。null です。プロファイルがアクティブになった後は、ナレッジベース設定を更新 による変更は設定の移行として実行されます。公開済みの設定で各機能を使える状態かどうかを示します。3 つのフラグは検索の深度に対応し、query は fast を表します。
特定の深度で使えるかどうかを確認するには、その深度を mode として明示的に送信し、対応するフラグを確認してください。mode を省略したクエリの深度を判断するために、保留中の retrieval.default_mode を使用しないでください。
Show child attributesHide child attributes
active です。いずれかが欠けている場合は setup-required です。最初のドキュメントのインデックス処理中に、保留中の設定が検証に失敗した場合は validation-failed です。失敗した設定は issues に示されます。埋め込みモデルです。保留中の選択が保存されている場合はその選択、それ以外の場合はアクティブなモデルです。保留中の選択は、クエリが現在使用しているモデルと異なる場合があります。設定されていない場合は null です。
dimension、revision、vector_space_id は参考情報であり、これらを受け取る操作はありません。
Show child attributesHide child attributes
null です。organization/plugin_name の形式で指定します。null です。null です。Show child attributesHide child attributes
設定の問題点です:
missing:選択されていないか、リランクが無効です。validation_failed、unavailable、incompatible:保留中の設定が検証に失敗しました。incompatibleの場合は、モデルが対応するタスク、埋め込みの次元数、選択したモデルをプロバイダーが返したかどうかを確認してください。binding_missing:公開済みのコンテンツが、設定されたモデルを使用できる状態になっていません。Dify でインデックス処理の進捗を確認してください。publicationに対するunavailable:公開済みのコンテンツが、すべての深度に対応できる状態になっていません。
embedding、reasoning、rerank、publication(公開済みのコンテンツ)のいずれかです。null です。Show child attributesHide child attributes
fast、deep、research のいずれかです。mode を省略したクエリは、公開済みのデフォルトを使用します。保留中の設定が返されている場合、公開済みのデフォルトはこの値と異なることがあります。dimension、revision、vector_space_id は常に null です。model オブジェクトではキャメルケースのキー pluginId が使われます。null です。expectedRevision として送信します。このレスポンスにあるほかのリビジョンのフィールドは、この値とは別物です。Show child attributesHide child attributes
embedding または retrieval です。queued、candidate-built、evaluated、activated のいずれかです。移行が終了したかどうかは、run_state で判断してください。succeeded、failed、canceled のいずれかで終了した日時(ISO 8601)です。実行中は null です。PROFILE_MIGRATION_ATTEMPTS_EXHAUSTED、VECTOR_SPACE_QUOTA_EXCEEDED)。失敗がない場合は null です。null です。移行で再構築される範囲です:
full-vector-space:埋め込みモデルの変更により、すべてのドキュメントを埋め込み直します。clone-publication:どの検索設定の変更でも、現在のインデックスを再利用します。full-page-index-summary-outline:非推奨です。以前の移行では、引き続きこの値が返される場合があります。推論モデルを変更した場合はclone-publicationが返ります。
移行の進行状況です:
queued、running:処理中です。succeeded:新しい設定が適用されています。failed:停止しました。理由はerror_codeに示されます。変更を再度試す前に、ナレッジベース設定を取得 でモデルを確認してください。canceled:完了前に、同じ種類の新しい変更によってこの移行が置き換えられました。新しい移行を追跡してください。
Show child attributesHide child attributes
true です。最初のドキュメントのインデックス処理が済むとアクティブになります。null です。プロファイルがアクティブになった後は、ナレッジベース設定を更新 による変更は設定の移行として実行されます。公開済みの設定で各機能を使える状態かどうかを示します。3 つのフラグは検索の深度に対応し、query は fast を表します。
特定の深度で使えるかどうかを確認するには、その深度を mode として明示的に送信し、対応するフラグを確認してください。mode を省略したクエリの深度を判断するために、保留中の retrieval.default_mode を使用しないでください。
Show child attributesHide child attributes
active です。いずれかが欠けている場合は setup-required です。最初のドキュメントのインデックス処理中に、保留中の設定が検証に失敗した場合は validation-failed です。失敗した設定は issues に示されます。埋め込みモデルです。保留中の選択が保存されている場合はその選択、それ以外の場合はアクティブなモデルです。保留中の選択は、クエリが現在使用しているモデルと異なる場合があります。設定されていない場合は null です。
dimension、revision、vector_space_id は参考情報であり、これらを受け取る操作はありません。
Show child attributesHide child attributes
null です。organization/plugin_name の形式で指定します。null です。null です。Show child attributesHide child attributes
設定の問題点です:
missing:選択されていないか、リランクが無効です。validation_failed、unavailable、incompatible:保留中の設定が検証に失敗しました。incompatibleの場合は、モデルが対応するタスク、埋め込みの次元数、選択したモデルをプロバイダーが返したかどうかを確認してください。binding_missing:公開済みのコンテンツが、設定されたモデルを使用できる状態になっていません。Dify でインデックス処理の進捗を確認してください。publicationに対するunavailable:公開済みのコンテンツが、すべての深度に対応できる状態になっていません。
embedding、reasoning、rerank、publication(公開済みのコンテンツ)のいずれかです。null です。Show child attributesHide child attributes
fast、deep、research のいずれかです。mode を省略したクエリは、公開済みのデフォルトを使用します。保留中の設定が返されている場合、公開済みのデフォルトはこの値と異なることがあります。dimension、revision、vector_space_id は常に null です。model オブジェクトではキャメルケースのキー pluginId が使われます。null です。expectedRevision として送信します。このレスポンスにあるほかのリビジョンのフィールドは、この値とは別物です。