# メモリタグ付け戦略 タグはスケーラブルなメモリ取得の秘訣です。本ガイドは、適切なタイミングで適切なメモリが戻ってくるようにメモリにタグを付ける方法を示します。 ## タグが重要な理由 タグがない場合、フラットな全文検索しかありません。タグがあれば、構造化されたナビゲーションが可能になります。 ```bash # Without tags: search everything GET /memory/search?q=docker # With tags: filter by project + technology GET /memory/search?q=deployment&tag=synapse&tag=docker ``` タグによって可能になること: - **高速なフィルタリング** — `GET /memory/by-tag?tag=production` - **スコープ付き検索** — `?q=auth&tag=project-x` - **グループ化** — あるプロジェクトのすべての「失敗」メモリを見つける - **相互参照** — タグを共有するメモリは関連している ## タグ付けスキーマ ### プロジェクトタグ プロジェクト名をタグとして使用します: ``` synapse, synapse-mcp, synapse-chat, synapse-sdk ``` ### テクノロジータグ テクノロジー名を使用します: ``` docker, kubernetes, postgres, fastify, react, typescript ``` ### トピックタグ トピックカテゴリを使用します: ``` deployment, ci-cd, auth, database, frontend, backend, security ``` ### ステータスタグ ステータス指標を使用します: ``` active, completed, blocked, deprecated ``` ### タイプタグ タイプ指標を使用します: ``` decision, mistake, pattern, reference, todo ``` ## タグ付けルール ### ルール 1:メモリあたり 2〜5 個のタグ 少なすぎると発見性が低くなり、多すぎるとノイズになります。 ```json // Good: 3 relevant tags { "tags": ["synapse", "deployment", "docker"] } // Bad: 1 tag (too narrow) { "tags": ["synapse"] } // Bad: 10 tags (noise) { "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] } ``` ### ルール 2:小文字、ハイフン区切り ``` ✅ ci-cd, api-key, mind-key ❌ CI-CD, APIKey, MindKey ``` ### ルール 3:一貫した語彙を使用 タグ付けの語彙を確立し、それに従ってください: ``` # Project vocabulary synapse, synapse-mcp, synapse-chat # NOT: synapse_project, synapseProject, SYNAPSE ``` ### ルール 4:検索意図でタグ付け 「このメモリをどうやって検索するか?」を自問してください。 ```json // Storing a deployment decision { "content": "Decided to use Docker Swarm for Synapse deployment", "tags": ["synapse", "deployment", "docker", "swarm", "decision"] } // You'll likely search: ?q=docker+swarm or ?tag=deployment ``` ## パターン ### パターン 1:プロジェクト + トピック ```json { "tags": ["synapse", "deployment"] } { "tags": ["synapse", "auth"] } { "tags": ["synapse-mcp", "tools"] } ``` 検索:`?tag=synapse`(Synapse プロジェクトのすべてのメモリ) 検索:`?tag=synapse&q=deployment`(Synapse 内のデプロイ関連メモリ) ### パターン 2:タイプ + ドメイン ```json { "tags": ["mistake", "deployment"] } { "tags": ["decision", "database"] } { "tags": ["pattern", "auth"] } ``` 検索:`?tag=mistake`(すべての失敗) 検索:`?tag=mistake&q=deployment`(デプロイ関連の失敗) ### パターン 3:階層型 プロジェクト内のサブプロジェクト用: ```json { "tags": ["synapse", "synapse-docs", "markdown"] } { "tags": ["synapse", "synapse-mcp", "mcp"] } { "tags": ["synapse", "synapse-admin", "ui"] } ``` 検索:`?tag=synapse`(Synapse 全体) 検索:`?tag=synapse-docs`(docs サブプロジェクトのみ) ### パターン 4:ステータス追跡 ```json // Active project { "tags": ["synapse", "active"], "priority": "high" } // Completed project { "tags": ["synapse-v1", "completed"], "priority": "low" } // Blocked { "tags": ["synapse-v2", "blocked"], "priority": "high" } ``` ## よくあるユースケース ### プロジェクトに関するすべての決定を見つける ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=decision&tag=synapse" ``` ### ドメイン内のすべての失敗を見つける ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=mistake&tag=deployment" ``` ### アクティブな作業を見つける ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/by-tag?tag=active" ``` ### 技術に関するメモリを見つける ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=postgres+performance&tag=database" ``` ## タグのメンテナンス ### 定期的なレビュー ```python # Find rarely-used tags (candidates for cleanup) tags = requests.get(f"{URL}/memory/tags", headers={"Authorization": f"Bearer {KEY}"}).json() for tag, count in tags.items(): if count < 2: print(f"Rare tag: {tag} ({count} memories)") ``` ### タグの統合 タグに一貫性がない場合(`docker` と `Docker`)は統合してください: ```python # Find all memories with "Docker" tag mems = requests.get(f"{URL}/memory/by-tag?tag=Docker", headers={"Authorization": f"Bearer {KEY}"}).json() # Update each to use "docker" instead for mem in mems["results"]: tags = [t.lower() for t in mem["tags"]] update_memory(mem["id"], tags=list(set(tags))) ``` ## ベストプラクティス > [!TIP] > - **早期に語彙を確立** — 1 日目から一貫したタグを > - **検索意図でタグ付け** — 後でどうやって見つけるか? > - **2〜5 個が最適** — 少なすぎても多すぎても悪い > - **小文字 + ハイフン** — `CI/CD` ではなく `ci-cd` > - **定期的にレビュー** — 重複を統合、未使用を削除 ## 次のステップ - [Memory Best Practices](/docs/guides/memory-best-practices) - [FTS5 Search](/docs/concepts/fts5-search) - [Task-Driven Workflow](/docs/llm-cookbook/task-driven-workflow)