피드로 돌아가기
Dev.toAI/ML
원문 읽기
LLM 기반 Memory Agent의 데이터 정합성 확보 및 정교한 Fact 추출 설계
Building a Memory Agent That Actually Forgets (And the Three Bugs That Taught Me Why That's Hard)
AI 요약
Context
기존 AI 채팅의 Stateless 특성을 극복하기 위해 벡터 데이터베이스 기반의 기억 층을 설계함. 초기 설계는 단순 Embedding 저장과 유사도 검색에 의존하여 중요도 판별 및 문맥 참조 과정에서 심각한 데이터 누락과 정밀도 저하가 발생함.
Technical Solution
- LLM Scoring 함수 내 모호한 기준을 제거하고 '이름 최소 0.6점', '구체적 사실 > 일반 범주'와 같은 하드 캘리브레이션 규칙 적용
- 추출 단계에서 현재 턴의 데이터만 참조하던 제한을 제거하고, 최근 대화 이력을 포함하여 'save this'와 같은 지시어의 참조 대상을 해소하는 Context-Aware Extraction 구현
- Fallback 로직으로 인해 은폐된 TypeError를 방지하기 위해 시스템 전반에 Timezone-aware Datetime 적용 및 스키마 정규화
- FastAPI 기반의 Memory Core와 Chat Layer를 분리하여 저장소 지능과 인터페이스 계층의 역할 분담
- Neon Postgres(pgvector)를 통한 벡터 저장과 Upstash Redis를 통한 캐싱 레이어 구축으로 검색 효율 최적화
실천 포인트
1. LLM Scoring 적용 시 앵커 포인트 외에 구체적인 우선순위 가이드라인을 프롬프트에 명시했는가?
2. 정보 추출(Extraction) 파이프라인이 현재 턴 외에 필요한 과거 문맥(Context Window)을 충분히 확보했는가?
3. 시스템의 '성공 응답'과 '실제 데이터 저장 상태'를 교차 검증하는 테스트 케이스가 존재하는가?
4. 시간 데이터 처리 시 Timezone-aware 설정을 통해 런타임 TypeError 가능성을 차단했는가?