Skip to main content

กลยุทธ์การ Tag Memory

วิธี tag memory เพื่อการค้นหาและกรองที่มีประสิทธิภาพ — ระบบ tagging ที่ scale ได้


กลยุทธ์การ Tag Memory

tag เป็นความลับของการดึง memory ที่ scale ได้ คู่มือนี้แสดงวิธี tag memory เพื่อให้ตัวที่ถูกต้องกลับมาในเวลาที่เหมาะสม

ทำไม tag ถึงสำคัญ

ไม่มี tag คุณมีแค่ full-text search แบบ flat มี tag คุณมีการนำทางที่มีโครงสร้าง:

# Without tags: search everything
GET /memory/search?q=docker

# With tags: filter by project + technology
GET /memory/search?q=deployment&tag=synapse&tag=docker

tag เปิดใช้งาน:

  • การกรองที่รวดเร็วGET /memory/by-tag?tag=production
  • Scoped search?q=auth&tag=project-x
  • การจัดกลุ่ม — หา memory "mistake" ทั้งหมดของโปรเจกต์
  • การอ้างอิงข้าม — memory ที่แชร์ tag เกี่ยวข้องกัน

Schema Tagging

Project tag

ใช้ชื่อโปรเจกต์เป็น tag:

synapse, synapse-mcp, synapse-chat, synapse-sdk

Technology tag

ใช้ชื่อเทคโนโลยี:

docker, kubernetes, postgres, fastify, react, typescript

Topic tag

ใช้หมวดหมู่หัวข้อ:

deployment, ci-cd, auth, database, frontend, backend, security

Status tag

ใช้ตัวบ่งชี้สถานะ:

active, completed, blocked, deprecated

Type tag

ใช้ตัวบ่งชี้ประเภท:

decision, mistake, pattern, reference, todo

กฎการ Tag

กฎ 1: 2-5 tag ต่อ memory

tag น้อยเกินไป = ความสามารถในการค้นพบต่ำ tag มากเกินไป = noise

// 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: ตัวพิมพ์เล็ก, ใช้ hyphen

✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKey

กฎ 3: ใช้คำศัพท์ที่สม่ำเสมอ

กำหนดคำศัพท์ tagging และยึดติดกับมัน:

# Project vocabulary
synapse, synapse-mcp, synapse-chat

# NOT: synapse_project, synapseProject, SYNAPSE

กฎ 4: Tag ด้วยเจตนาการค้นหา

ถาม: "ฉันจะค้นหา memory นี้อย่างไร?"

// 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: Project + Topic

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

Search: ?tag=synapse (memory โปรเจกต์ Synapse ทั้งหมด) Search: ?tag=synapse&q=deployment (memory deployment ใน Synapse)

รูปแบบ 2: Type + Domain

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

Search: ?tag=mistake (mistake ทั้งหมด) Search: ?tag=mistake&q=deployment (mistake deployment)

รูปแบบ 3: ลำดับชั้น

สำหรับโปรเจกต์ย่อยในโปรเจกต์:

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

Search: ?tag=synapse (Synapse ทั้งหมด) Search: ?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"

หา mistake ทั้งหมดใน domain

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

หางานที่ active

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

หา memory เกี่ยวกับเทคโนโลยี

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

การบำรุงรักษา tag

ตรวจสอบเป็นคาบ

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

การรวม tag

หากคุณมี tag ไม่สม่ำเสมอ (docker และ Docker) ให้รวม:

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

แนวทางปฏิบัติที่ดีที่สุด

ขั้นตอนถัดไป