벡터 검색 세션 설정
벡터 검색 세션 설정 (vector_search_*)
이 페이지에서는 벡터 검색과 관련된 vector_search_* 세션 설정들을 다뤄요. 필터 전략, 가져올 최근접 이웃 수, 양자화 코드 사용, 재스코어링 등을 제어해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있으며 소스에서 자동 생성돼요.
vector_search_filter_strategy
벡터 검색 쿼리에 WHERE 절이 있으면, 이 설정은 그것을 먼저 평가할지(사전 필터링) 아니면 벡터 유사도 인덱스를 먼저 확인할지(사후 필터링) 결정해요. 가능한 값:
-
auto- 사후 필터링(정확한 의미는 향후 변경될 수 있음). -
postfilter- 벡터 유사도 인덱스로 최근접 이웃을 식별한 다음 다른 필터를 적용해요. -
prefilter- 다른 필터를 먼저 평가한 다음 brute-force 검색으로 이웃을 식별해요.
vector_search_index_fetch_multiplier
별칭: vector_search_postfilter_multiplier
벡터 유사도 인덱스에서 가져오는 최근접 이웃 수에 이 숫자를 곱해요. 다른 조건이 있는 사후 필터링이나 vector_search_with_rescoring = 1 설정에만 적용돼요. 유효 범위: [1.0, 1000.0]. 이 범위 밖의 값은 거부돼요.
vector_search_use_quantized_codes
Quantized 압축 컬럼에 대해 인덱스 없는 2단계 근사 벡터 검색(brute force 스캔)을 활성화해요. 활성화하면 Quantized(...) 코덱으로 인코딩된 컬럼에 대한 ORDER BY L2Distance|cosineDistance(vec, reference) LIMIT k는
-
양자화된 벡터를 스캔하고 필터링하고(
vector_search_index_fetch_multiplier배의 결과 생성), -
발견된 벡터를 원래의 전체 정밀도 벡터에 대해 재스코어링해요.
vector_search_with_rescoring
ClickHouse가 벡터 유사도 인덱스를 사용하는 쿼리에 대해 재스코어링을 수행할지 여부예요.
재스코어링 없이는 벡터 유사도 인덱스가 가장 잘 맞는 행을 직접 반환해요.
재스코어링을 하면 벡터 유사도 인덱스가 후보 행을 가져오고 ClickHouse가 일반 SQL 파이프라인에서 원래 전체 정밀도 벡터로 이 행들의 정확한 거리를 계산해요.
가능하면 ClickHouse는 최종 거리 계산 전에 스캔을 후보 행으로 필터링해요.
더 나은 재현율을 위해 더 많은 후보 행이 필요하면, 특히 추가 필터나 양자화된 벡터 인덱스가 있을 때 vector_search_index_fetch_multiplier를 늘려요.
참고: 재스코어링 없이 그리고 병렬 레플리카가 활성화된 상태로 실행되는 쿼리는 재스코어링으로 폴백될 수 있어요.