---
status: closed
closed_date: 2026-03-21
closed_reason: 260320 다형식문서 RAG 계획으로 흡수 또는 구현 완료
tags: [research, embedding, ssot, robeing, starsandi, goosecouncil, workspace, index]
---
status: closed
closed_date: 2026-03-21
closed_reason: 260320 다형식문서 RAG 계획으로 흡수 또는 구현 완료

# 임베딩 전체 프로젝트 현황 및 SSOT 리서치

> **1차·2차로 분리됨.**  
> - [1차: 로빙 현황 SSOT](./260316_임베딩_1차_로빙_현황_SSOT_리서치.md)  
> - [2차: StarsAndI·GooseCouncil 현황](./260316_임베딩_2차_StarsAndI_GooseCouncil_현황_리서치.md)

---

**작성일**: 2026-03-16  
**목적**: 워크스페이스 전체 임베딩 사용 현황 조사, 0_VALUE 정책에 따른 SSOT 설정 방안 정리

---

## 1. 상위 문서

- [0_VALUE 임베딩 정책](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/embedding-policy.md)
- [임베딩 Gemini Embedding 2 전환 문제 오픈](../../troubleshooting/260316_임베딩_Gemini_Embedding_2_전환_문제오픈.md)
- [Gemini Embedding 2 리서치: 비용·청킹·도입 검토](./260315_Gemini_Embedding_2_리서치_비용_청킹_도입검토.md)

---

## 2. 전체 프로젝트 임베딩 현황

### 2.1 robeing

| 구성요소 | 모델/경로 | 차원 | 비고 |
|----------|-----------|------|------|
| skill-embedding | ko-sroberta(multitask) | 768 | ONNX 로컬, 포트 8515 |
| skill-rag-file | skill-embedding HTTP 호출 | 768 (fallback) | EMBEDDING_SERVICE_URL |
| rb8001 | SKILL_EMBEDDING_URL | 768 | 메모리 ChromaDB |
| Company X RAG | skill-rag-file 경유 | 384 | intent_prototypes pgvector 768d |
| intent_prototypes | pgvector | 768 | PostgreSQL |

**차원 드리프트**: rb8001 메모리 768/384 혼재. [260312_rb8001_memory_chromadb_768_384_dimension_drift](../../troubleshooting/260312_rb8001_memory_chromadb_768_384_dimension_drift.md) 참조.

### 2.2 StarsAndI

| 구성요소 | 모델/경로 | 차원 | 비고 |
|----------|-----------|------|------|
| recommend.py | OpenAI text-embedding-3-small | 1536 | 사용자 발화 임베딩, 직접 API 호출 |
| 카탈로그 임베딩 | `candidates_merged_projection_embeddings_v1.json` | 1536 | 5044개 별, 153MB, .gitignore |
| add_star_embeddings.py | OpenAI text-embedding-3-small | 1536 | 카탈로그 임베딩 생성 스크립트 |

**용도**: 별 추천. 사용자 발화 임베딩 ↔ 카탈로그 임베딩 cosine 유사도 → 티어별 상위 K개 → LLM 최종 선택.

**경로**:
- `StarsAndI/apps/apps/api-py/app/services/recommend.py` (`_embed_text`, `_top_k_by_embedding`, `len(emb)==1536` 하드코딩)
- `StarsAndI/DATA/scripts/add_star_embeddings.py`
- `StarsAndI/DATA/prompts/recommend/manifest_v1.json` → `candidate_projection_embeddings`
- `StarsAndI/apps/apps/api-py/scripts/time_recommend_stages.py`, `time_recommend_tiers.py`

**0_VALUE 전환 시**:
- `_embed_text()` → Gemini API 또는 skill-embedding 호출, `len(emb)==768` 변경
- `add_star_embeddings.py` → Gemini 2로 변경, 카탈로그 5044개 전체 재임베딩
- 카탈로그 JSON 153MB 재생성 필요

### 2.3 TheGooseCouncil

| 구성요소 | 모델/경로 | 차원 | 비고 |
|----------|-----------|------|------|
| calibrate_value_model.py | OpenAI text-embedding-3-small | 1536 | OPENAI_EMBEDDING_MODEL env |
| test_value_state_decision.py | 동일 | 1536 | 테스트용 |

**경로**: `TheGooseCouncil/tests/`, `.env.local`  
**엔드포인트**: `https://api.openai.com/v1/embeddings`

### 2.4 companyx-knowledge-base

- **직접 임베딩 코드 없음**. skill-rag-file(robeing) 경유.
- SKILL 문서: "Default embedding path: local 384d"

### 2.5 goosefarminvesting

- **pgvector** 언급 (backend README). 실제 임베딩 사용 코드 미확인.
- 지도/공간 데이터용일 가능성 있음.

### 2.6 reference/openclaw

