docs: harmonize rb8001/rb10508 roles, gateway routing, ports; unify proxy_pass slashes; externalize RAG; fix nginx-infra refs; generalize embedding dims; skill sharing notes

This commit is contained in:
happybell80 2025-09-10 15:51:06 +09:00
parent 4876880160
commit 04b78c7ebc
9 changed files with 58 additions and 55 deletions

View File

@ -95,10 +95,10 @@ version: 3.0
│ 51124 서버 (서비스 운영) │
├─────────────────────────────────────────────┤
│ 로빙 서비스: │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ │rb8001 │ │rb10408 │ │rb10508 │
│ │(테스트) │ │(미디어) │ │(메인) │
│ └─────────┘ └─────────┘ └─────────┘
│ ┌────────────┐ ┌─────────┐ ┌──────────────┐ │
│ │rb8001 │ │rb10408 │ │rb10508_micro │
│ │(메인/프로덕션)│ (미디어) │ │(테스트) │
│ └────────────┘ └─────────┘ └──────────────┘ │
│ │
│ 스킬 서비스: │
│ ┌─────────┐ ┌─────────┐ ┌──────────┐ │
@ -143,17 +143,19 @@ sequenceDiagram
participant U as User
participant S as Slack
participant N as nginx(51123)
participant R as rb10508(51124)
participant G as Gateway(8100)
participant R as rb8001(51124)
participant E as Embedding
participant DB as PostgreSQL
participant C as ChromaDB
U->>S: 메시지 입력
S->>N: Webhook 전달
N->>R: 요청 라우팅
N->>G: 요청 전달
G->>R: 라우팅
R->>DB: 스탯/레벨 조회
R->>E: 텍스트 임베딩
E-->>R: 384차원 벡터
E-->>R: 임베딩 벡터(모델 종속 차원)
R->>C: 유사 기억 검색
C-->>R: 관련 컨텍스트
R->>R: LLM 처리

View File

@ -27,7 +27,7 @@
| 서버 | IP | 역할 | 주요 서비스 |
|------|-----|------|------------|
| 51123 | 192.168.219.45 | 메인 서버 | Gitea, nginx, auth-server, PostgreSQL |
| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508, skill-email, ChromaDB |
| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508_micro, skill-email, ChromaDB |
### 기본 구조
```
@ -53,7 +53,7 @@
│ │ rb8001 (8001) │ │
│ │ rb10508_micro (10508) │ │
│ │ skill-email (8501) │ │
│ │ skill-news (8502) │ │
│ │ skill-news (8505) │ │
│ └─────────────────────────────┘ │
│ ┌─────────────────────────────┐ │
│ │ ChromaDB (8000) │ │
@ -146,7 +146,7 @@ robeing.conversations: id, robeing_id, user_message, robeing_response
| 10508 | rb10508_micro | 테스트 로빙 |
| 10408 | rb10408_test | 개발 로빙 |
| 8501 | skill-email | Gmail 스킬 |
| 8502 | skill-news | 뉴스 스킬 |
| 8505 | skill-news | 뉴스 스킬 |
| 8000 | ChromaDB | 벡터 DB |
### API 엔드포인트

View File

@ -41,11 +41,13 @@ Embedding: Separated Service (Memory Optimization)
## 시스템 구조 이해하기
```
User → Slack → rb10508 Container → PostgreSQL/ChromaDB
User → Slack → nginx → Gateway(8100) → rb8001(프로덕션)
Embedding Service
Skill Services
Skill Services (HTTP)
PostgreSQL / ChromaDB
```
## 실습 과제

View File

@ -51,7 +51,7 @@ sudo chown -R 999:999 ./chromadb_data
- 3초 룰 구현 (빠른 응답 후 처리)
- 메시지 큐 시스템
**rb10508 (메인 브레인)**:
**rb10508 (메인 브레인) [당시 기준 — 현행: rb8001가 메인]**:
- 기억 시스템 구현
- 감정 모델 통합
- PostgreSQL 연동
@ -103,7 +103,7 @@ WebSocket connection to 'ws://localhost:10508' failed
// 해결: nginx 프록시 설정
location /ws {
proxy_pass http://172.17.0.1:10508;
proxy_pass http://172.17.0.1:10508/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

View File

@ -368,8 +368,8 @@ class HTTPEmbeddingFunction:
|----------|------|------|-----------|-------------|
| **skill_email** | 8501 | 운영 중 (6일) | 이메일 조회/발송 | rb10408, rb10508 |
| **skill-news** | 8505 | 정상 (2시간) | 뉴스 검색/요약 | rb10408, rb10508 |
| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | rb10408만 |
| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | rb10508만 |
| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | 공용(원칙) — 현재 rb10408만 연결, 확대 예정 |
| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | 공용(원칙) — 현재 rb10508만 연결, 공용 전환 계획 |
### 스킬 통합 개선 방안

View File

@ -15,7 +15,7 @@
- 흐름: 업로드 → (PDF/이미지 분기) → skill-ocr HTTP 호출 → 텍스트/블록/메타 → RAG(ChromaDB) 저장 → 응답
- 컴포넌트
- rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당
- skill-ocr(8501): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등)
- skill-ocr(8506): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등)
- Storage: `/mnt/hdd/uploads/{user_id}/`, 로그 `/mnt/hdd/logs/skill-ocr/`
- Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타)
@ -69,7 +69,7 @@
- 로그는 `/mnt/hdd/logs/skill-ocr/` 30일 롤링, 샘플: `Fallback to OCR`, `OCR quality low: confidence=0.72`
## 6) 배포 가이드(요약)
- 컨테이너: `skill-ocr`(8501)
- 컨테이너: `skill-ocr`(8506)
- 볼륨: `-v /mnt/hdd/uploads:/mnt/hdd/uploads:ro`, `-v /mnt/hdd/logs/skill-ocr:/logs`
- 환경: `LANGS=kor,eng`, `THREADS=N`, `USE_GPU=false|true`
- 헬스체크: `GET /healthz` (main.py/Dockerfile/compose/workflows 동기화)
@ -100,4 +100,3 @@
- TrOCR: Hugging Face 문서, AAAI 논문
- Donut: GitHub, arXiv, 산업 적용 리뷰
- Kraken/Calamari: GitHub, 공식 문서

View File

@ -2,7 +2,7 @@
**작성일**: 2025-09-09
**작성자**: happybell80 & Claude
**관련 서비스**: rb8001 (RAG 스킬 내부 구현)
**관련 서비스**: skill-rag (HTTP 외부 스킬)
**핵심 기술**: Multi-provider Search API, Query Routing, Caching, RAG
## 1. 검색 프로바이더 계층 구조
@ -25,7 +25,7 @@
검색 의도 추가: LLM 프롬프트에 "검색 요청은 /search로" 또는 직접 패턴 매칭.
```python
# rb8001/app/skills/rag.py
# 예시 라우팅 (의도별 외부 호출)
def route_by_pattern(query):
if "뉴스" in query: return 'news_api'
if "언제" in query: return 'duckduckgo' # 즉답
@ -35,13 +35,13 @@ def route_by_pattern(query):
## 3. 구현 아키텍처
```
사용자 → rb8001 내부 RAG 스킬
사용자 → rb8001 → (HTTP) skill-rag
[Query Router]
[Provider Manager]
/ | | \
Tavily Brave Serper DuckDuckGo
Tavily Brave Serper DuckDuckGo
[Result Merger]
@ -66,13 +66,13 @@ Tavily Brave Serper DuckDuckGo
### 예상 월 비용: $0.05
## 6. 구현 위치: rb8001/app/skills/rag.py
## 6. 구현 위치: skill-rag (외부 서비스)
별도 마이크로서비스 대신 rb8001 내부 RAG 스킬로 구현
- 웹 검색 + 파일 RAG 통합 처리
rb8001 내부 구현 대신 외부 RAG 스킬(HTTP)로 분리
- 웹 검색 + 파일 RAG 통합 처리 (HTTP 인터페이스)
- Phase 1: Tavily + DuckDuckGo 웹 검색
- Phase 2: ChromaDB 파일 검색 통합
- Phase 3: 복잡도 증가 시 skill-rag 분리
- Phase 3: 트래픽 증가 시 스케일아웃 (수평 확장)
## 7. 핵심 차별점

View File

@ -43,11 +43,11 @@
```
├── 로빙 컨테이너
│ ├── rb8001:8001 (프로덕션)
│ ├── rb10508_test:10508 (테스트)
│ └── rb10408_test:10408 (테스트)
│ ├── rb10508_micro:10508 (테스트)
│ └── rb10408:10408 (테스트)
├── 스킬 서비스
│ ├── skill-email:8501 (Gmail 연동)
│ ├── skill-news:8502
│ ├── skill-news:8505
│ ├── skill-embedding:8515 (포트 변경됨)
│ └── skill-slack (멀티봇 지원)
└── ChromaDB (벡터 DB)

