# ChromaDB 베이스 이미지 전환 및 Python 3.13 호환성 해결

**날짜**: 2025-07-31  
**작업자**: happybell80 & Claude  
**관련 프로젝트**: docker-base, rb8001, rb10508_test, rb10408_test

## 오전 10시 00분

### 문제 상황

**ChromaDB 초기화 실패**:
- rb10508_test 컨테이너에서 오류 발생
- `The sentence_transformers python package is not installed`
- 원인: CI 빌드 시간 단축을 위해 sentence-transformers 제거 (1GB+ 절약)

**배경**:
- 2025-07-09: 한국어 성능 향상을 위해 sentence-transformers 추가
- 2025-07-23: 빌드 시간 단축을 위해 torch, sentence-transformers 제거
- 현재: 프론트엔드-로빙 연결은 정상, 대화 기록만 저장 안됨

## 오전 10시 05분

### 해결 방안 검토

**ChromaDB 임베딩 솔루션 비교분석 문서 확인**:
1. 베이스 이미지 전략 (선택)
2. pip wheel 사전 빌드
3. ChromaDB 기본 임베딩
4. FastEmbed 경량 라이브러리
5. sentence-transformers 재추가

**베이스 이미지 전략 선택 이유**:
- 빌드 시간: 10분 → 30초~1분
- 한국어 성능 우수
- 여러 로빙이 공유 가능

## 오전 10시 07분

### docker-base 저장소 생성

**구조**:
```
docker-base/
├── README.md
├── Dockerfile.chroma_vector
└── .gitignore
```

**Dockerfile.chroma_vector 내용**:
```dockerfile
FROM python:3.13-slim

# 시스템 패키지 설치
RUN apt-get update && apt-get install -y \
    build-essential \
    curl \
    git \
    && rm -rf /var/lib/apt/lists/*

# PyTorch 및 sentence-transformers 설치
RUN pip install --no-cache-dir \
    torch==2.5.1 \
    sentence-transformers==3.3.1 \
    transformers==4.48.0

WORKDIR /code

LABEL maintainer="ivada_Ro-being" \
      description="Base image for ChromaDB with Korean embedding support" \
      version="1.0"
```

**Gitea 저장소 생성**:
```bash
git init
git remote add origin https://git.ro-being.com/ivada_Ro-being/docker-base.git
git push -u origin main
```

## 오전 10시 10분

### 51124 서버에서 베이스 이미지 빌드

**서버 메시지**:
> 베이스 이미지 빌드가 완료되었습니다. 이제 로컬에서 각 로빙 서비스의 Dockerfile을 수정하여 FROM python:3.13-slim을 FROM chroma_vector:1.0으로 변경하신 후 Gitea에 푸시하시면 자동 배포됩니다.

## 오전 10시 15분

### 로빙 서비스 Dockerfile 수정

**rb10508_test/Dockerfile**:
```dockerfile
# 변경 전
FROM python:3.13-slim

# 변경 후
FROM chroma_vector:1.0
```

**rb8001/Dockerfile**:
- 동일하게 수정

**rb10408_test**:
- 희재님이 별도로 수정 예정

## 오전 10시 20분

### Python 3.13 호환성 문제 발견

**CI/CD 배포 중 오류**:
```
ModuleNotFoundError: No module named 'pipes'
```

**원인**:
- Python 3.13에서 pipes 모듈 제거
- docker-compose가 Python 3.13과 호환되지 않음

## 오전 10시 25분

### CI/CD 스크립트 수정

**해결 방법**:
- `docker-compose` → `docker compose` 변경
- Docker 20.10+ 내장 compose 명령 사용

**수정 파일**:
- rb10508_test/.gitea/workflows/cicd.yml
- rb8001/.gitea/workflows/cicd.yml

**변경 내용**:
```bash
# 변경 전
docker-compose down
docker-compose up -d --build
docker-compose ps
docker-compose logs

# 변경 후
docker compose down
docker compose up -d --build
docker compose ps
docker compose logs
```

## 결과

### 완료된 작업
1. ✅ docker-base 저장소 생성 (chroma_vector:1.0)
2. ✅ 51124 서버에 베이스 이미지 빌드
3. ✅ rb10508_test, rb8001 Dockerfile 수정
4. ✅ Python 3.13 호환성을 위한 CI/CD 수정
5. ✅ 모든 변경사항 Gitea에 push

### 개선 효과
- ChromaDB 벡터 임베딩 정상 작동
- 빌드 시간: 10분 → 1분
- 한국어 임베딩 성능 유지
- Python 3.13 호환성 확보

## 교훈

1. **베이스 이미지 전략의 효과**
   - 공통 의존성을 베이스 이미지로 분리
   - CI/CD 빌드 시간 대폭 단축
   - 여러 서비스가 일관된 환경 공유

2. **Python 버전 업그레이드 시 주의**
   - deprecated 모듈 사전 확인 필수
   - docker-compose 같은 도구의 호환성 검토
   - Docker 내장 명령 우선 사용 권장

3. **단계적 문제 해결**
   - ChromaDB 문제 → 베이스 이미지로 해결
   - Python 3.13 문제 → docker compose로 전환
   - 각 문제를 독립적으로 해결

4. **문서화의 중요성**
   - 이전 결정사항 히스토리 추적
   - 다양한 해결 방안 비교 분석
   - 향후 유사 문제 발생 시 참고 가능