- **외부 참조** 프로젝트. 우리 구현체 아님.
- 지원: openai, gemini, voyage, mistral, ollama, local
- Gemini embedding-2: 768/1536/3072 차원

---

## 3. 영향 범위 (전수)

### 3.1 robeing

| 레포/서비스 | 파일/경로 | 영향 내용 |
|-------------|-----------|-----------|
| skill-embedding | 전체 | ONNX→Gemini 2 전환, /embed 엔드포인트, docker-compose, 포트 8515 |
| skill-embedding | ONNX 모델 경로 | ko-sroberta 제거 또는 보조 전환 |
| skill-rag-file | `app/services/embedding.py` | EmbeddingService 호출 경로 |
| skill-rag-file | `app/api/upload.py` | chromadb_client, embedding_service |
| skill-rag-file | `app/core/config.py` | EMBEDDING_SERVICE_URL |
| skill-rag-file | `docker-compose.yml` | EMBEDDING_SERVICE_URL |
| rb8001 | `app/core/config.py` | EMBEDDING_DIM, SKILL_EMBEDDING_URL |
| rb8001 | `app/state/database.py` | ChromaDB PersistentClient, memory_manager |
| rb8001 | `app/services/brain/intent_store.py` | intent_prototypes pgvector embedding |
| rb8001 | `docker-compose.yml` | SKILL_EMBEDDING_URL=${EMBEDDING_SERVICE_URL:-...} (SSOT 참조) |
| rb8001 | `scripts/migrate_chromadb_collections.py` | ChromaDB 컬렉션 차원 마이그레이션 |
| rb8001 | `scripts/benchmark_emotion_accuracy.py` | skill-embedding /emotion (감정 분류, 임베딩과 별도) |
| rb8001 | `scripts/test_gemini_embedding_2.py` | 벤치마크 스크립트 |
| DOCS | `skills/companyx-rag/SKILL.md` | Default embedding path 384d 문서 |
| DOCS | `book/300_architecture/330_*.md` | ChromaDB 768차원 설계 문서 |

### 3.2 StarsAndI

| 레포/서비스 | 파일/경로 | 영향 내용 |
|-------------|-----------|-----------|
| StarsAndI | `apps/apps/api-py/app/services/recommend.py` | `_embed_text()` Gemini/skill-embedding 호출, `len(emb)==768` 변경 |
| StarsAndI | `DATA/scripts/add_star_embeddings.py` | 카탈로그 임베딩 생성 → Gemini 2로 전환 |
| StarsAndI | `DATA/prompts/recommend/candidates_merged_projection_embeddings_v1.json` | 5044개 768d로 재생성 (153MB) |
| StarsAndI | `apps/apps/api-py/scripts/time_recommend_stages.py` | `_embed_text`, `_top_k_by_embedding` 사용 |
| StarsAndI | `apps/apps/api-py/scripts/time_recommend_tiers.py` | 동일 |
| StarsAndI | `apps/apps/api-py/app/repositories/usage_repository.py` | EMBEDDING_WHERE (로깅, 선택적) |
| StarsAndI | `DOCS/03_Architecture/Recommend_Pipeline.md` | 임베딩 카탈로그 153MB, add_star_embeddings 문서 |

### 3.3 TheGooseCouncil

| 레포/서비스 | 파일/경로 | 영향 내용 |
|-------------|-----------|-----------|
| TheGooseCouncil | `tests/calibrate_value_model.py` | OPENAI_EMBEDDING_MODEL env |
| TheGooseCouncil | `tests/test_value_state_decision.py` | 동일 |
| TheGooseCouncil | `.env.local` | OPENAI_EMBEDDING_MODEL |

### 3.4 companyx-knowledge-base

| 레포/서비스 | 파일/경로 | 영향 내용 |
|-------------|-----------|-----------|
| companyx-knowledge-base | skill-rag-file 경유 | robeing 전환 시 연쇄 반영, 문서 갱신 |

### 3.5 인프라·배포

| 레포/서비스 | 파일/경로 | 영향 내용 |
|-------------|-----------|-----------|
| ivada-infra | skill-embedding 배포, `.env.deploy` | 서비스 전환 시 배포 설정 |
| ivada-infra | 23/24 서버 docker compose | skill-embedding 8515 의존성 |
| workspace-config | runtime.env | `EMBEDDING_SERVICE_URL`, `EMBEDDING_DIM` 반영됨 (SSOT) |

### 3.6 DB·스키마

| 대상 | 영향 내용 |
|------|-----------|
| ChromaDB | 컬렉션 dimension 768 통일, 기존 384 컬렉션 마이그레이션 |
| PostgreSQL | intent_prototypes.embedding 컬럼 (pgvector 768d) |
| skill-rag-file ChromaDB | Company X, NAS RAG 컬렉션 차원 |

### 3.7 NAS RAG

