

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# FT.CREATE
<a name="vector-search-commands-ft.create"></a>

 인덱스를 생성하고 해당 인덱스 채우기를 시작합니다. 인덱스 구성에 대한 자세한 내용은 [벡터 검색 개요](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html)를 참조하세요.

**구문**

```
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 키의 경우 필드 식별자는 JSON 경로입니다.

  자세한 내용은 [인덱스 필드 유형](vector-search-overview.md#vector-search-index-field-types) 단원을 참조하십시오.
+ 필드 유형:
  + TAG: 자세한 내용은 [태그](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/)를 참조하세요.
  + NUMERIC: 필드에는 숫자가 포함됩니다.
  + TEXT: 필드에는 모든 데이터 BLOB이 포함됩니다.
  + VECTOR: 벡터 검색을 지원하는 벡터 필드입니다.
    + 알고리즘 - Hierarchical Navigable Small Worlds(HSNW) 또는 무차별 암호 대입(FLAT)일 수 있습니다.
    + `attr_count` - 알고리즘 구성으로 전달되는 속성의 수입니다. 여기에는 이름과 값이 모두 포함됩니다.
    + `{attribute_name} {attribute_value}` - 인덱스 구성을 정의하는 알고리즘별 키/값 쌍입니다.

      FLAT 알고리즘의 경우 속성은 다음과 같습니다.

      필수 항목 여부:
      + DIM - 벡터의 차원 개수입니다.
      + DISTANCE\$1METRIC - [L2 \$1 IP \$1 COSINE] 중 하나일 수 있습니다.
      + TYPE - 벡터 유형입니다. `FLOAT32` 유형만 지원됩니다.

      선택 사항:
      + INITIAL\$1CAP - 인덱스의 초기 벡터 용량은 인덱스의 메모리 할당 크기에 영향을 줍니다.

      HNSW 알고리즘의 경우 속성은 다음과 같습니다.

      필수 항목 여부:
      + TYPE - 벡터 유형입니다. `FLOAT32` 유형만 지원됩니다.
      + DIM - 벡터 차원으로, 양의 정수로 지정됩니다. 최댓값: 32,768
      + DISTANCE\$1METRIC - [L2 \$1 IP \$1 COSINE] 중 하나일 수 있습니다.

      선택 사항:
      + INITIAL\$1CAP - 인덱스의 초기 벡터 용량은 인덱스의 메모리 할당 크기에 영향을 줍니다. 기본값은 1024입니다.
      + M - 각 계층의 그래프에서 각 노드에 허용되는 최대 발신 엣지 수입니다. 계층 0에서 최대 발신 엣지 수는 2M입니다. 기본값은 16이고 최대값은 512입니다.
      + EF\$1CONSTRUCTION - 인덱스 생성 중에 검사되는 벡터 수를 제어합니다. 이 파라미터의 값이 높을수록 인덱스 생성 시간이 길어지는 대신 재현율이 향상됩니다. 기본값은 200입니다. 최대값은 4,096입니다.
      + EF\$1RUNTIME - 쿼리 작업 중에 검사되는 벡터 수를 제어합니다. 이 파라미터의 값이 높을수록 쿼리 시간이 길어지는 대신 재현율이 향상될 수 있습니다. 이 파라미터의 값은 쿼리별로 재정의할 수 있습니다. 기본값은 10입니다. 최대값은 4,096입니다.

**반환**

간단한 문자열 OK 메시지 또는 오류 응답을 반환합니다.

**예시**

**참고**  
다음 예시에서는 Valkey 또는 Redis OSS로 전송하기 전에 [valkey-cli](https://valkey.io/topics/cli/) 고유의 인수(예: 데이터 인용 제거 및 이스케이프 제거)를 사용합니다. 다른 프로그래밍 언어 클라이언트(Python, Ruby, C\$1 등)를 사용하려면 해당 환경의 문자열 및 이진 데이터 처리 규칙을 따릅니다. 지원되는 클라이언트에 대한 자세한 내용은에서 [빌드할 도구를 참조하세요. AWS](https://aws.amazon.com/developer/tools/)

**Example 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
```

**Example 예제 2: 일부 데이터 채우기**  
다음 명령은 redis-cli 터미널 프로그램에 대한 인수로 실행할 수 있도록 형식이 지정되었습니다. 프로그래밍 언어 클라이언트(Python, Ruby, C\$1 등)를 사용하는 개발자는 해당 환경의 문자열 및 이진 데이터 처리 규칙을 따라야 합니다.  
일부 해시 및 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]}'
```
다음 사항에 유의하세요.  
+ HASH 및 JSON 데이터의 키에는 인덱스 정의의 접두사가 있습니다.
+ 벡터는 인덱스 정의의 적절한 경로에 있습니다.
+ HASH 벡터는 16진수 데이터로 입력되고 JSON 데이터는 숫자로 입력됩니다.
+ 벡터는 적절한 길이이고, 2차원 HASH 벡터 항목은 부동 소수점 2자리의 16진수 데이터로 구성되며, 6차원 JSON 벡터 항목은 6자리 숫자로 구성됩니다.

**Example 예제 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]}]"
```