기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
FT.SEARCH
제공된 쿼리 표현식을 사용하여 인덱스 내에서 키를 찾습니다. 찾은 후에는 해당 키 내에 있는 인덱싱된 필드의 수 및/또는 내용을 반환할 수 있습니다. 자세한 내용은 벡터 검색 쿼리 표현식을 참조하세요.
이러한 예제에서 사용할 데이터를 생성하려면 FT.CREATE 명령을 참조하세요.
구문
FT.SEARCH <index-name> <query> [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>] [COUNT]
RETURN: 이 절은 반환되는 키의 필드를 식별합니다. 각 필드의 선택적 AS 절은 결과의 필드 이름을 대체합니다. 이 인덱스에 대해 선언된 필드만 지정할 수 있습니다.
LIMIT: <offset> <count>: 이 절은 오프셋 및 개수 값을 충족하는 키만 반환된다는 점에서 페이지 매김 기능을 제공합니다. 이 절을 생략하면 기본값은 “LIMIT0 10”입니다. 즉, 최대 10개의 키만 반환됩니다.
PARAMS: 키 값 페어 수의 두 배. 파라미터 키/값 쌍은 쿼리 표현식 내에서 참조할 수 있습니다. 자세한 내용은 벡터 검색 쿼리 표현식을 참조하세요.
COUNT: 이 절은 키의 내용을 반환하지 않고 키 수만 반환됩니다. 이것은 “LIMIT0 0”의 별칭입니다.
반환
배열 또는 오류 응답을 반환합니다.
작업이 성공적으로 완료되면 배열을 반환합니다. 첫 번째 요소는 쿼리와 일치하는 총 키 수입니다. 나머지 요소는 키 이름과 필드 목록 쌍입니다. 필드 목록은 필드 이름과 값 쌍으로 구성된 또 다른 배열입니다.
인덱스가 다시 채워지고 있는 경우 명령은 즉시 오류 응답을 반환합니다.
제한 시간에 도달하면 명령이 오류 응답을 반환합니다.
예시: 몇 가지 검색 수행
참고
다음 예제에서는 데이터를 Valkey 또는 Redis 로 전송하기 전에 데이터의 인용 제거 및 이스케이프 제거와 같은 valkey-cli
해시 검색
FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 2 2) "hash:0" 3) 1) "__VEC_score" 2) "0" 3) "vec" 4) "\x00\x00\x00\x00\x00\x00\x00\x00" 4) "hash:1" 5) 1) "__VEC_score" 2) "1" 3) "vec" 4) "\x00\x00\x00\x00\x00\x00\x80\xbf"
이렇게 하면 쿼리 벡터(16진수로 입력)와의 거리인 점수를 기준으로 정렬된 두 개의 결과가 생성됩니다.
JSON 검색
FT.SEARCH json_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 2 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]"
이렇게 하면 가장 가까운 두 개의 결과가 점수별로 정렬되며 JSON 벡터 값은 부동 소수점으로 변환되고 쿼리 벡터는 여전히 벡터 데이터입니다. 또한 KNN
파라미터가 2이기 때문에 결과가 두 개만 반환됩니다. 값이 클수록 더 많은 결과가 반환됩니다.
FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"