기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
FT.CREATE
인덱스를 생성하고 해당 인덱스 채우기를 시작합니다. 인덱스 구성에 대한 자세한 내용은 벡터 검색 개요를 참조하세요.
구문
FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+
스키마
필드 식별자:
HASH 키의 경우 필드 식별자는 필드 이름입니다.
JSON 키의 경우 필드 식별자는 A JSON 경로입니다.
자세한 내용은 인덱스 필드 유형 단원을 참조하십시오.
필드 유형:
TAG: 자세한 내용은 태그 섹션을 참조하세요
. NUMERIC: 필드에 숫자가 포함되어 있습니다.
TEXT: 필드에는 데이터 블롭이 포함되어 있습니다.
VECTOR: 벡터 검색을 지원하는 벡터 필드입니다.
알고리즘 - HNSW (계층적 탐색 가능 스몰 월드) 또는 FLAT (분산력)일 수 있습니다.
attr_count
- 알고리즘 구성으로 전달되는 속성의 수입니다. 여기에는 이름과 값이 모두 포함됩니다.{attribute_name} {attribute_value}
- 인덱스 구성을 정의하는 알고리즘별 키/값 쌍입니다.FLAT 알고리즘의 속성은 다음과 같습니다.
필수 항목 여부:
DIM - 벡터의 차원 수입니다.
DISTANCE_METRIC – [L2 | IP | ] 중 하나일 수 있습니다COSINE.
TYPE – 벡터 유형.
FLOAT32
유형만 지원됩니다.
선택 사항:
INITIAL_CAP – 인덱스의 메모리 할당 크기에 영향을 미치는 인덱스의 초기 벡터 용량입니다.
HNSW 알고리즘의 속성은 다음과 같습니다.
필수 항목 여부:
TYPE – 벡터 유형.
FLOAT32
유형만 지원됩니다.DIM – 벡터 차원, 양의 정수로 지정됨. 최댓값: 32,768
DISTANCE_METRIC – [L2 | IP | ] 중 하나일 수 있습니다COSINE.
선택 사항:
INITIAL_CAP – 인덱스의 메모리 할당 크기에 영향을 미치는 인덱스의 초기 벡터 용량입니다. 기본값은 1024입니다.
M - 각 계층의 그래프에서 각 노드에 허용되는 최대 발신 엣지 수입니다. 계층 0에서 최대 발신 엣지 수는 2M입니다. 기본값은 16이고 최대값은 512입니다.
EF_CONSTRUCTION – 인덱스 구성 중에 검사되는 벡터 수를 제어합니다. 이 파라미터의 값이 높을수록 인덱스 생성 시간이 길어지는 대신 재현율이 향상됩니다. 기본값은 200입니다. 최대값은 4,096입니다.
EF_RUNTIME - 쿼리 작업 중에 검사된 벡터 수를 제어합니다. 이 파라미터의 값이 높을수록 쿼리 시간이 길어지는 대신 재현율이 향상될 수 있습니다. 이 파라미터의 값은 쿼리별로 재정의할 수 있습니다. 기본값은 10입니다. 최대값은 4,096입니다.
반환
간단한 문자열 OK 메시지 또는 오류 응답을 반환합니다.
예제
참고
다음 예제에서는 데이터를 Valkey 또는 Redis 로 전송하기 전에 데이터의 인용 제거 및 이스케이프 제거와 같은 valkey-cli
예 1: 인덱스 만들기
크기가 2인 벡터에 대한 인덱스 만들기
FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK
HNSW 알고리즘을 사용하여 6차원 JSON 인덱스를 생성합니다.
FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
예제 2: 일부 데이터 채우기
다음 명령은 redis-cli 터미널 프로그램에 대한 인수로 실행할 수 있도록 형식이 지정됩니다. 프로그래밍 언어 클라이언트(예: Python, Ruby, C# 등)를 사용하는 개발자는 문자열 및 바이너리 데이터 처리에 대한 환경 처리 규칙을 따라야 합니다.
일부 해시 및 json 데이터 생성:
HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'
유의할 사항:
해시 및 JSON 데이터의 키에는 인덱스 정의의 접두사가 있습니다.
벡터는 인덱스 정의의 적절한 경로에 있습니다.
해시 벡터는 16진수 데이터로 입력되고 JSON 데이터는 숫자로 입력됩니다.
벡터는 적절한 길이이고, 2차원 HASH 벡터 항목은 부동 소수점 2자리의 16진수 데이터로 구성되며, 6차원 JSON 벡터 항목은 6자리 숫자로 구성됩니다.
예제 3: 인덱스 삭제 및 다시 생성
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
새 JSON 인덱스는 FLAT
알고리즘 대신 HNSW
알고리즘을 사용합니다. 또한 기존 JSON 데이터를 다시 인덱싱합니다.
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]}]"