Skip to main content

メモリタグ付け戦略

効果的な検索とフィルタリングのためのメモリのタグ付け方法 — スケールするタグ付けシステム。


メモリタグ付け戦略

タグはスケーラブルなメモリ取得の秘訣です。本ガイドは、適切なタイミングで適切なメモリが戻ってくるようにメモリにタグを付ける方法を示します。

タグが重要な理由

タグがない場合、フラットな全文検索しかありません。タグがあれば、構造化されたナビゲーションが可能になります。

# 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 個のタグ

少なすぎると発見性が低くなり、多すぎるとノイズになります。

// 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:検索意図でタグ付け

「このメモリをどうやって検索するか?」を自問してください。

// 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:プロジェクト + トピック

{ "tags": ["synapse", "deployment"] }
{ "tags": ["synapse", "auth"] }
{ "tags": ["synapse-mcp", "tools"] }

検索:?tag=synapse(Synapse プロジェクトのすべてのメモリ) 検索:?tag=synapse&q=deployment(Synapse 内のデプロイ関連メモリ)

パターン 2:タイプ + ドメイン

{ "tags": ["mistake", "deployment"] }
{ "tags": ["decision", "database"] }
{ "tags": ["pattern", "auth"] }

検索:?tag=mistake(すべての失敗) 検索:?tag=mistake&q=deployment(デプロイ関連の失敗)

パターン 3:階層型

プロジェクト内のサブプロジェクト用:

{ "tags": ["synapse", "synapse-docs", "markdown"] }
{ "tags": ["synapse", "synapse-mcp", "mcp"] }
{ "tags": ["synapse", "synapse-admin", "ui"] }

検索:?tag=synapse(Synapse 全体) 検索:?tag=synapse-docs(docs サブプロジェクトのみ)

パターン 4:ステータス追跡

// Active project
{ "tags": ["synapse", "active"], "priority": "high" }

// Completed project
{ "tags": ["synapse-v1", "completed"], "priority": "low" }

// Blocked
{ "tags": ["synapse-v2", "blocked"], "priority": "high" }

よくあるユースケース

プロジェクトに関するすべての決定を見つける

curl -H "Authorization: Bearer $KEY" \
     ".../memory/search?q=decision&tag=synapse"

ドメイン内のすべての失敗を見つける

curl -H "Authorization: Bearer $KEY" \
     ".../memory/search?q=mistake&tag=deployment"

アクティブな作業を見つける

curl -H "Authorization: Bearer $KEY" \
     ".../memory/by-tag?tag=active"

技術に関するメモリを見つける

curl -H "Authorization: Bearer $KEY" \
     ".../memory/search?q=postgres+performance&tag=database"

タグのメンテナンス

定期的なレビュー

# 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)")

タグの統合

タグに一貫性がない場合(dockerDocker)は統合してください:

# 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)))

ベストプラクティス

次のステップ