FT.CREATE

FT.CREATE는 검색 가능한 색인을 만듭니다. Memorystore for Valkey를 사용하면 색인이 클러스터 수준에서 생성됩니다. 노드에서 색인을 만들면 클러스터의 모든 노드에 색인이 생성됩니다.

구문

FT.CREATE index
  ON HASH
  [PREFIX count prefix [prefix ...]]
  SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value]
  [field_name [AS alias] NUMERIC]
  [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
  • index(필수): 색인에 지정하는 이름입니다. 이름이 같은 색인이 이미 있으면 오류가 반환됩니다.

  • ON HASH(선택사항): HASH 데이터 유형을 나타냅니다. HASH 데이터 유형만 지원됩니다.

  • PREFIX [count] [prefix](선택사항): 색인을 생성할 해시 키를 나타냅니다.

  • SCHEMA hash_field_name(필수): SCHEMA 다음의 hash_field_name은 해시에서 필드 이름을 식별합니다. [AS alias]alias 이름을 필드 이름 속성의 별칭으로 할당합니다.

필드 유형

  • VECTOR(필수): 벡터 검색을 위한 벡터 필드입니다.

    • [HNSW|FLAT](필수): 지정된 알고리즘입니다. FLAT(무차별 대입) 또는 HNSW(Hierarchical Navigable Small World)입니다.

    • attribute_count(필수): 알고리즘 구성에 전달된 이름과 값의 총 속성 수입니다.

    • attribute_name attribute_value: 색인 구성을 정의하지만 사용 가능한 두 가지 알고리즘 중 하나와 관련된 키-값 쌍입니다.

      • 필수 HNSW 알고리즘 속성은 다음과 같습니다.

        • DIM(필수): 벡터 측정기준 수입니다. 허용되는 값은 1~32768입니다.

        • TYPE(필수): 벡터 유형입니다. FLOAT32만 지원됩니다.

        • DISTANCE_METRIC(필수): L2, IP, COSINE 중 하나여야 합니다.

      • 선택적 HNSW 알고리즘 속성은 다음과 같습니다.

        • EF_RUNTIME(선택사항): 쿼리 작업 중에 검사할 벡터 수를 설정합니다. 기본값은 10이고 최댓값은 4096입니다. 실행하는 쿼리마다 이 매개변수 값을 설정할 수 있습니다. 값이 클수록 쿼리 시간이 늘어나지만 쿼리 재현율이 향상됩니다.

        • M(선택사항): 각 레이어의 그래프에 있는 노드마다 허용되는 최대 발신 에지 수입니다. 레이어 0의 최대 발신 에지 수는 2,000,000입니다. 기본값은 16입니다. 최댓값은 512입니다.

        • EF_CONSTRUCTION(선택사항): 색인 생성 중에 검사할 벡터 수를 설정합니다. 기본값은 200이고 최댓값은 4096입니다. 값이 클수록 색인을 만드는 데 필요한 시간이 늘어나지만 재현율 비율이 향상됩니다.

        • INITIAL_CAP(선택사항): 색인의 시작 벡터 용량을 결정합니다. 기본값은 1024입니다. 이 매개변수는 색인 메모리 할당을 결정합니다.

      • 필수 FLAT 알고리즘 속성은 다음과 같습니다.

        • DIM(필수): 벡터 측정기준 수입니다.

        • TYPE(필수): 벡터 유형입니다. FLOAT32만 지원됩니다.

        • DISTANCE_METRIC(필수): L2, IP, COSINE 중 하나여야 합니다.

      • 선택적 FLAT 알고리즘 속성은 다음과 같습니다.

        • INITIAL_CAP(선택사항): 색인의 시작 벡터 용량을 결정합니다. 이 매개변수는 색인 메모리 할당을 결정합니다.
  • NUMERIC(선택사항): 숫자 검색을 위한 숫자 필드입니다.

  • TAG(선택사항): 태그 기반 검색을 위한 태그 필드입니다.

    • SEPARATOR(선택사항): 태그 문자열을 개별 태그로 나누는 데 사용되는 문자입니다. 기본 옵션은 ,입니다. 지정된 값은 단일 문자여야 합니다. 예를 들어 태그 문자열 'hello, world'는 'hello' 및 'world'로 해석되어 적절하게 색인이 생성됩니다. 허용되는 값은 ,.<>{}[]"':;!@#$%^&*()-+=~입니다.

    • CASESENSITIVE(선택사항): 태그 필드의 대소문자 구분을 나타냅니다. 기본적으로 태그는 대소문자를 구분하지 않습니다. 태그 문자열 'HeLLo'는 'hello'로 색인이 생성되며 'Hello' 및 'HeLlo' 쿼리는 동일한 결과를 가져옵니다.

참고

  • FT.CREATE 명령어 내에서 벡터, 숫자, 태그 색인은 어떤 순서로든 표시될 수 있습니다.

  • 필드는 한 번만 색인을 생성할 수 있습니다. 제공된 예시에서 my_vector_field_key 필드는 동일한 색인 내에 반복될 수 없습니다.

  • 단일 FT.CREATE 명령어에서 최대 10개의 필드에 색인을 생성할 수 있습니다.

  • 기본적으로 태그는 대소문자를 구분하지 않습니다.

  • 기본적으로 태그는 ,으로 구분됩니다.

  • 태그 및 숫자 쿼리의 개별 쿼리는 지원되지 않습니다. 이 필드는 벡터 기반 검색과 함께만 사용할 수 있습니다.

예시

HNSW 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100

FLAT 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000

숫자 필드가 있는 HNSW 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC

태그 필드가 있는 HNSW 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE 

태그와 숫자 필드가 있는 HNSW 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC

태그 및 숫자 필드가 여러 개인 HNSW 예시는 다음과 같습니다.

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG