vignette/apps/api/requirements-rag.txt
Yun Chan 24b1b7a6e1 feat: P1 풀빌드 — React 프론트 7화면 + 백엔드 상담루프·평가·음성·RAG
web (Vite+React19+TS, Cloudflare Pages 배포):
- 디자인토큰(세이지틸/테라코타 SSOT), 앱셸, 공통 UI 프리미티브
- 7화면: 로그인/학습자홈/상담세션/회기리뷰/교수자/관리자/설정
- ClientAvatar: SVG 반구상 흉상 4상태 + RMS 립싱크 + 6파라미터 정서
- 회기리뷰는 외부 레퍼런스 디자인을 Vignette 토큰으로 리스킨

api (FastAPI):
- 게이트웨이 /v1/generate·/v1/stream 어댑터(상주풀/EngineSession 보존)
- services: 페르소나 L0~L6 빌더 / 결정론 상태머신 / 가드레일 /
  턴 오케스트레이터 / 회기간 메모리 / 평가AI / 음성 / RAG
- store: DB off 폴백(in-memory), sessions 실구현

검증:
- web: node22 tsc+vite build 통과(node23 segfault 회피), Pages 배포 200
- api: app.main import 통과
- 핫픽스: Topbar initials undefined-safe (undefined.trim 크래시)
- E2E: 서연(P1) 상담 1턴 — 좋은/나쁜 상담에 차등 반응 실증
2026-06-25 23:37:22 +09:00

23 lines
1.3 KiB
Text

# ── RAG 임베딩/검색 의존성 (services/rag.py 전용, 무거움) ──────────────────────
# 설계 확정 전제(MEMORY_KNOWLEDGE_PERSONA_DESIGN §0.1): BGE-M3(dense+sparse 단일모델)
# + pgvector(HNSW cosine) + 하이브리드 + Anthropic Contextual Retrieval + BGE-reranker-v2-m3.
#
# ⚠️ 이 파일의 의존성은 *무겁다*(torch ~2GB). app.main / app.services.rag 의 import 는
# 이게 없어도 통과해야 한다(rag.py 가 FlagEmbedding/torch 를 함수 내부 지연 import).
# 런타임 검색/인덱싱을 실제로 돌릴 때만 설치 필요. 미설치 시 rag.NotConfigured → 503.
#
# 설치: pip install -r requirements-rag.txt (base requirements.txt 위에 추가)
# 임베딩 + 리랭커 (BGE-M3 dense/sparse/colbert + bge-reranker-v2-m3 단일 패키지)
FlagEmbedding>=1.2.10
# BGE-M3 백엔드(transformers/torch). FlagEmbedding 의존성과 정합.
torch>=2.1
transformers>=4.40
# (선택) sentence-transformers — 보조 임베딩/유틸. FlagEmbedding 만으로도 BGE-M3 동작.
sentence-transformers>=2.7
# DB pgvector 코덱(선택) — db.py 가 텍스트 캐스트($1::vector)로 우회하므로 미설치도 동작.
# 바이너리 코덱 등록(register_vector) 시 성능↑. 붙이면 rag._vector_literal 대신 list 직접 바인딩 가능.
pgvector>=0.2.5