maestro/docs/tools/searchknowledge.md
2026-06-03 05:08:00 +00:00

3.4 KiB
Raw Blame History

SearchKnowledge / ListNamespaces / ListDocuments / IngestDocument / IngestStatus

DKSDocument Knowledge Serviceに取り込んだ社内文書をベクトル検索で参照するツール群。

利用可能性チェック

ListNamespaces()   // 利用可能な namespace 一覧を返す

DKS が設定されていなければ "Knowledge service not configured" を返す。 namespace が空なら何も検索できない。

文書一覧の確認

ListDocuments({ namespace: "product-a-support" })

その namespace に取り込み済みの文書を表示する。

検索

SearchKnowledge({ namespace: "product-a-support", query: "返品ポリシーは何日以内?" })

レスポンスには:

  1. sections — マッチしたツリーノード(タイトル + summary + ページ範囲)
  2. page_image_urls — 関連ページの画像PNG

自動ダウンロード

検索結果に含まれるページ画像は 自動的にワークスペース input/knowledge/{namespace}/page_001.png などに保存される。 LLM はそのローカルパスを ReadImage でそのまま閲覧できる。

// SearchKnowledge の出力例:
// ## 返品ポリシー (manual.pdf, pages: 3, 4)
// 購入後30日以内であれば...
//
// ### ページ画像ReadImage で閲覧可能)
// - input/knowledge/product-a-support/page_003.png
// - input/knowledge/product-a-support/page_004.png

ReadImage({ file_path: "input/knowledge/product-a-support/page_003.png" })

生 JSON の保存

DKS の生レスポンス JSON は logs/raw/searchknowledge-{timestamp}.json に保存される。doc_id 等の詳細フィールドが必要なときはそちらを Read する。

文書の取り込み

// 1. 取り込み開始(非同期)
IngestDocument({ namespace: "product-a-support", file_path: "input/manual.pdf" })
// → "取込を開始しました (job: xxx, 45ページ検出)。完了確認は IngestStatus で可能です。"

// 2. 進捗確認
IngestStatus({ namespace: "product-a-support", job_id: "xxx" })
// → "ジョブ xxx: 処理中: VLM 12/45ページ, ツリー構築: 未完了"
//   または "完了 (manual.pdf)" / "失敗: ..."

DKS は内部で:

  1. PDF → ページ画像化
  2. VLM でページごとに記述生成
  3. ツリー構造(章・節)構築
  4. ベクトル化してインデックス登録

を行う。45 ページで数分かかる規模感。

ワークフロー例

質問応答

SearchKnowledge → 関連 sections + ページ画像取得
   ↓ 必要なら ReadImage で図表確認
   ↓
回答文に sections の要点を引用、根拠ページを示す

新文書を取り込んで検索

IngestDocument → job_id 取得
  ↓ 待機(数分後 or 別作業)
IngestStatus → completed まで polling
  ↓
SearchKnowledge で取り込み済みコンテンツを検索

ログ

logs/knowledge-history.jsonl に各ツール呼び出し(クエリ・件数・所要時間・エラー)が記録される。

注意

  • 検索ヒット件数は DKS 側で制御 されるので、件数上限を心配する必要はない
  • DKS サーバーがローカル/プライベート IP でも、API キー認証経由なので SSRF 例外不要
  • VLM 処理はバックグラウンドで動くので、IngestDocument 後すぐに SearchKnowledge を呼んでもまだヒットしない可能性ありIngestStatus で完了確認)