필터 표현식

필터 표현식 (Filter expressions)

Redis 벡터 세트(vector sets)에서 검색할 때, 단순히 유사도만 매기는 게 아니라 조건을 섞어서 걸러낼 수도 있어요. 이 페이지에서는 FILTER 옵션으로 쓰는 필터 표현식 문법을 옆에서 설명해 드릴게요.

출처: Redis 공식 문서 — filtered-search

표현식 문법 (Expression syntax)

속성(attribute) 필드에 접근할 때는 점(dot) 표기법을 써요. 예를 들어 .year, .rating처럼 말이죠.

참고로 최상위(top-level) 필드만 지원돼요. 즉 .genre는 되지만 .movie.genre처럼 중첩된 경로는 안 돼요.

예시 (Examples)

# 연도 범위로 필터링
VSIM movies VALUES 3 0.5 0.8 0.2 FILTER '.year >= 1980 and .year < 1990'

# 장르와 평점으로 필터링
VSIM movies VALUES 3 0.5 0.8 0.2 FILTER '.genre == "action" and .rating > 8.0'

# 배열과 함께 IN 사용
VSIM movies VALUES 3 0.5 0.8 0.2 FILTER '.director in ["Spielberg", "Nolan"]'

# 수학 연산과 논리 연산 조합
VSIM movies VALUES 3 0.5 0.8 0.2 FILTER '(.year - 2000) ** 2 < 100 and .rating / 2 > 4'

VSIM 명령은 벡터 유사도 검색을 하는데, FILTER 절을 뒤에 붙이면 벡터 검색 결과 중에서도 조건에 맞는 것만 골라내요. 비교 연산자(>=, <, ==, >), 논리 연산자(and), in 연산자, 그리고 수학 연산(** 제곱, -, /)까지 조합해서 쓸 수 있죠.

더 알아보기 (Learn more)