---
status: closed
closed_date: 2026-03-21
closed_reason: 260320 다형식문서 RAG 계획으로 흡수 또는 구현 완료
tags: [troubleshooting, embedding, gemini, rag, robeing, 1차]
---
status: closed
closed_date: 2026-03-21
closed_reason: 260320 다형식문서 RAG 계획으로 흡수 또는 구현 완료

# 임베딩 1차: 로빙 Gemini 2 전환 문제 오픈

## 상태

- closed

## 상위 원칙

- [0_VALUE 임베딩 정책](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/embedding-policy.md)
- [로빙 문서 작성 원칙](../../book/300_architecture/312_writing-principles.md)
- [백엔드 PostgreSQL ChromaDB Vector Memory](../../book/300_architecture/330_백엔드_PostgreSQL_ChromaDB_Vector_Memory.md)

## 문제 정의

**로빙의 임베딩 구조가 0_VALUE 임베딩 정책과 불일치한다.**

0_VALUE 정책은 Gemini Embedding 2, 768d, 전수 교체, 멀티모달을 요구한다. 로빙 현재 구현은 이를 충족하지 않는다. (1차 범위: robeing만. StarsAndI·TheGooseCouncil는 [2차](./260316_임베딩_2차_StarsAndI_GooseCouncil_전환_문제오픈.md))

### 왜 문제인가

- **상태함수=벡터 철학**: 임베딩은 정보의 상태(ψ)를 벡터로 표현한다. ko-sroberta·텍스트 전용 구조는 이 표현을 제한한다.
- **멀티모달 미지원**: PDF·이미지는 캡셔닝 파이프라인을 거쳐야 하므로 비용·지연·정보 손실이 발생한다.
- **차원 혼재**: 768/384 드리프트는 검색 품질·유지보수 부담을 증가시킨다.

### 현상(증상)

| 현상 | 내용 |
|------|------|
| 모델 | ko-sroberta(multitask) 768d, 텍스트 전용 |
| 경로 | skill-embedding + 서비스별 혼재 (skill-rag-file 384d, intent_prototypes 768d) |
| 차원 | rb8001 메모리 ChromaDB 768/384 드리프트 잔존 |
| 멀티모달 | 미지원 |
| 청킹 | Micro-chunking(300~500 단어) 위주 |

## 현재 상태

- skill-embedding: ko-sroberta 768d
- skill-rag-file: Company X 384d, intent_prototypes pgvector 768d
- rb8001 메모리: ChromaDB 768/384 차원 드리프트
- 기존 데이터: 적음 → 전수 교체 시 기술 부채 거의 없음

## 1차 결정 고정

- **대상 레포**: `skill-embedding`, `skill-rag-file`, `rb8001`, `DOCS`
- **공식 경로**: 1차 대상 서비스는 모두 `skill-embedding`만 공식 임베딩 게이트웨이로 사용합니다.
- **모델/차원**: `Gemini Embedding 2`, `768d`
- **입력 범위**: 텍스트, PDF, 이미지까지 1차 닫힘 범위에 포함합니다.
- **메모리 범위**: `rb8001` 메모리 차원 드리프트도 1차에서 함께 닫습니다.
- **혼재 정책**: 1차 대상 범위 안에서는 `384/768` 혼재를 닫힘 상태로 인정하지 않습니다.
- **새 자료 정책**: 앞으로 들어오는 새 정보/자료도 모두 같은 경로와 차원을 따라야 합니다.
- **배포 기준**: 문서·코드·로컬 검증만으로는 닫지 않고, 실제 배포와 운영 검증까지 완료돼야 닫습니다.
- **검증 강도**: 자동 테스트 + 대표 질문셋 수동 검증 + 운영 구조화 로그를 모두 닫힘 근거로 요구합니다.
- **fallback 정책**: 배포 중 일시적 구형 임베딩 fallback은 허용할 수 있으나, fallback 발생은 구조화 로그로 남겨야 하며 최종 닫힘 시점에는 제거돼야 합니다.
- **재임베딩 시작점**: Company X 문서 컬렉션과 `rb8001` 메모리 컬렉션을 우선 정리하고, 이후 1차 대상 레포의 기존 데이터로 확장합니다.

## 기대 상태 (1차 닫힘 기준)

