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
  • 그룹화 — 프로젝트의 모든 "mistake" 메모리 찾기
  • 교차 참조 — 태그를 공유하는 메모리는 관련됨

태깅 스키마

프로젝트 태그

프로젝트 이름을 태그로 사용:

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 (문서 하위 프로젝트만)

패턴 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)))

모범 사례

다음 단계