From 1c8fc39a4d331e8b2ef3d9bd7c2b80c4a7192b35 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Thu, 7 Aug 2025 01:10:45 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=B2=A0=EC=9D=B4=EC=A7=80=EC=95=88=20?= =?UTF-8?q?=EB=A9=94=EB=AA=A8=EB=A6=AC=20=EC=84=A0=ED=83=9D=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20=EB=82=A8=EC=9D=80=20=EA=B3=BC=EC=A0=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...80_함수형전환과LLM메모리선택.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) 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은 위험하다**