クエリを実行
クエリトークンを作成 でトークンを発行したクエリを実行し、回答を Server-Sent Events としてストリーミングで返します。認証情報はナレッジベースの API キーではなく、クエリトークンです。トークンはリクエストの受け付け時に検証されます。
2 回の呼び出しの流れとストリームの読み方については、ナレッジベースへのクエリ を参照してください。
再試行すべきエラーとエラー詳細の意味については、エラーの処理 を参照してください。
クエリが成功すると、answer.done を送信する前にクエリ記録が保存されます。同じ呼び出しを繰り返すと、クエリはもう一度実行されます。
Authorizations
クエリトークンを作成 が返すクエリトークンで、Authorization: Bearer {token} として送信します。返された expires_at の時刻(発行から最大 60 秒後)より前に使用してください。このトークンで認可されるのは、そのナレッジベースに対する「クエリを実行」だけです。
同じリクエストで、「クエリトークンを作成」が返した trace_id を X-Trace-ID として送信してください。
Headers
クエリトークンを作成 のレスポンスに含まれる trace_id です。トークンの trace_id クレームと同じ値です。トークンと一致しない値は 403 で拒否されます。ナレッジベースへのクエリ を参照してください。
Body
クエリトークンを作成 の request オブジェクトを変更せずに送信してください。不明なフィールドが含まれていると 400 が返ります。
nullable と記されたオプションフィールドでは、null は省略と同じ扱いになります。
正規化後のリクエストは、UTF-8 で 65,536 バイト以内に収める必要があります。超えると 413 が返ります。リクエストサイズの制限 を参照してください。
空白のみではない query を指定してください。
ナレッジベースの内部 ID です。クエリトークンを作成 の request オブジェクトからコピーします。トークンと一致している必要があり、一致しない場合は 403 で拒否されます。
1質問です。空白のみではないクエリを指定してください。また、UTF-8 で 16,384 バイトまでに制限されます。
16000\S返された request オブジェクトからコピーした値です。これらの ID は、検索されたコンテンツの絞り込みにも順位付けにも使われません。
100返された request オブジェクトからコピーした値です。これらの ID は、検索されたコンテンツの絞り込みにも順位付けにも使われません。
1001 - 200検索の深度です。クエリトークンを作成 の request オブジェクトからコピーします。null も指定でき、その場合はナレッジベースのデフォルトの深度を意味します。
fast, deep, research, null セッション ID です。クエリトークンを作成 の request オブジェクトからコピーします。
Response
ストリームが開きました。リクエストの Accept にかかわらず、イベントは text/event-stream として続きます。ストリームが開く前の失敗は、HTTP エラーとして処理してください。開いた後は、HTTP ステータスが 200 であっても answer.error イベントを失敗として処理してください。
各フレームには、イベント名を示す event: 行と、JSON オブジェクトを 1 つ含む data: 行があります。イベントの振り分けには event: 行を使ってください。JSON には event フィールドが含まれません。
クライアントの読み取りタイムアウトは、使用する検索モードのうち最も遅いものに合わせて設定してください。API 側には読み取りタイムアウトがなく、キープアライブのイベントも送信しません。クライアントがタイムアウトしても処理を続ける必要がある場合は、リサーチタスクを作成 を使用してください。
ストリーミングの流れについては、ナレッジベースへのクエリ を参照してください。
イベント
answer.delta:回答の断片を 1 つ届けます。delta:追加するテキストです。traceId:クエリ記録 ID です。
answer.done:回答が完了し、クエリ記録が保存されたことを示します。-
finishReason:チャンクが見つかった場合はretrieval-evidence、何も一致しなかった場合はno-retrieval-evidenceです。 -
metadata:キーが固定されていないマップです。fast、deep、researchのいずれの深度でもmodeとevidenceBundleを含み、retrieval-evidenceの場合はcitationsを含みます。そのほか、実行で生成されたキーも含まれます。evidenceBundle.itemsには、検索されたチャンクがテキストとスコアとともに格納されます。後から確認するには、クエリのチャンク一覧を取得 を呼び出します。チャンクをページ単位で返し、実行後にドキュメントが削除されたチャンクにはその旨を示します。
-
traceId:クエリ記録 ID です。
-
answer.error:ストリームの開始後にクエリが失敗したことを示します。code:失敗の種類で、次のいずれかです。RETRIEVAL_EXECUTION_LEASE_LOST:ナレッジベースの削除が始まったか、実行が期限切れになりました。クエリを再実行してください。KNOWLEDGE_FS_UNAVAILABLE:回答の生成中またはクエリ記録の保存中に発生した、その他の失敗です。
error:メッセージです。failure:エラー詳細です。category、code、message、retryPolicy、stage、traceId、および任意でactionを含みます。stage:常にquery_generationです。
traceId:クエリ記録 ID です。
citations
回答を裏付ける、検索されたチャンクごとに 1 つのエントリがあります。
nodeId:チャンク ID です。label:node:<nodeId>です。documentAssetId:チャンクの取得元のドキュメントファイルです。sectionPath:アウトライン上のパスです。pageNumber:ソースがページ情報を提供する場合のページ番号で、1 から始まります。それ以外の場合は省略されます。projectionIds:この一致に寄与した検索インデックスの ID です。元のファイルの特定にはdocumentAssetIdを使用してください。sources:チャンクを見つけた検索の種類(dense、fts、pageindex、visual)です。
画像の引用には multimodalCandidate.assetRef.analysisUnavailable.reason が含まれることがあります。これが含まれる場合、リソースの制限または画像処理の失敗により、画像の解析はスキップされています。その場合でも、関連するテキストは結果に寄与できます。
evidenceBundle.items[].citations[] には startOffset と endOffset が含まれることもあります。これらは解析済みドキュメントテキスト内の 0 始まりの UTF-8 バイトオフセットで、開始位置を含み、終了位置を含みません。引用の表示には返されたチャンクテキストを使用し、元のファイルをこのオフセットで切り出さないでください。
結果別の終了シーケンス
- 成功:0 個以上の
answer.deltaの後にanswer.doneが 1 つ届き、ストリームが閉じます。 - 失敗:
answer.doneの代わりにanswer.errorが届き、ストリームが閉じます。その前に一部の断片がすでに配信されている場合があり、HTTP ステータスは200のままです。これを最終結果として扱い、やり直す場合は新しいクエリを開始してください。 - クライアントの切断:実行はキャンセルされ、ストリームが終了します。
回答の内容:fast と deep では、検索されたチャンクのダイジェストが 1 つの answer.delta で届きます(Retrieval evidence answer: に続けて、番号付きのセクションパスとそのテキスト)。research では、統合された回答が 1 つ以上の断片としてストリーミングで返されます。何も一致しなかった場合、断片は I could not find evidence for that query in the indexed retrieval projections. の 1 つだけで、finishReason は no-retrieval-evidence になります。
回答はどの深度でも 2,000 文字が上限です。回答がこの長さに達していても、切り詰められたかどうかは判断できません。
成功した実行の例:
event: answer.delta
data: {"delta":"Retrieval evidence answer:\n1. Policies / Refunds: Refund window extended from 14 to 30 days for annual plans.","traceId":"6c1f0b2e-9d3a-4f5b-8c7d-0e1f2a3b4c5d"}
event: answer.done
data: {"finishReason":"retrieval-evidence","metadata":{"mode":"fast","generator":"hybrid-query","topScore":0.83,"citations":[{"documentAssetId":"b3f4c8d2-6a1e-4f7b-9c0d-2e3f4a5b6c7d","label":"node:9f2e6b41-7c3d-4a58-b0e9-1d2c3f4a5b6e","nodeId":"9f2e6b41-7c3d-4a58-b0e9-1d2c3f4a5b6e","pageNumber":4,"projectionIds":["c7a0d5b2-3e14-4f89-a6b7-0c1d2e3f4a5b"],"sectionPath":["Policies","Refunds"],"sources":["dense","fts"]}],"evidenceBundle":{"createdAt":"2026-09-06T08:31:12Z","id":"e4b2f7a0-1c3d-4e58-9f6a-0b1c2d3e4f5a","items":[{"citations":[{"documentAssetId":"b3f4c8d2-6a1e-4f7b-9c0d-2e3f4a5b6c7d","documentVersion":1,"pageNumber":4,"sectionPath":["Policies","Refunds"]}],"conflicts":[],"freshness":{"status":"fresh"},"metadata":{},"nodeId":"9f2e6b41-7c3d-4a58-b0e9-1d2c3f4a5b6e","score":0.83,"scores":{"final":0.83,"retrieval":0.71},"text":"Refund window extended from 14 to 30 days for annual plans."}],"missingEvidence":[],"query":"What changed in the refund policy this quarter?","state":"answerable","traceId":"6c1f0b2e-9d3a-4f5b-8c7d-0e1f2a3b4c5d"}},"traceId":"6c1f0b2e-9d3a-4f5b-8c7d-0e1f2a3b4c5d"}
ストリームの開始後に失敗した例:
event: answer.error
data: {"code":"KNOWLEDGE_FS_UNAVAILABLE","error":"Agent Knowledge Base is temporarily unavailable. Try again later.","failure":{"action":"retry","category":"dependency","code":"KNOWLEDGE_FS_UNAVAILABLE","message":"Agent Knowledge Base is temporarily unavailable. Try again later.","retryPolicy":"manual","stage":"query_generation","traceId":"6c1f0b2e-9d3a-4f5b-8c7d-0e1f2a3b4c5d"},"traceId":"6c1f0b2e-9d3a-4f5b-8c7d-0e1f2a3b4c5d"}
Was this page helpful?