From 1ff7c14ce0d50785a2f7e91600b72952cc8828ba Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 14 Oct 2025 16:47:16 +0900 Subject: [PATCH] Add 51123 centroid initialization and performance analysis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pgvector extension 설치 완료 - coldmail_embedding_clusters 테이블 생성 및 초기화 - 160개 샘플로 centroid 계산 (coldmail 80, normal 80) - 임베딩 필터 성능 테스트: 75% 정확도 - 웹 검색 기반 개선 방안 조사 (2025 최신 기법) - 결론: 하이브리드 접근(임베딩 1차 → LLM 2차) 적합 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- ...aude_coldmail_filter_tokenization_issue.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md b/troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md index f0aab27..5f224c0 100644 --- a/troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md +++ b/troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md @@ -131,3 +131,92 @@ ### 피드백 루프의 중요성 - 교훈: 실시간 학습 가능한 구조가 장기적으로 유리 + +--- + +## 51123 서버 Centroid 초기화 작업 + +### pgvector Extension 설치 +```bash +# PostgreSQL 개발 헤더 설치 +sudo apt install -y postgresql-server-dev-14 + +# pgvector 소스 빌드 +cd /tmp +git clone --branch v0.7.0 https://github.com/pgvector/pgvector.git +cd pgvector +make && sudo make install + +# DB에 extension 활성화 +sudo -u postgres psql -d main_db -c "CREATE EXTENSION IF NOT EXISTS vector;" +``` + +### coldmail_embedding_clusters 테이블 생성 +```sql +CREATE TABLE IF NOT EXISTS coldmail_embedding_clusters ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + embedding VECTOR(384) NOT NULL, + label TEXT NOT NULL UNIQUE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +-- robeings 사용자 권한 부여 +GRANT SELECT ON coldmail_embedding_clusters TO robeings; +``` + +### Centroid 초기화 스크립트 +**위치**: `/home/admin/scripts/init_coldmail_embeddings.py` + +**샘플 데이터** (총 160개): +- Coldmail 80개: 투자/IR/VC 키워드 50개 + 파일명 형식 30개 +- Normal 80개: 회의/공지/업무 키워드 50개 + 파일명 형식 30개 + +**실행 결과**: +``` +coldmail centroid: 80개 샘플 평균, 차원=384 +normal centroid: 80개 샘플 평균, 차원=384 +✅ coldmail_embedding_clusters 테이블 centroid 업데이트 완료 +``` + +### 임베딩 필터 성능 테스트 + +**테스트 결과** (고유명사 제외): +``` +✅ 투자제안서 검토 요청: coldmail 0.736 > normal 0.441 +✅ pitch deck 공유: coldmail 0.297 > normal 0.230 +✅ 사업계획서 검토: coldmail 0.676 > normal 0.566 +✅ 벤처캐피탈 투자 제안: coldmail 0.652 > normal 0.294 +❌ 회사소개서 첨부: coldmail 0.534 < normal 0.661 +❌ IR 행사 초대: coldmail 0.622 < normal 0.684 +❌ 영수증 발급: coldmail 0.605 > normal 0.590 (오판) + +정확도: 9/12 (75.0%) +``` + +**실패 원인 분석**: +- "회사소개서", "IR 행사" 같은 단어가 normal 패턴과도 겹침 +- 고유명사("올굿즈컴퍼니", "빅웨이브")는 임베딩으로 처리 불가 +- 단순 centroid + cosine similarity의 한계 + +### 개선 방안 조사 (Web Search 2025) + +**1. Confidence-Driven Centroid** +- 잘못 분류된 샘플로 centroid 반복 업데이트 +- 현재: 단순 평균 → 개선: 오분류 샘플 가중치 증가 + +**2. k-Nearest Centroid Neighbor (kNCN)** +- 단순 cosine similarity 대신 k개 이웃 고려 +- Proximal Ratio로 노이즈 샘플 제거 + +**3. Random Forest > Centroid** +- 임베딩 기반 분류는 Random Forest가 centroid보다 정확도 높음 +- 75% → 85%+ 개선 가능 + +**4. Domain-Specific Fine-tuning** +- 범용 임베딩 모델(multilingual-MiniLM)은 coldmail 도메인에 최적화 안 됨 +- coldmail 특화 임베딩 모델 필요 + +**결론**: +- 단순 centroid 방식은 75% 정확도 한계 +- 하이브리드 접근(임베딩 1차 → LLM 2차)이 더 효율적 +- Phase 1 임베딩은 보조 역할, Phase 2 LLM이 최종 판단