[{"data":1,"prerenderedAt":604},["ShallowReactive",2],{"navigation":3,"doc-/modules/search":217,"docs-all-paths":549},[4,19,39,63,87,111,127,195,211],{"title":5,"path":6,"stem":7,"children":8},"Welcome","/welcome","01.welcome",[9,11,15],{"title":5,"path":6,"stem":10},"01.welcome/index",{"title":12,"path":13,"stem":14},"Astar とは（5分）","/welcome/product-in-5-min","01.welcome/01.product-in-5-min",{"title":16,"path":17,"stem":18},"事業文脈","/welcome/business-context","01.welcome/02.business-context",{"title":20,"path":21,"stem":22,"children":23},"Getting Started","/getting-started","02.getting-started",[24,27,31,35],{"title":25,"path":21,"stem":26},"はじめかた","02.getting-started/index",{"title":28,"path":29,"stem":30},"リポジトリ取得と環境構築","/getting-started/repo-setup","02.getting-started/01.repo-setup",{"title":32,"path":33,"stem":34},"日々の開発ループ","/getting-started/dev-loop","02.getting-started/02.dev-loop",{"title":36,"path":37,"stem":38},"検証の 4 層","/getting-started/verification-tiers","02.getting-started/03.verification-tiers",{"title":40,"path":41,"stem":42,"children":43},"Architecture","/architecture","03.architecture",[44,47,51,55,59],{"title":45,"path":41,"stem":46},"アーキテクチャ","03.architecture/index",{"title":48,"path":49,"stem":50},"マルチテナンシーと RLS","/architecture/multi-tenancy-rls","03.architecture/01.multi-tenancy-rls",{"title":52,"path":53,"stem":54},"認可モデル","/architecture/authorization","03.architecture/02.authorization",{"title":56,"path":57,"stem":58},"AI サブシステム","/architecture/ai-subsystem","03.architecture/03.ai-subsystem",{"title":60,"path":61,"stem":62},"データモデル","/architecture/data-model","03.architecture/04.data-model",{"title":64,"path":65,"stem":66,"children":67},"Backend","/backend","04.backend",[68,71,75,79,83],{"title":69,"path":65,"stem":70},"バックエンド","04.backend/index",{"title":72,"path":73,"stem":74},"層構造","/backend/layering","04.backend/01.layering",{"title":76,"path":77,"stem":78},"規約","/backend/conventions","04.backend/02.conventions",{"title":80,"path":81,"stem":82},"テスト","/backend/testing","04.backend/03.testing",{"title":84,"path":85,"stem":86},"マイグレーション","/backend/migrations","04.backend/04.migrations",{"title":88,"path":89,"stem":90,"children":91},"Frontend","/frontend","05.frontend",[92,95,99,103,107],{"title":93,"path":89,"stem":94},"フロントエンド","05.frontend/index",{"title":96,"path":97,"stem":98},"モジュール内部構造","/frontend/module-anatomy","05.frontend/01.module-anatomy",{"title":100,"path":101,"stem":102},"API アクセスの一本道","/frontend/api-access-chain","05.frontend/02.api-access-chain",{"title":104,"path":105,"stem":106},"i18n","/frontend/i18n","05.frontend/03.i18n",{"title":108,"path":109,"stem":110},"デザインシステム","/frontend/design-system","05.frontend/04.design-system",{"title":112,"path":113,"stem":114,"children":115},"Go Agent And Cli","/go-agent-and-cli","06.go-agent-and-cli",[116,119,123],{"title":117,"path":113,"stem":118},"Go agent と CLI","06.go-agent-and-cli/index",{"title":120,"path":121,"stem":122},"Go agent","/go-agent-and-cli/go-agent","06.go-agent-and-cli/01.go-agent",{"title":124,"path":125,"stem":126},"CLI","/go-agent-and-cli/cli","06.go-agent-and-cli/02.cli",{"title":128,"path":129,"stem":130,"children":131},"Modules","/modules","07.modules",[132,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":133,"path":129,"stem":134},"モジュール","07.modules/index",{"title":136,"path":137,"stem":138},"テーブル","/modules/table","07.modules/01.table",{"title":140,"path":141,"stem":142},"ドキュメントツリー","/modules/document","07.modules/02.document",{"title":144,"path":145,"stem":146},"AIチャット","/modules/ai","07.modules/03.ai",{"title":148,"path":149,"stem":150},"認証・権限","/modules/auth","07.modules/04.auth",{"title":152,"path":153,"stem":154},"AI取込","/modules/organize","07.modules/05.organize",{"title":156,"path":157,"stem":158},"ストレージ","/modules/storage","07.modules/06.storage",{"title":160,"path":161,"stem":162},"NAS同期","/modules/sync","07.modules/07.sync",{"title":164,"path":165,"stem":166},"ワークスペース","/modules/workspace","07.modules/08.workspace",{"title":168,"path":169,"stem":170},"テナントとメンバーシップ","/modules/tenant-membership","07.modules/09.tenant-membership",{"title":172,"path":173,"stem":174},"検索","/modules/search","07.modules/10.search",{"title":176,"path":177,"stem":178},"表示ビュー","/modules/display","07.modules/11.display",{"title":180,"path":181,"stem":182},"テンプレート","/modules/template","07.modules/12.template",{"title":184,"path":185,"stem":186},"メール","/modules/mail","07.modules/13.mail",{"title":188,"path":189,"stem":190},"電話","/modules/phone","07.modules/14.phone",{"title":192,"path":193,"stem":194},"リアルタイム","/modules/realtime","07.modules/15.realtime",{"title":196,"path":197,"stem":198,"children":199},"Infra And Deploy","/infra-and-deploy","08.infra-and-deploy",[200,203,207],{"title":201,"path":197,"stem":202},"インフラとデプロイ","08.infra-and-deploy/index",{"title":204,"path":205,"stem":206},"環境の種類","/infra-and-deploy/environments","08.infra-and-deploy/01.environments",{"title":208,"path":209,"stem":210},"セルフホスト構成","/infra-and-deploy/self-host","08.infra-and-deploy/02.self-host",{"title":212,"path":213,"stem":214,"children":215},"docs-map","/docs-map","09.docs-map/index",[216],{"title":212,"path":213,"stem":214},{"id":218,"title":172,"body":219,"description":543,"extension":544,"meta":545,"navigation":546,"path":173,"seo":547,"stem":174,"__hash__":548},"docs/07.modules/10.search.md",{"type":220,"value":221,"toc":534},"minimark",[222,225,229,250,253,327,331,444,448,454,484,487,514],[223,224,172],"h1",{"id":172},[226,227,228],"h2",{"id":228},"一言でいうと",[230,231,232,236,237,240,241,245,246,249],"p",{},[233,234,235],"code",{},"search"," は backend 専用モジュールで、frontend に対応する ",[233,238,239],{},"app/modules/search/"," は存在しない。ドキュメント・レコードを横断する ",[242,243,244],"strong",{},"全文検索","（Postgres の tsvector ベース、同期的・即時）と ",[242,247,248],{},"セマンティック検索","（pgvector + HNSW インデックスによるベクトル類似検索、非同期・週次バッチ）の2系統を提供し、frontend 側はヘッダー検索やAI エージェントの MCP tool から都度呼び出すクライアントの立場になる。",[226,251,252],{"id":252},"主要ドメイン概念",[254,255,256,269],"table",{},[257,258,259],"thead",{},[260,261,262,266],"tr",{},[263,264,265],"th",{},"概念",[263,267,268],{},"役割",[270,271,272,285,299,313],"tbody",{},[260,273,274,282],{},[275,276,277,278,281],"td",{},"全文検索（",[233,279,280],{},"FullTextSearchPort","）",[275,283,284],{},"ドキュメント/レコードのタイトル・本文を tsvector で検索。書き込み直後から検索可能（非同期インデックス待ちなし）",[260,286,287,292],{},[275,288,289],{},[233,290,291],{},"DocumentEmbedding",[275,293,294,295,298],{},"ドキュメントのベクトル埋め込み（1536→768次元に移行済み、",[233,296,297],{},"vector"," 型カラム + HNSW cosine インデックス）",[260,300,301,306],{},[275,302,303],{},[233,304,305],{},"EmbeddingIndexQueueEntry",[275,307,308,309,312],{},"セマンティック検索インデックスの待ち行列エントリ。ドキュメント作成/本文変更イベントで ",[233,310,311],{},"INSERT ... ON CONFLICT DO NOTHING"," されるだけの軽量エンキュー",[260,314,315,320],{},[275,316,317],{},[233,318,319],{},"SearchHitResponse",[275,321,322,323,326],{},"検索結果1件（",[233,324,325],{},"entityType"," でドキュメント/レコード等を判別）",[226,328,330],{"id":329},"backend-構造","Backend 構造",[332,333,334,371,393,405,412,428],"ul",{},[335,336,337,340,341,344,345,348,349,352,353,356,357,344,360,363,364,363,367,370],"li",{},[233,338,339],{},"api/controller/",": ",[233,342,343],{},"SearchController","（",[233,346,347],{},"POST /api/v1/search"," — 認証済みユーザー向け全文+セマンティック検索）、",[233,350,351],{},"SearchPublicController"," / ",[233,354,355],{},"SearchFileUploadPublicController","（公開デモ用の検索・ファイルアップロード API）、",[233,358,359],{},"EmbeddingController",[233,361,362],{},"POST /reindex","・",[233,365,366],{},"/reindex/workspace",[233,368,369],{},"/reindex/folder"," — 管理者向け手動再インデックス）",[335,372,373,340,376,344,379,381,382,385,386,352,389,392],{},[233,374,375],{},"domain/service/",[233,377,378],{},"SearchService",[233,380,280],{}," を各エンティティソースに委譲し、結果をデデュープ・権限フィルタしてマージする）、",[233,383,384],{},"SemanticSearchService","（ベクトル類似検索）、",[233,387,388],{},"DocumentEmbeddingService",[233,390,391],{},"EmbeddingIndexingService","（埋め込み生成・キュー処理）",[335,394,395,340,398,363,400,363,402],{},[233,396,397],{},"domain/model/",[233,399,291],{},[233,401,305],{},[233,403,404],{},"SearchModels",[335,406,407,340,410],{},[233,408,409],{},"domain/port/",[233,411,280],{},[335,413,414,340,417,344,420,423,424,427],{},[233,415,416],{},"infrastructure/listener/",[233,418,419],{},"DocumentCreatedEnqueueListener",[233,421,422],{},"DocumentNodeChangedEvent"," の CREATED/CONTENT_CHANGED を購読し、親ワークスペースの ",[233,425,426],{},"semantic_search_enabled"," が真ならエンキューするだけ。LLM 呼び出しはしない）",[335,429,430,340,433,436,437,440,441],{},[233,431,432],{},"infrastructure/scheduler/",[233,434,435],{},"EmbeddingQueueWorker","（既定は週次 cron でキューを消化し実際に埋め込みを生成。",[233,438,439],{},"BudgetEnforcer"," でテナントごとのAI予算に従う）、",[233,442,443],{},"DemoSearchCleanupScheduler",[226,445,447],{"id":446},"frontend-からの呼び出し元","Frontend からの呼び出し元",[230,449,450,451,453],{},"frontend 専用モジュールはなく、以下のように各所から ",[233,452,347],{}," を直接叩く。",[332,455,456,474],{},[335,457,458,461,462,465,466,469,470,473],{},[233,459,460],{},"foundation/composables/navigation/useHeaderSearch.ts"," → ",[233,463,464],{},"layouts/components/header/HeaderSearch.vue","（ヘッダーのグローバル検索。",[233,467,468],{},"searchContent","（本文全文検索）はデフォルトOFFで、ONにすると ",[233,471,472],{},"RECORD"," タイプのヒットが有効になる）",[335,475,476,477,363,480,483],{},"AI エージェント側は MCP tool 経由で検索を呼ぶ（",[233,478,479],{},"core/mcp/infrastructure/tools/SearchMcpTools.kt",[233,481,482],{},"SemanticSearchMcpTools.kt","）— チャット中の「〜を探して」に相当する操作はここを通る",[226,485,486],{"id":486},"他モジュールとの辺",[332,488,489,497,506],{},[335,490,491,340,494,496],{},[233,492,493],{},"editor",[233,495,419],{}," がドキュメントツリーの変更イベントを購読し、セマンティック検索インデックスをエンキューする",[335,498,499,502,503,505],{},[233,500,501],{},"ai",": セマンティック検索の埋め込み生成には ",[233,504,439],{},"（AI予算管理）が絡み、MCP tool 経由でAIエージェントから呼ばれる",[335,507,508,511,512,281],{},[233,509,510],{},"workspace",": セマンティック検索はワークスペース単位の opt-in（",[233,513,426],{},[515,516,518],"callout",{"type":517},"warning",[230,519,520,521,344,524,526,527,529,530,533],{},"セマンティック検索は「ドキュメントを作ったら即座に検索できる」わけではない。全文検索は書き込み直後から効くが、セマンティック検索は (1) ワークスペースで opt-in されていない限り一切エンキューされず、(2) エンキューされても既定では ",[242,522,523],{},"週次 cron",[233,525,435],{},"）まで実際の埋め込み生成が走らない。「セマンティック検索でヒットしない」という報告を見たら、まず opt-in 設定とキュー処理のタイミングを疑うこと（即時反映を期待する設計ミスは禁止— 手動再インデックスは ",[233,528,359],{}," の ",[233,531,532],{},"/reindex"," 系エンドポイントで可能）。",{"title":535,"searchDepth":536,"depth":536,"links":537},"",2,[538,539,540,541,542],{"id":228,"depth":536,"text":228},{"id":252,"depth":536,"text":252},{"id":329,"depth":536,"text":330},{"id":446,"depth":536,"text":447},{"id":486,"depth":536,"text":486},"全文検索とセマンティック検索 (pgvector + HNSW)。backend core/search（frontend モジュール対応なし）の深掘り。","md",{},true,{"title":172,"description":543},"mNFfaiTjC7adholfMEOgfiYh9bQZ7PqO9RYfWOVdlJs",[550,552,553,555,556,557,558,559,560,561,562,563,565,566,567,568,569,571,572,573,574,575,577,579,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,599,600,601,602],{"path":13,"title":551},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":554},"ようこそ",{"path":29,"title":28},{"path":33,"title":32},{"path":37,"title":36},{"path":21,"title":25},{"path":49,"title":48},{"path":53,"title":52},{"path":57,"title":56},{"path":61,"title":60},{"path":41,"title":564},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":570},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":576},"フロントエンドガイド",{"path":121,"title":578},"Go agent — NAS 同期エージェント",{"path":125,"title":580},"astar CLI",{"path":113,"title":117},{"path":137,"title":136},{"path":141,"title":140},{"path":145,"title":144},{"path":149,"title":148},{"path":153,"title":152},{"path":157,"title":156},{"path":161,"title":160},{"path":165,"title":164},{"path":169,"title":168},{"path":173,"title":172},{"path":177,"title":176},{"path":181,"title":180},{"path":185,"title":184},{"path":189,"title":188},{"path":193,"title":192},{"path":129,"title":598},"モジュール索引",{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":603},"docs/ 地図",1785452455423]