- skill-rag-file이 NAS 마운트 문서를 RAG 대상으로 사용. Company X RAG와 동일 skill-rag-file 경로.
- 영향: skill-rag-file 전환 시 NAS RAG 자동 반영.

---

## 4. 0_VALUE 정책과의 불일치 요약

| 프로젝트 | 현재 | 0_VALUE 요구 | 불일치 |
|----------|------|--------------|--------|
| robeing | ko-sroberta 768d, 384d 혼재 | Gemini 2, 768d, 전수 교체 | 모델, 차원 혼재, 멀티모달 미지원 |
| StarsAndI | OpenAI text-embedding-3-small | Gemini 2, 768d | 모델, 차원 |
| TheGooseCouncil | OpenAI text-embedding-3-small | Gemini 2, 768d | 모델, 차원 |
| companyx-knowledge-base | skill-rag-file 경유 (384d) | Gemini 2, 768d | robeing 전환 시 연쇄 반영 |

---

## 5. SSOT 설정 방안

### 5.1 정책 SSOT (확정)

- **위치**: `0_VALUE/02_Governance/embedding-policy.md`
- **내용**: 모델(Gemini 2), 차원(768), 적용(전수 교체), 멀티모달

### 5.2 런타임 SSOT (반영됨)

- **위치**: `workspace-config/runtime.env`
- **키**: `EMBEDDING_SERVICE_URL`, `EMBEDDING_DIM`, `EMBEDDING_MODEL` — [0_VALUE embedding-policy env SSOT](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/embedding-policy.md)
- **1차 경로 결정**: skill-embedding 교체. [1차 리서치 §7](./260316_임베딩_1차_로빙_현황_SSOT_리서치.md) 참조.
- rb8001: `SKILL_EMBEDDING_URL=${EMBEDDING_SERVICE_URL:-http://localhost:8515}`로 참조
- skill-rag-file: env_file에서 `EMBEDDING_SERVICE_URL` 로드

### 5.3 적용 순서

1. robeing: skill-embedding → Gemini 2 경로 전환, 768d 통일
2. skill-rag-file, rb8001: 새 임베딩 서비스/API 참조
3. StarsAndI, TheGooseCouncil: Gemini API 또는 공용 skill-embedding 호출로 전환
4. workspace-config: 임베딩 관련 키 반영됨 (`EMBEDDING_SERVICE_URL`, `EMBEDDING_DIM`)

---

## 6. 사실(Facts)

- robeing skill-embedding은 ko-sroberta 768d, 포트 8515
- skill-rag-file은 `EMBEDDING_SERVICE_URL`로 skill-embedding 호출
- StarsAndI는 OpenAI text-embedding-3-small (사용자 발화 + 카탈로그 5044개), 1536d, `add_star_embeddings.py`로 카탈로그 생성
- TheGooseCouncil는 OpenAI text-embedding-3-small 직접 호출
- 0_VALUE 임베딩 정책은 Gemini 2, 768d, 전수 교체, 멀티모달로 확정
- workspace-config/runtime.env에 `EMBEDDING_SERVICE_URL`, `EMBEDDING_DIM` 반영됨 (SSOT)

---

## 7. 해석(Interpretation)

- 전수 교체 시 robeing뿐 아니라 StarsAndI, TheGooseCouncil도 변경 대상
- 공용 skill-embedding이 Gemini 2로 전환되면, skill-rag-file·rb8001은 URL만 유지하고 모델은 자동 반영
- StarsAndI는 API 경로 변경 + 카탈로그 5044개 전체 재임베딩 필요 (153MB JSON 재생성)
- TheGooseCouncil는 API 경로 변경(OpenAI → Gemini 또는 skill-embedding) 필요

---

## 8. 미확정 항목(Unresolved)

- StarsAndI·TheGooseCouncil 전환 우선순위 및 일정
- StarsAndI 카탈로그 재임베딩 비용 (5044 × 평균 토큰 × $0.25/1M)
- goosefarminvesting pgvector 용도 (임베딩 vs 공간 데이터)

---

## 9. 관련 문서

- [임베딩 Gemini Embedding 2 전환 문제 오픈](../../troubleshooting/260316_임베딩_Gemini_Embedding_2_전환_문제오픈.md)
- [임베딩 Gemini Embedding 2 전환 계획](../../plans/260316_임베딩_Gemini_Embedding_2_전환_계획.md)
- [Gemini Embedding 2 리서치: 비용·청킹·도입 검토](./260315_Gemini_Embedding_2_리서치_비용_청킹_도입검토.md)
- [rb8001 메모리 ChromaDB 768/384 차원 드리프트](../../troubleshooting/260312_rb8001_memory_chromadb_768_384_dimension_drift.md)
- [skill-embedding 서비스 구축](../../troubleshooting/250805_happybell80_skill-embedding서비스구축.md)