| 항목 | 내용 |
|------|------|
| 모델 | Gemini Embedding 2 |
| 차원 | 768 (MRL) |
| 경로 | skill-embedding 교체 (ONNX→Gemini 2) |
| 적용 | robeing 전역 (skill-embedding, skill-rag-file, rb8001) |
| env | workspace-config SSOT, 서비스별 오버라이드 금지 |
| 멀티모달 | PDF·이미지 직접 임베딩 |
| 청킹 | 1차 Micro 유지, 2단계 Macro 검토 |
| 운영 데이터 | 1차 대상 범위에서 신규/기존 데이터 모두 768d 단일 경로로 수렴 |
| 메모리 | `rb8001` 메모리 컬렉션까지 768d로 정리되어 차원 드리프트 로그가 사라짐 |

## 영향 범위 (1차)

- skill-embedding (전체, /embed)
- skill-rag-file (embedding.py, upload.py, config, docker-compose)
- rb8001 (memory_manager, intent_store, database.py, config, docker-compose)
- ChromaDB 컬렉션, intent_prototypes pgvector
- migrate_chromadb_collections.py
- DOCS/skills/companyx-rag, 330_백엔드 설계 문서
- ivada-infra skill-embedding 배포
- workspace-config: `EMBEDDING_SERVICE_URL`, `EMBEDDING_DIM`, `EMBEDDING_MODEL` 반영됨 (SSOT)

## 닫힘 조건

1. skill-embedding이 Gemini 2, 768d로 동작한다. (경로: skill-embedding 교체 확정)
2. rb8001·skill-rag-file이 기존 /embed URL로 새 모델을 참조한다.
3. `skill-rag-file` 컬렉션과 `rb8001` 메모리 컬렉션에서 384/768 혼재가 제거되고, ChromaDB·pgvector가 768d로 통일된다.
4. Company X RAG와 `rb8001` 메모리 저장/검색이 새 경로로 동작한다.
5. PDF·이미지 직접 임베딩이 동작하고, 검색 품질은 대표 질문셋 기준 기존 대비 유지 또는 개선된다.
6. 자동 테스트, 수동 질문셋 검증, 운영 구조화 로그가 모두 남는다.
7. 실제 배포 후 fallback 없이 운영 경로가 Gemini 2 단일 경로로 유지된다.
8. worklog와 배포/검증 근거 문서에서 닫힘 선언한다.

## 재현 조건

- NAS RAG, Company X RAG, rb8001 메모리에서 임베딩 요청 시
- 0_VALUE 임베딩 정책과 로빙 구현을 대조할 때

## 확인된 사실

- 0_VALUE 임베딩 정책 확정: Gemini 2, 768d, 전수 교체, 멀티모달
- 리서치(260315)에서 Gemini Embedding 2 특징·비용·청킹 전략 정리됨
- `robeing/tests/test_gemini_embedding_2.py` API 테스트 존재, 확장 예정
- 기존 데이터 적음 → 전수 교체 부담 낮음
- workspace-config env SSOT: 로빙 전역이 따르고 서비스별 오버라이드 금지

## 확정 항목 (리서치·계획 반영)

- **경로**: skill-embedding 교체 (ONNX→Gemini 2). [리서치 §7](../research/rag/260316_임베딩_1차_로빙_현황_SSOT_리서치.md)
- **청킹**: 1차는 기존 Micro 유지. 2단계에서 Macro 검토. [리서치 §8](../research/rag/260316_임베딩_1차_로빙_현황_SSOT_리서치.md)
- **메모리**: `rb8001` 메모리 차원 드리프트도 1차 닫힘 범위에 포함
- **배포/검증**: 실제 배포, 구조화 로그, 대표 질문셋 검증까지 확보해야 닫힘

## 이 문서가 여는 리서치

- [임베딩 1차 로빙 현황 및 SSOT 리서치](../research/rag/260316_임베딩_1차_로빙_현황_SSOT_리서치.md)
- [Gemini Embedding 2 리서치: 비용·청킹·도입 검토](../research/rag/260315_Gemini_Embedding_2_리서치_비용_청킹_도입검토.md)

## 관련 문서

- [0_VALUE 임베딩 정책](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/embedding-policy.md)
- [임베딩 1차 로빙 Gemini 2 전환 계획](../plans/260316_임베딩_1차_로빙_Gemini2_전환_계획.md)
- [임베딩 1차 로빙 Gemini 2 전환 배포 및 검증 완료](../worklog/260316_임베딩_1차_로빙_Gemini2_전환_배포및검증완료.md)
- [임베딩 2차 StarsAndI·GooseCouncil 전환 문제 오픈](./260316_임베딩_2차_StarsAndI_GooseCouncil_전환_문제오픈.md)
- [rb8001 메모리 ChromaDB 768/384 차원 드리프트](./260312_rb8001_memory_chromadb_768_384_dimension_drift.md)
- [skill-embedding 서비스 구축](./250805_happybell80_skill-embedding서비스구축.md)
