From 4b7fc6fcea4317f29073f20e5a84c23cdf2e8600 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Mon, 4 Aug 2025 19:04:47 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20rb10508=5Fmicro=20ONNX=20=ED=86=B5?= =?UTF-8?q?=ED=95=A9=20=EC=9E=91=EC=97=85=20=ED=8A=B8=EB=9F=AC=EB=B8=94?= =?UTF-8?q?=EC=8A=88=ED=8C=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../250804_claude_ONNX임베딩경량화.md | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/troubleshooting/250804_claude_ONNX임베딩경량화.md b/troubleshooting/250804_claude_ONNX임베딩경량화.md index 0bc1a11..f3c648f 100644 --- a/troubleshooting/250804_claude_ONNX임베딩경량화.md +++ b/troubleshooting/250804_claude_ONNX임베딩경량화.md @@ -118,4 +118,53 @@ volumes: 1. 로컬 개발자가 Dockerfile 및 requirements.txt 수정 2. 베이스 이미지를 python:3.11-slim으로 변경 3. GitHub Actions 워크플로우 업데이트 -4. 배포 후 실제 메모리 사용량 측정 \ No newline at end of file +4. 배포 후 실제 메모리 사용량 측정 + +## 오후 7시 04분 - rb10508_micro ONNX 통합 작업 + +### 문제 1: ModuleNotFoundError - sentence_transformers +- **증상**: `ModuleNotFoundError: No module named 'sentence_transformers'` +- **원인**: requirements.txt에서 sentence-transformers 제거했지만 코드에서 여전히 import +- **해결**: memory.py에서 ONNX 기반 임베딩으로 변경 + +### 문제 2: ChromaDB embedding function 충돌 +- **증상**: `ValueError: An embedding function already exists in the collection configuration` +- **원인**: rb10508_test의 기존 ChromaDB가 default embedding으로 생성되어 있음 +- **해결**: rb10508_micro 전용 ChromaDB 경로 사용 (`./chroma_db_micro`) + +### 최종 수정사항 +1. **memory.py 수정**: + ```python + # 기존 + from sentence_transformers import SentenceTransformer + self.embedder = SentenceTransformer(settings.EMBEDDING_MODEL) + + # 변경 + import sys + sys.path.append('/models/onnx') + from chroma_onnx_function import ONNXEmbeddingFunction + self.embedding_function = ONNXEmbeddingFunction("/models/onnx/multilingual-MiniLM-L12-v2") + ``` + +2. **ChromaDB 컬렉션 생성 시 embedding_function 전달**: + ```python + self.episodic = self.client.get_or_create_collection( + name=f"{settings.ROBING_ID}_episodic", + metadata={"type": "episodic"}, + embedding_function=self.embedding_function + ) + ``` + +3. **docker-compose.yml 수정**: + ```yaml + volumes: + - ./chroma_db_micro:/code/chroma_db # 전용 ChromaDB + - ./logs:/code/logs:rw + - /home/admin/ivada_project/onnx_models:/models/onnx:ro + ``` + +### 교훈 +1. **코드와 의존성 동기화**: requirements.txt 수정 시 반드시 코드도 함께 수정 +2. **ChromaDB 데이터 분리**: 서로 다른 embedding function 사용 시 별도 DB 필요 +3. **ONNX 모델 경로**: 서브디렉토리까지 정확히 지정 (`/models/onnx/multilingual-MiniLM-L12-v2`) +4. **추측하지 말고 확인**: 서버의 ONNX 모듈 구조와 사용법 먼저 확인 \ No newline at end of file