나는 AI 에이전트를 위한 Persistent Memory API를 만들었다 — 벡터 검색만으로는 충분하지 않은 이유
Source: Dev.to
문제점
모든 자율 에이전트 프레임워크에는 동일한 조용한 실패가 존재합니다: 메모리 감소.
에이전트는 첫날에 잘 작동합니다. 3주 차가 되면 오래된 사실을 자신 있게 사용하고, 구식 컨텍스트에 기반해 결정을 내리며, 비용이 많이 드는 오류가 발생할 때까지 눈치채지 못합니다.
저는 2개월 동안 자율 AI 에이전트를 24시간 내내 운영해 왔습니다. 에이전트 메모리가 왜 실패하는지, 그리고 어떻게 해결했는지에 대해 배운 점을 공유합니다.
왜 벡터 검색만으로는 에이전트 메모리가 실패하는가
대부분의 에이전트 메모리 솔루션은 다음과 같이 동작합니다:
- 사실을 임베딩으로 저장
- 코사인 유사도로 검색
- 최선을 기대
문제는 벡터 유사도 ≠ 사실 정확도라는 점입니다.
사실이 쿼리와 의미적으로 가깝지만 완전히 틀릴 수 있습니다. 예를 들어, API 엔드포인트가 지난 주에 변경됐지만, 오래된 엔드포인트가 여전히 가장 가까운 벡터 매치가 됩니다. 에이전트는 자신 있게 죽은 엔드포인트를 호출하고, 실패하고, 재시도하면서 토큰을 소모합니다.
누락된 조각: 검색 점수 매기기
각 사실에 실행 결과를 기반으로 한 정확도 점수가 있다면 어떨까요?
- 에이전트가 사실을 검색 → 사용 → 작업 성공 → 점수 상승
- 에이전트가 사실을 검색 → 사용 → 작업 실패 → 점수 하락
- 사실이 2주 동안 검색되지 않음 → 점수 감소
시간이 지나면서 좋은 사실은 부상하고, 나쁜 사실은 가라앉습니다. 수동 큐레이션이 필요 없습니다.
이것이 제가 Engram으로 만든 기능입니다.
Engram 작동 방식
1. 컨텍스트와 함께 저장
curl -X POST https://engram.cipherbuilds.ai/api/facts \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Production API migrated to v3 endpoint",
"category": "infrastructure",
"source": "deploy-log-2026-03-30"
}'
각 사실은 출처, 카테고리, 타임스탬프를 함께 저장합니다. 단순 텍스트가 아니라 컨텍스트가 함께 저장됩니다.
2. 드리프트 감지
curl https://engram.cipherbuilds.ai/api/drift \
-H "Authorization: Bearer YOUR_KEY"
이 API는 감소, 모순, 혹은 오래된 사실들을 반환합니다. 에이전트 지식의 건강 검진과 같습니다.
드리프트 감지: 핵심 기능
드리프트 감지는 “내 에이전트가 실제로는 틀린데도 알고 있다고 생각하는 것이 무엇인가?”에 답합니다.
다음과 같은 항목을 표시합니다:
- 오래된 사실 – X일 동안 접근되지 않아 구식일 가능성이 높은 경우
- 점수가 낮은 사실 – 검색됐지만 실패를 초래한 경우
- 모순 – 최신 사실이 이전 사실을 대체하는 경우
크론 작업으로 정기 실행하고, 에이전트가 고장 나기 전에 알림을 받으세요.
MCP 서버
Engram은 Claude Desktop, Claude Code, Cursor용 MCP 서버로 제공됩니다. 일곱 가지 도구를 제공합니다:
store_fact– 새로운 지식을 영구 저장search_facts– 점수를 고려해 검색score_fact– 실행 결과 보고detect_drift– 감소 중인 지식 찾기list_facts– 저장된 사실 탐색delete_fact– 잘못된 사실 삭제memory_stats– 대시보드 메트릭
무료 티어
- 1 에이전트
- 10,000 사실
- 드리프트 감지를 포함한 전체 API 접근
- 신용카드 필요 없음
시작하기:
앞으로의 계획
- MCP 서버용 npm 패키지 (
npx engram-mcp) - 오픈소스 GitHub 레포 (MCP 서버)
- 다중 에이전트 메모리 공유를 위한 팀 기능
- 드리프트 감지를 위한 웹훅 알림
무료로 체험해 보세요: ****