diff --git a/troubleshooting/250806_happybell80_함수형전환과LLM메모리선택.md b/troubleshooting/250806_happybell80_함수형전환과LLM메모리선택.md index 9a87eb9..06d0670 100644 --- a/troubleshooting/250806_happybell80_함수형전환과LLM메모리선택.md +++ b/troubleshooting/250806_happybell80_함수형전환과LLM메모리선택.md @@ -140,6 +140,72 @@ filtered_memories = await adaptive_memory_selection(query, memories, mistral_key **해결** - 단순 await 누락 - 1줄 수정으로 해결 +## 오전 11시 00분 + +### 메모리 모듈 재구조화 + +**문제** +- memory.py 305줄 비대 +- 여러 책임 혼재 + +**해결** +``` +app/core/memory/ +├── storage.py # ChromaDB I/O +├── identity.py # 신원 관리 +├── selection.py # LLM 선택 +└── scoring.py # 통계/수학 (추가됨) +``` + +**결과** +- 단일 책임 원칙 +- 100% 함수형 유지 +- import 하위 호환성 + +## 오후 12시 00분 + +### 베이지안 + 시간감쇠 구현 + +**문제: 76개 여전히 과도** +- 100개 중 76개 선택 +- 과거 기억 노이즈 +- "안녕하세요" 반복 + +**해결책 구현** +1. **시간 감쇠**: e^(-t/τ) +2. **베이지안 관련성**: P(relevant|distance) +3. **엔트로피 최적 개수**: log2(n) * entropy +4. **MMR 다양성**: λ=1/φ (황금비 역수) +5. **복합 점수**: 조화 평균 + +**하드코딩 제거** +- 3 → e (자연상수) +- 2 → φ (황금비) +- 1/3 → 1/e + +**결과** +- 428줄 scoring.py +- 선택: 100개 → 16개 후보 → 10개 MMR → 6-10개 최종 +- 메모리 개수 대폭 감소 + +## 오후 1시 00분 + +### 남은 문제와 향후 과제 + +**개선됨** +- ✅ 88개 → 6-10개 +- ✅ 날씨 대화 문맥 유지 +- ✅ MMR 다양성 작동 + +**미해결** +- "어떤 내용?" 구체적 답변 실패 +- 최근 대화 우선순위 부족 + +**향후 방향** +- 표준편차 기반 "최근" 정의 +- 대화 클러스터링 +- 참조형 질문 특별 처리 + ## 교훈 1. **Fire & Forget은 위험하다**