docs: rb10508_micro ONNX 통합 작업 트러블슈팅 추가

This commit is contained in:
happybell80 2025-08-04 19:04:47 +09:00
parent 07ffee2123
commit 4b7fc6fcea

View File

@ -118,4 +118,53 @@ volumes:
1. 로컬 개발자가 Dockerfile 및 requirements.txt 수정
2. 베이스 이미지를 python:3.11-slim으로 변경
3. GitHub Actions 워크플로우 업데이트
4. 배포 후 실제 메모리 사용량 측정
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 모듈 구조와 사용법 먼저 확인