View File

@ -1,7 +1,7 @@
# 중앙 인증 서버(auth.ro-being.com) 구축
**날짜**: 2025-07-16
**관련 서비스**: auth-server, nginx-deploy
**관련 서비스**: auth-server, nginx-infra
**작성자**: Claude AI Assistant
## 작업 개요
@ -43,7 +43,7 @@ auth-server/
### 3. Nginx 리버스 프록시 설정
**nginx-deploy/default.conf 수정**:
**nginx-infra/default.conf 수정**:
```nginx
# Auth server configuration
server {
@ -123,7 +123,7 @@ services:
## 관련 파일
- `/home/happybell/projects/ivada/auth-server/` - 인증 서버
- `/home/happybell/projects/ivada/nginx-deploy/default.conf` - Nginx 설정
- `/home/happybell/projects/ivada/nginx-infra/default.conf` - Nginx 설정
- `/home/happybell/projects/ivada/skill_email/` - Gmail 스킬 (통합 예정)
## SSL/HTTPS 설정 추가
@ -135,10 +135,10 @@ services:
### 해결 과정
1. **nginx-deploy 저장소 구조 파악**:
1. **nginx-infra 저장소 구조 파악**:
- `default.conf`: Docker nginx 설정 (legacy)
- `server-nginx-default`: 실제 서버 nginx 설정 파일
- GitHub Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사
- Gitea Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사
2. **HTTPS 서버 블록 추가**:
```nginx
@ -185,4 +185,4 @@ server {
2. **중앙 인증의 장점**: 토큰 관리 일원화, 보안 강화, 확장성
3. **마이크로서비스 구조**: 각 서비스(인증, API, 로빙)를 독립적으로 관리
4. **SSL 설정 패턴**: HTTP는 HTTPS로 리다이렉션, HTTPS 블록에 실제 프록시 설정
5. **nginx-deploy 워크플로우**: 로컬 수정 → Git push → GitHub Actions → 서버 배포
5. **nginx-infra 워크플로우**: 로컬 수정 → Git push → Gitea Actions → 서버 배포