# ── 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
