3.4 KiB
3.4 KiB
SearchKnowledge / ListNamespaces / ListDocuments / IngestDocument / IngestStatus
DKS(Document Knowledge Service)に取り込んだ社内文書をベクトル検索で参照するツール群。
利用可能性チェック
ListNamespaces() // 利用可能な namespace 一覧を返す
DKS が設定されていなければ "Knowledge service not configured" を返す。 namespace が空なら何も検索できない。
文書一覧の確認
ListDocuments({ namespace: "product-a-support" })
その namespace に取り込み済みの文書を表示する。
検索
SearchKnowledge({ namespace: "product-a-support", query: "返品ポリシーは何日以内?" })
レスポンスには:
- sections — マッチしたツリーノード(タイトル + summary + ページ範囲)
- 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 は内部で:
- PDF → ページ画像化
- VLM でページごとに記述生成
- ツリー構造(章・節)構築
- ベクトル化してインデックス登録
を行う。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 で完了確認)