diff --git a/journey/ideas/250815_임베딩_단일화_기반_통합_분류_시스템.md b/journey/ideas/250815_임베딩_단일화_기반_통합_분류_시스템.md index 798a5ef..a0e3a75 100644 --- a/journey/ideas/250815_임베딩_단일화_기반_통합_분류_시스템.md +++ b/journey/ideas/250815_임베딩_단일화_기반_통합_분류_시스템.md @@ -5,6 +5,8 @@ 상태: 아이디어 → 실험 예정 관련: 감정 시스템, 윤리 시스템, 임베딩 서비스 +> 2025-11-22 업데이트: 현재 운영 임베딩 서비스는 ko-sroberta 768차원으로 전환되었으며, 본 문서의 384차원 가정은 역사 기록으로만 참고. 차원 불일치 대응은 [251122_happybell80_chromadb_dimension_mismatch.md] 참고. + ## 개요 현재 분리된 3개 모델(임베딩, 감정, 윤리)을 단일 임베딩 모델로 통합하여 메모리 67% 절감, 속도 3배 향상을 달성하는 아키텍처입니다. 하나의 벡터로 기억 저장, 감정 분류, 윤리 판단을 동시에 수행합니다. @@ -588,4 +590,4 @@ def standardize_embedding(embedding): *"차원보다 중요한 것은 마진이다"* -**다음 단계**: 마진 기반 에스컬레이션 파일럿 테스트 \ No newline at end of file +**다음 단계**: 마진 기반 에스컬레이션 파일럿 테스트 diff --git a/journey/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md b/journey/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md index e730bb1..c139912 100644 --- a/journey/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md +++ b/journey/plans/251110_gemini_file_search_콜드메일_tdd_테스트_계획.md @@ -45,6 +45,7 @@ ## 2. 임베딩 차원 호환성 ### 현재 시스템 +- **2025-11-22 업데이트**: skill-embedding은 ko-sroberta 768차원으로 운영 중이며, 기존 384차원 컬렉션과 혼용하면 차원 불일치가 발생한다. 실제 운영 상태와 불일치한 아래 384차원 가정은 참조용이며, 대응 방안은 [251122_happybell80_chromadb_dimension_mismatch.md] 참고. - skill-embedding: multilingual-MiniLM-L12-v2 (384차원) - ChromaDB 컬렉션: skill_rag_file_{team_id}_documents @@ -214,4 +215,3 @@ **작성**: Claude Code, 2025-11-10 **상태**: 계획 단계 (구현 전) **참고**: research/rag/251110_gemini_file_search_api_테스트_및_콜드메일_개선방안_평가.md - diff --git a/journey/research/memory/embedding_search/2025_ko_sroberta_runtime_eval.md b/journey/research/memory/embedding_search/2025_ko_sroberta_runtime_eval.md index 7586a6e..750185b 100644 --- a/journey/research/memory/embedding_search/2025_ko_sroberta_runtime_eval.md +++ b/journey/research/memory/embedding_search/2025_ko_sroberta_runtime_eval.md @@ -11,7 +11,7 @@ refs: # Ko-SRoBERTa 임베딩 전환 사전 검증 ## 1. 배경 -- 현재 8515 `skill-embedding`은 multilingual MiniLM-L12-v2 ONNX(384d) 기반으로, [370번 문서]에서 정의한 중앙 임베딩 서비스 구조를 따른다. +- **2025-11-22 업데이트**: 8515 `skill-embedding`이 ko-sroberta(multitask) 768d로 배포됨. 기존 384d 가정은 더 이상 유효하지 않으며, 384d 컬렉션과 혼용 시 차원 불일치가 발생하므로 [251122_happybell80_chromadb_dimension_mismatch.md] 참고. - Intent/runtime 고도화 계획(251017 문서)과 Vector Memory 아키텍처(330번 문서)에서는 한국어 특화 SentenceTransformer 채택을 고려하고 있어, Ko-SRoBERTa(multitask, 768d)를 후보 모델로 선정했다. - 실제 전환 전, 의도 분류·콜드메일 IR·SemanticIntentClassifier 흐름에서 정량 비교가 필요해 본 리포트를 작성했다. @@ -67,4 +67,3 @@ refs: - 신규 `tests/data/intent_eval_calendar.json` 10문장 기준 accuracy **100%**, avg 25.0 ms. - `PYTHONPATH=. pytest tests/test_intent_entity_skill_comprehensive.py -k intent_classification_coverage` → 22 testcases all pass, 일정 문장 2건도 `calendar_event` 판정. - 남은 TODO: coldmail/vector 데이터 재임베딩 자동화, SemanticIntentClassifier threshold를 운영 모니터링에 노출. - diff --git a/journey/troubleshooting/250805_happybell80_skill-embedding서비스구축.md b/journey/troubleshooting/250805_happybell80_skill-embedding서비스구축.md index 83cfb52..ce4a03c 100644 --- a/journey/troubleshooting/250805_happybell80_skill-embedding서비스구축.md +++ b/journey/troubleshooting/250805_happybell80_skill-embedding서비스구축.md @@ -4,6 +4,8 @@ **작업자**: happybell80 & Claude **관련 서버**: 51124 (skill-embedding 서비스) +> 2025-11-22 업데이트: 현재 skill-embedding은 ko-sroberta(multitask) 768차원으로 전환됨. 이하 384차원 설정은 초기 구축 기록이며, 차원 불일치 대응은 [251122_happybell80_chromadb_dimension_mismatch.md] 참고. + ## 오전 10시 30분 ### 임베딩 서비스 분리 결정 @@ -518,4 +520,4 @@ class Settings(BaseSettings): 23. **적절한 로그 레벨 설정** - LOG_LEVEL=INFO로 필요한 로그만 기록 - DEBUG 환경변수와 LOG_LEVEL 구분 필요 - - 프로덕션에서는 INFO 레벨 권장 \ No newline at end of file + - 프로덕션에서는 INFO 레벨 권장 diff --git a/journey/troubleshooting/251122_happybell80_chromadb_dimension_mismatch.md b/journey/troubleshooting/251122_happybell80_chromadb_dimension_mismatch.md new file mode 100644 index 0000000..9653960 --- /dev/null +++ b/journey/troubleshooting/251122_happybell80_chromadb_dimension_mismatch.md @@ -0,0 +1,24 @@ +# ChromaDB 차원 불일치로 RAG 검색 실패 + +- **날짜**: 2025-11-22 +- **작성자**: happybell80 +- **관련 서비스**: skill-rag-file (8508), skill-embedding (8515), rb8001 +- **관련 문서**: 370_임베딩_서비스_분리_아키텍처.md, 2025_ko_sroberta_runtime_eval.md + +## 상황 +- skill-embedding이 ko-sroberta(multitask) 768차원으로 교체된 상태에서 기존 ChromaDB 컬렉션이 384차원 설정으로 남아 있음. +- 실제 파일 테스트(`scripts/test_ir_extraction_real_file.py dc1da3f6-... 7944...`) 결과 IR 지표가 모두 `N/A`. +- skill-rag-file 로그에 `Collection expecting embedding with dimension of 384, got 768`가 반복 기록. + +## 원인 +1. 이전 MiniLM(384d)로 생성된 컬렉션에 새 임베딩(768d)을 조회/삽입하면서 차원 불일치 발생. +2. 업로드 직후 호출 타이밍 이슈가 보조적으로 있을 수 있으나, 차원 불일치 때문에 검색 결과가 0건으로 고정. + +## 조치/계획 +- **재인덱싱 필요**: `skill_rag_file_79441171-3951-4870-beb8-916d07fe8be5_documents` 등 기존 컬렉션을 768차원으로 재생성 후 해당 document_id를 재인덱싱. +- 재인덱싱 전 임시 우회 없음. 기존 384d 컬렉션 유지 시 검색 0건 → IR `N/A`. +- 재인덱싱 후 `scripts/test_ir_extraction_real_file.py `로 검증 예정. + +## 교훈 +- 임베딩 모델 교체 시 기존 벡터 DB 차원과 일관성 확인 필수(배포 전 마이그레이션/dual-write 계획). +- RAG 결과 0건이 지속되면 ChromaDB 차원/메타데이터부터 점검하고, 로그에 dimension mismatch가 없는지 확인.