26 lines
1.7 KiB
Text
26 lines
1.7 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 단일 패키지)
|
|
# ⚠️ 버전 핀(2026-06-26 실검증): FlagEmbedding 1.4.x(신규 리라이트)는 BGEM3FlagModel 로드 시
|
|
# `XLMRobertaModel.__init__() got an unexpected keyword argument 'dtype'` 로 깨진다.
|
|
# 1.2.11 + transformers 4.44.2 조합에서 BGE-M3 정상 로드/인코딩(dense dim=1024) 확인.
|
|
FlagEmbedding==1.2.11
|
|
|
|
# BGE-M3 백엔드(transformers/torch). FlagEmbedding 1.2.11 과 정합하는 transformers 핀.
|
|
torch==2.5.1
|
|
transformers==4.44.2
|
|
|
|
# (선택) sentence-transformers — 보조 임베딩/유틸. FlagEmbedding 만으로도 BGE-M3 동작.
|
|
sentence-transformers==3.3.1
|
|
|
|
# DB pgvector 코덱(선택) — db.py 가 텍스트 캐스트($1::vector)로 우회하므로 미설치도 동작.
|
|
# 바이너리 코덱 등록(register_vector) 시 성능↑. 붙이면 rag._vector_literal 대신 list 직접 바인딩 가능.
|
|
pgvector==0.3.5
|