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턴 — 좋은/나쁜 상담에 차등 반응 실증
23 lines
1.3 KiB
Text
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
|