Add detailed embedding service comparison
- Embedding architecture comparison (local vs HTTP vs centralized) - Memory usage: rb10408 (500MB) vs rb10508 (0MB) vs skill-embedding (928MB) - Performance metrics: processing speed, caching, scalability - PyTorch dependency analysis (338MB overhead) - Optimization recommendations for both services - Model specifications (multilingual-MiniLM-L12-v2, 384 dims)
This commit is contained in:
parent
5b183940d6
commit
6e6f6e32ca
@ -155,6 +155,84 @@ embedding_response = await httpx.post(
|
||||
| **스킬 체이닝** | 지원 | 미지원 |
|
||||
| **병렬 실행** | 가능 | 불가능 |
|
||||
|
||||
### 임베딩 처리 비교
|
||||
|
||||
| 항목 | rb10408_test | rb10508_micro | skill-embedding |
|
||||
|------|--------------|---------------|-----------------|
|
||||
| **처리 방식** | 로컬 (내장) | HTTP API 호출 | 독립 서비스 |
|
||||
| **라이브러리** | sentence-transformers 3.3.1 | 없음 (외부 의존) | sentence-transformers |
|
||||
| **모델** | 다운로드 필요 | N/A | multilingual-MiniLM-L12-v2 |
|
||||
| **PyTorch** | 2.5.1 (338MB) | 없음 | 있음 |
|
||||
| **CUDA 지원** | 비활성화 | N/A | 비활성화 |
|
||||
| **메모리 사용** | ~500MB (모델 로드 시) | 0MB | 928MB (상시) |
|
||||
| **임베딩 차원** | 384 | 384 (외부) | 384 |
|
||||
| **최대 토큰** | 512 | 512 (외부) | 512 |
|
||||
| **처리 속도** | ~50ms/문장 | ~100ms/문장 (네트워크 포함) | ~30ms/문장 |
|
||||
| **캐싱** | 없음 | 가능 | 메모리 캐시 |
|
||||
|
||||
#### 임베딩 아키텍처 차이
|
||||
|
||||
**rb10408_test - 모놀리식 임베딩**
|
||||
```python
|
||||
from sentence_transformers import SentenceTransformer
|
||||
|
||||
class EmbeddingService:
|
||||
def __init__(self):
|
||||
# 로컬에 모델 다운로드 및 로드
|
||||
self.model = SentenceTransformer('multilingual-MiniLM')
|
||||
|
||||
def embed(self, text):
|
||||
# CPU에서 직접 임베딩 생성
|
||||
return self.model.encode(text)
|
||||
```
|
||||
|
||||
**rb10508_micro - HTTP 임베딩 클라이언트**
|
||||
```python
|
||||
class HTTPEmbeddingFunction:
|
||||
def __init__(self, api_url):
|
||||
self.api_url = api_url
|
||||
|
||||
async def embed(self, texts):
|
||||
# 외부 서비스로 요청
|
||||
response = await httpx.post(
|
||||
f"{self.api_url}/embed",
|
||||
json={"texts": texts}
|
||||
)
|
||||
return response.json()["embeddings"]
|
||||
```
|
||||
|
||||
**skill-embedding - 중앙화된 임베딩 서비스**
|
||||
```python
|
||||
# 독립 실행 서비스 (포트 8015)
|
||||
# 모든 서비스가 공유
|
||||
# 928MB 메모리 상시 사용
|
||||
# 6일간 안정적 운영 중
|
||||
```
|
||||
|
||||
#### 임베딩 성능 분석
|
||||
|
||||
| 시나리오 | rb10408_test | rb10508_micro + skill-embedding |
|
||||
|----------|--------------|----------------------------------|
|
||||
| **첫 요청** | 모델 로드 (3-5초) | 즉시 응답 (서비스 상시 대기) |
|
||||
| **대량 처리** | 빠름 (로컬) | 네트워크 오버헤드 |
|
||||
| **메모리 효율** | 낮음 (중복 로드) | 높음 (공유 서비스) |
|
||||
| **확장성** | 제한적 | 수평 확장 가능 |
|
||||
| **장애 격리** | 전체 영향 | 임베딩만 영향 |
|
||||
|
||||
#### 임베딩 최적화 권장사항
|
||||
|
||||
**rb10408_test 개선안**:
|
||||
1. skill-embedding 서비스 활용으로 전환
|
||||
2. 메모리 300MB+ 절약 가능
|
||||
3. PyTorch 제거로 컨테이너 크기 감소
|
||||
4. 모델 다운로드 시간 제거
|
||||
|
||||
**rb10508_micro 개선안**:
|
||||
1. 임베딩 결과 캐싱 강화
|
||||
2. 배치 처리 구현
|
||||
3. 연결 풀링 최적화
|
||||
4. 재시도 로직 추가
|
||||
|
||||
## 4. 장단점 분석
|
||||
|
||||
### rb10408_test
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user