Skip to content

Commit 7abdefd

Browse files
jinsoojinsoo
authored andcommitted
add: add on-disk
1 parent 5b140a1 commit 7abdefd

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ HF_API=""
66
# "./qdrant_db" - on-disk 모드 (로컬 디스크에 저장, 기본값)
77
# "http://localhost:6333" - 원격 Qdrant 서버
88
QDRANT_URL="./qdrant_db"
9+
# 벡터 스토리지: false=RAM(in-memory, 기본, 최고 속도), true=MMAP(디스크, RAM 절감). 자세한 비교: etc_md/qdrant_on_disk_comparison.md
10+
# QDRANT_VECTORS_ON_DISK=false
911

1012
# Strength: strength_in_aspect와 동일한 '전체' 기준 (선택)
1113
# 예: data/kr3.tsv (TSV의 Review 컬럼) 또는 data/test_data_sample.json

src/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,9 @@ class _InferenceConfig:
112112

113113
# --- Retrieval (Qdrant, embedding, top_k, rerank 등) ---
114114
class _RetrievalConfig:
115-
"""검색/검열: Qdrant URL, collection, top_k, rerank_k, aspect seed"""
115+
"""검색/검열: Qdrant URL, collection, top_k, rerank_k, aspect seed, 벡터 on_disk"""
116116
QDRANT_URL: Optional[str] = os.getenv("QDRANT_URL", "./qdrant_data")
117+
QDRANT_VECTORS_ON_DISK: bool = os.getenv("QDRANT_VECTORS_ON_DISK", "false").lower() == "true"
117118
COLLECTION_NAME: str = os.getenv("COLLECTION_NAME", DEFAULT_COLLECTION_NAME)
118119
SCORE_THRESHOLD: float = float(os.getenv("SCORE_THRESHOLD", str(DEFAULT_SCORE_THRESHOLD)))
119120
LLM_KEYWORDS: list = DEFAULT_LLM_KEYWORDS

src/vector_search.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,16 @@ def __init__(
9595
"dense": models.VectorParams(
9696
size=self._dense_dim,
9797
distance=models.Distance.COSINE,
98+
on_disk=Config.QDRANT_VECTORS_ON_DISK,
9899
)
99100
},
100101
sparse_vectors_config={
101102
"sparse": models.SparseVectorParams()
102103
},
103104
)
104-
logger.info(f"하이브리드 검색 지원 컬렉션 생성 완료: {collection_name} (dense + sparse)")
105+
logger.info(
106+
f"하이브리드 검색 지원 컬렉션 생성 완료: {collection_name} (dense + sparse, on_disk={Config.QDRANT_VECTORS_ON_DISK})"
107+
)
105108
self._get_sparse_model()
106109

107110
def _get_sparse_model(self):
@@ -747,9 +750,12 @@ def upsert_restaurant_vector(
747750
vectors_config=models.VectorParams(
748751
size=self.encoder.get_sentence_embedding_dimension(),
749752
distance=models.Distance.COSINE,
753+
on_disk=Config.QDRANT_VECTORS_ON_DISK,
750754
),
751755
)
752-
logger.info(f"컬렉션 {RESTAURANT_VECTORS_COLLECTION} 생성 완료")
756+
logger.info(
757+
f"컬렉션 {RESTAURANT_VECTORS_COLLECTION} 생성 완료 (on_disk={Config.QDRANT_VECTORS_ON_DISK})"
758+
)
753759

754760
# 3. 포인트 생성 및 업로드
755761
# Qdrant의 id는 UUID 형식이어야 하므로, restaurant_id를 기반으로 일관된 UUID 생성

0 commit comments

Comments
 (0)