docs: 콜드메일 온톨로지 Phase 1.5 베이지안 학습 계획 문서 작성 및 문서 정리
- Phase 2-3을 ideas로 이동 (Neo4j 기억 시스템, 감정-기억-윤리) - Phase 1.5 베이지안 학습 계획 문서 신규 작성 - 기존 계획 문서는 Phase 1 완료 내용만 남기고 archive로 이동 - 문서 원칙 준수: 파일명:줄번호 형식, 코드 예시 간소화
This commit is contained in:
parent
3909a057c5
commit
8a6189c96b
@ -0,0 +1,60 @@
|
||||
# 콜드메일 온톨로지 Phase 2-3: Neo4j 기억 시스템 및 감정-기억-윤리 삼각형
|
||||
|
||||
**날짜**: 2025-10-16
|
||||
**원본 계획**: `plans/251016_ontology_coldmail_implementation.md`
|
||||
**상태**: 아이디어 단계 (미착수)
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Neo4j 기억 시스템
|
||||
|
||||
### 개념 계층
|
||||
```
|
||||
메일
|
||||
└── 외부메일
|
||||
└── 제안메일
|
||||
└── coldmail (투자제안)
|
||||
├── IR자료
|
||||
├── 피칭덱
|
||||
└── 사업계획서
|
||||
```
|
||||
|
||||
### 인프라
|
||||
|
||||
**Neo4j 설치 완료** (51123 서버):
|
||||
- 버전: 2025.06.2 Community
|
||||
- Bolt: neo4j://192.168.219.45:7687
|
||||
- HTTP: http://192.168.219.45:7474
|
||||
|
||||
### 스키마 설계
|
||||
|
||||
```
|
||||
(:User)-[:SENDS]->(:Email)-[:CONTAINS]->(:Attachment)
|
||||
(:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
|
||||
(:Email)-[:HAS_EMOTION]->(:Emotion {type:"fear", confidence:0.8})
|
||||
```
|
||||
|
||||
### 쿼리 예시
|
||||
```cypher
|
||||
// 투자 제안 이메일 중 긍정적 감정 메일 찾기
|
||||
MATCH (u:User)-[:SENDS]->(e:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
|
||||
WHERE e.emotion IN ["happiness", "neutral"]
|
||||
RETURN e.subject, e.sender, e.timestamp
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: 감정-기억-윤리 삼각형
|
||||
|
||||
**파일**: `rb8001/app/services/memory/neo4j_client.py`
|
||||
- 감정 분석 → 기억 검색 → 윤리 제약 → 응답 생성
|
||||
- Neo4j에 감정 이력 저장
|
||||
- 패턴 분석 (우울증 조기 감지)
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- `book/200_core_design/225_온톨로지_기반_지식_표현.md`
|
||||
- `troubleshooting/250815_emotion_model_training.md`
|
||||
- `troubleshooting/251016_emotion_ontology_basic.md`
|
||||
@ -1,96 +0,0 @@
|
||||
# 온톨로지 기반 Coldmail 필터 구현 계획
|
||||
|
||||
**날짜**: 2025-10-16
|
||||
**목표**: 임베딩 한계(파인티처 메일 누락)를 온톨로지 추론으로 해결
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Coldmail 온톨로지 (✅ 완료)
|
||||
|
||||
→ 상세: `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md`
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Neo4j 기억 시스템 (⏳ 미착수)
|
||||
|
||||
### 개념 계층
|
||||
```
|
||||
메일
|
||||
└── 외부메일
|
||||
└── 제안메일
|
||||
└── coldmail (투자제안)
|
||||
├── IR자료
|
||||
├── 피칭덱
|
||||
└── 사업계획서
|
||||
```
|
||||
|
||||
### 추론 규칙 (10개)
|
||||
|
||||
**Coldmail 판정 (6개)**:
|
||||
1. 제목 CONTAINS ["투자", "IR", "피칭"] + PDF 첨부 → 0.9
|
||||
2. 첨부파일명 CONTAINS ["회사소개서", "IR_Deck"] → 0.85
|
||||
3. 제목 "검토요청" + 첨부 → 0.8
|
||||
4. 미등록 발신자 + PDF → 0.7
|
||||
5. 본문 CONTAINS ["투자 유치", "펀딩", "밸류에이션"] → 0.75
|
||||
6. 발신자 도메인 IN ["startup", "ventures", "capital"] → 0.6
|
||||
|
||||
**Normal 판정 (4개)**:
|
||||
7. 제목 CONTAINS ["행사", "초대", "세미나"] → 0.9
|
||||
8. 제목 CONTAINS ["영수증", "세금계산서"] → 0.95
|
||||
9. 제목 CONTAINS ["회의", "공지", "보고"] → 0.85
|
||||
10. 등록 발신자 + 규칙 1-6 미해당 → 0.8
|
||||
|
||||
### 구현 필요
|
||||
|
||||
**파일**: `rb8001/app/services/coldmail_ontology_reasoner.py`
|
||||
- 규칙 엔진 구현
|
||||
- 임베딩 분류(현재 75%) + 온톨로지 추론 → 90%+ 목표
|
||||
- Threshold: 0.7 이상 확정, 0.4-0.7은 LLM fallback
|
||||
|
||||
**검증**:
|
||||
- 파인티처 메일: coldmail 0.9+ (현재 0.28)
|
||||
- 기존 17건 재테스트: 정확도 90%+
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Neo4j 기억 시스템 (미착수)
|
||||
|
||||
### 인프라
|
||||
|
||||
**Neo4j 설치 완료** (51123 서버):
|
||||
- 버전: 2025.06.2 Community
|
||||
- Bolt: neo4j://192.168.219.45:7687
|
||||
- HTTP: http://192.168.219.45:7474
|
||||
|
||||
### 스키마 설계
|
||||
|
||||
```
|
||||
(:User)-[:SENDS]->(:Email)-[:CONTAINS]->(:Attachment)
|
||||
(:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
|
||||
(:Email)-[:HAS_EMOTION]->(:Emotion {type:"fear", confidence:0.8})
|
||||
```
|
||||
|
||||
### 쿼리 예시
|
||||
```cypher
|
||||
// 투자 제안 이메일 중 긍정적 감정 메일 찾기
|
||||
MATCH (u:User)-[:SENDS]->(e:Email)-[:CLASSIFIED_AS]->(:Category {name:"coldmail"})
|
||||
WHERE e.emotion IN ["happiness", "neutral"]
|
||||
RETURN e.subject, e.sender, e.timestamp
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: 감정-기억-윤리 삼각형 (미착수)
|
||||
|
||||
**파일**: `rb8001/app/services/memory/neo4j_client.py`
|
||||
- 감정 분석 → 기억 검색 → 윤리 제약 → 응답 생성
|
||||
- Neo4j에 감정 이력 저장
|
||||
- 패턴 분석 (우울증 조기 감지)
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- `book/200_core_design/225_온톨로지_기반_지식_표현.md`
|
||||
- `troubleshooting/250815_emotion_model_training.md`
|
||||
- `troubleshooting/251016_emotion_ontology_basic.md`
|
||||
@ -0,0 +1,137 @@
|
||||
# 콜드메일 온톨로지 Phase 1.5: 베이지안 학습 구현 계획
|
||||
|
||||
**날짜**: 2026-01-13
|
||||
**목표**: 온톨로지 규칙 confidence 값을 하드코딩에서 베이지안 학습 기반으로 전환
|
||||
**원본 계획**: `plans/251016_ontology_coldmail_implementation.md` (Phase 1 완료)
|
||||
|
||||
---
|
||||
|
||||
## 배경
|
||||
|
||||
### 현재 문제점
|
||||
- **하드코딩된 confidence**: 온톨로지 규칙의 confidence 값(0.7, 0.9 등)이 코드에 하드코딩되어 있음
|
||||
- **학습 불가능**: 사용자 피드백이 규칙 confidence에 반영되지 않음
|
||||
- **정적 판정**: 시간이 지나도 규칙 신뢰도가 개선되지 않음
|
||||
|
||||
### 기존 구현 상태
|
||||
- **Phase 1 완료**: 온톨로지 규칙 엔진 구현 완료 (10개 규칙)
|
||||
- **Naive Bayes**: 단어 빈도 기반 학습은 구현되어 있으나, 온톨로지 규칙과 분리됨
|
||||
- **피드백 시스템**: Slack 피드백 수집은 되지만 규칙 confidence 업데이트에 미사용
|
||||
|
||||
---
|
||||
|
||||
## 목표
|
||||
|
||||
### 핵심 목표
|
||||
- **단어별 Beta(α,β) 분포**: 메일 제목/내용의 각 단어별로 Beta 분포 파라미터 저장
|
||||
- **피드백 기반 업데이트**: 사용자 "맞음" 피드백 → α 증가, "틀림" 피드백 → β 증가
|
||||
- **동적 confidence 계산**: confidence = α/(α+β)로 실시간 계산하여 하드코딩 값 대체
|
||||
|
||||
### 기대 효과
|
||||
- **지속적 개선**: 피드백이 누적될수록 정확도 향상
|
||||
- **규칙별 적응**: 각 규칙이 실제 데이터에 맞게 자동 조정
|
||||
- **투명성 유지**: 온톨로지 규칙의 설명 가능성 보존
|
||||
|
||||
---
|
||||
|
||||
## 구현 계획
|
||||
|
||||
### Phase 1.5.1: DB 스키마 설계 (2시간)
|
||||
|
||||
**테이블**: `coldmail_ontology_rule_stats`
|
||||
```sql
|
||||
CREATE TABLE coldmail_ontology_rule_stats (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
rule_id VARCHAR(50) NOT NULL UNIQUE, -- R1, R1B, R2, R3, ...
|
||||
alpha FLOAT DEFAULT 1.0, -- Beta 분포 α 파라미터
|
||||
beta FLOAT DEFAULT 1.0, -- Beta 분포 β 파라미터
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_rule_id ON coldmail_ontology_rule_stats(rule_id);
|
||||
```
|
||||
|
||||
**초기 데이터**: 10개 규칙에 대해 alpha=1.0, beta=1.0 (균등 분포)로 초기화
|
||||
|
||||
**참고**: 다른 모듈의 베이지안 구현
|
||||
- `app/core/emotion/bayesian.py`: Beta 분포 업데이트 패턴
|
||||
- `app/services/brain/intent_store.py`: intent_path_stats 테이블의 alpha/beta 구조
|
||||
|
||||
---
|
||||
|
||||
### Phase 1.5.2: Repository 구현 (3시간)
|
||||
|
||||
**파일**: `rb8001/app/state/repositories/coldmail_ontology_repository.py`
|
||||
|
||||
**필수 함수**:
|
||||
- `get_rule_confidence(rule_id)`: 규칙별 confidence 조회 (α/(α+β))
|
||||
- `update_rule_feedback(rule_id, is_correct)`: 피드백 기반 alpha/beta 업데이트 (맞음→alpha+1, 틀림→beta+1)
|
||||
- `get_all_rule_stats()`: 모든 규칙의 alpha/beta 조회
|
||||
|
||||
**참고**: `coldmail_classifier_repository.py`의 update_word_count 패턴
|
||||
|
||||
---
|
||||
|
||||
### Phase 1.5.3: 온톨로지 Reasoner 수정 (4시간)
|
||||
|
||||
**파일**: `coldmail_ontology_reasoner.py:251-328`
|
||||
|
||||
**변경 사항**:
|
||||
- `decide_coldmail()` 함수를 async로 변경
|
||||
- 매칭된 규칙의 confidence를 DB에서 동적 조회 (하드코딩 값 대신)
|
||||
- DB 없을 때 하드코딩 값 폴백 (하위 호환성)
|
||||
|
||||
---
|
||||
|
||||
### Phase 1.5.4: 피드백 연동 (3시간)
|
||||
|
||||
**파일**: `coldmail_feedback.py`, `coldmail_processor.py`, `slack/coldmail_service.py`
|
||||
|
||||
**변경 사항**:
|
||||
- `process_coldmail()`에서 매칭된 규칙 ID 저장
|
||||
- 사용자 피드백 시 매칭된 규칙들의 alpha/beta 업데이트 (맞음→alpha+1, 틀림→beta+1)
|
||||
|
||||
---
|
||||
|
||||
### Phase 1.5.5: 테스트 및 검증 (2시간)
|
||||
|
||||
**테스트 케이스**:
|
||||
1. **초기 상태**: DB 없을 때 하드코딩 값 사용 확인
|
||||
2. **피드백 업데이트**: "맞음" 클릭 후 alpha 증가 확인
|
||||
3. **confidence 계산**: α/(α+β) 값이 올바르게 계산되는지 확인
|
||||
4. **다중 규칙**: 여러 규칙 매칭 시 각각 독립적으로 업데이트되는지 확인
|
||||
|
||||
**검증 지표**:
|
||||
- 피드백 반영 시간: 즉시 반영 (< 1초)
|
||||
- 하위 호환성: 기존 하드코딩 값과 유사한 초기 동작
|
||||
- 정확도 개선: 피드백 누적 후 정확도 향상 측정
|
||||
|
||||
---
|
||||
|
||||
## 구현 순서
|
||||
|
||||
1. **DB 스키마 생성** (Phase 1.5.1)
|
||||
2. **Repository 구현** (Phase 1.5.2)
|
||||
3. **온톨로지 Reasoner 수정** (Phase 1.5.3)
|
||||
4. **피드백 연동** (Phase 1.5.4)
|
||||
5. **테스트 및 검증** (Phase 1.5.5)
|
||||
|
||||
**소요 시간**: 총 14시간 (약 2일)
|
||||
|
||||
---
|
||||
|
||||
## 참고 문서
|
||||
|
||||
- 원본 계획: `plans/archive/251016_ontology_coldmail_implementation.md`
|
||||
- Phase 1 구현: `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md`
|
||||
- 검증 문서: `troubleshooting/251016_ontology_filter_validation.md`
|
||||
- 베이지안 패턴: `app/core/emotion/bayesian.py`, `app/services/brain/intent_store.py`
|
||||
|
||||
---
|
||||
|
||||
## 주의사항
|
||||
|
||||
- 하위 호환성: 기존 하드코딩 값은 초기값으로 유지 (DB 없을 때 폴백)
|
||||
- 점진적 전환: 기존 규칙 confidence를 DB에 마이그레이션하여 초기값 설정
|
||||
- 성능: DB 조회는 비동기로 처리하여 필터링 속도 저하 방지
|
||||
@ -0,0 +1,53 @@
|
||||
# 온톨로지 기반 Coldmail 필터 구현 계획 (Phase 1 완료)
|
||||
|
||||
**날짜**: 2025-10-16
|
||||
**목표**: 임베딩 한계(파인티처 메일 누락)를 온톨로지 추론으로 해결
|
||||
**상태**: Phase 1 완료, Phase 1.5 계획 분리
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Coldmail 온톨로지 (✅ 완료)
|
||||
|
||||
→ 상세: `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md`
|
||||
|
||||
### 구현 완료 내용
|
||||
|
||||
**파일**: `rb8001/app/services/coldmail_ontology_reasoner.py`
|
||||
- 규칙 엔진 구현 (10개 규칙)
|
||||
- 임베딩 분류(75%) + 온톨로지 추론 → 90%+ 달성
|
||||
- Threshold: 0.7 이상 확정, 0.4-0.7은 LLM fallback
|
||||
|
||||
**검증 결과**:
|
||||
- 파인티처 메일: coldmail 0.28 → 0.90 (성공)
|
||||
- 기존 17건 재테스트: 정확도 100%
|
||||
|
||||
**추론 규칙 (10개)**:
|
||||
|
||||
**Coldmail 판정 (6개)**:
|
||||
1. 제목 CONTAINS ["투자", "IR", "피칭"] + PDF 첨부 → 0.9
|
||||
2. 첨부파일명 CONTAINS ["회사소개서", "IR_Deck"] → 0.85
|
||||
3. 제목 "검토요청" + 첨부 → 0.8
|
||||
4. 미등록 발신자 + PDF → 0.7
|
||||
5. 본문 CONTAINS ["투자 유치", "펀딩", "밸류에이션"] → 0.75
|
||||
6. 발신자 도메인 IN ["startup", "ventures", "capital"] → 0.6
|
||||
|
||||
**Normal 판정 (4개)**:
|
||||
7. 제목 CONTAINS ["행사", "초대", "세미나"] → 0.9
|
||||
8. 제목 CONTAINS ["영수증", "세금계산서"] → 0.95
|
||||
9. 제목 CONTAINS ["회의", "공지", "보고"] → 0.85
|
||||
10. 등록 발신자 + 규칙 1-6 미해당 → 0.8
|
||||
|
||||
---
|
||||
|
||||
## 후속 작업
|
||||
|
||||
- **Phase 1.5**: 베이지안 학습 구현 → `plans/260113_coldmail_ontology_phase1_5_bayesian_learning.md`
|
||||
- **Phase 2-3**: Neo4j 기억 시스템 및 감정-기억-윤리 → `ideas/251016_coldmail_ontology_phase2_3_neo4j_emotion.md`
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md`
|
||||
- `troubleshooting/251016_ontology_filter_validation.md`
|
||||
- `book/200_core_design/225_온톨로지_기반_지식_표현.md`
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
20. 사용자가 "로빙아 회의록 작성해줘"라고 하면 관련 기능 실행 ❌ [계획 필요]
|
||||
21. 사용자가 Slack에서 IR 덱 파일 업로드 시 자동 평가 및 Slack Lists 등록 ❌ [미구현: troubleshooting/251206_ir_deck_system_current_status.md] - 파일 업로드만 되고 평가/등록 안 됨
|
||||
22. 사용자가 웹 프론트엔드 설정에서 사용자 선호도(뉴스 키워드, 이메일 필터 등) 설정 ❌ [계획 필요]
|
||||
22. 사용자가 웹 프론트엔드 설정에서 사용자 선호도(뉴스 키워드, 이메일 필터 등) 설정 ✅ [구현 완료: troubleshooting/250827_frontend_backend_preferences_API_연동_완료.md] - frontend-customer ActivityPanel, robeing-monitor preferences API
|
||||
23. 사용자가 콜드메일로 받은 IR 덱을 Sequoia Capital 기준으로 평가 ❌ [미구현: troubleshooting/251206_ir_deck_system_current_status.md] - 현재 베이지안 밸류에이션만 사용
|
||||
|
||||
---
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user