

# 메타데이터 필터링
<a name="s3-vectors-metadata-filtering"></a>

메타데이터 필터링을 사용하면 벡터에 연결된 특정 속성을 기반으로 쿼리 결과를 필터링할 수 있습니다. 쿼리 작업과 함께 메타데이터 필터를 사용하여 유사성 기준 및 특정 메타데이터 조건과 모두 일치하는 벡터를 찾을 수 있습니다.

S3 Vectors는 필터링 가능한 메타데이터와 필터링 불가능한 메타데이터라는 두 가지 유형의 메타데이터를 지원합니다. 주요 차이점은 필터링 가능한 메타데이터는 쿼리 필터에 사용할 수 있지만 크기 제한이 더 엄격한 반면, 필터링 불가능한 메타데이터는 필터에 사용할 수 없지만 크기 제한 내에 더 많은 양의 데이터를 저장할 수 있다는 것입니다. 벡터당 크기 제한 및 벡터당 최대 메타데이터 키를 포함하여 메타데이터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

S3 Vectors는 벡터 검색과 필터 평가를 동시에 수행합니다. S3 Vectors는 인덱스의 후보 벡터를 검색하여 유사한 상위 K개 벡터를 찾는 동시에 각 후보 벡터가 메타데이터 필터 조건과 일치하는지 검증합니다. 예를 들어 유사한 영화 임베딩을 검색하고 genre='mystery'로 필터링하면 S3 Vectors는 장르 메타데이터가 'mystery'와 일치하는 유사한 영화 임베딩만 반환합니다. 벡터 검색 후 메타데이터 필터를 적용하는 것과 달리 이 필터링 방식은 일치하는 결과를 찾을 가능성이 더 높습니다. 참고: 벡터 인덱스에 일치하는 결과가 매우 적은 경우 필터가 있는 쿼리는 상위 K개보다 적은 결과를 반환할 수 있습니다.

**Topics**
+ [필터링 가능한 메타데이터](#s3-vectors-metadata-filtering-filterable)
+ [필터링 가능한 유효한 메타데이터의 예](#s3-vectors-metadata-filtering-examples)
+ [필터링 불가능한 메타데이터 키](#s3-vectors-metadata-filtering-non-filterable)

## 필터링 가능한 메타데이터
<a name="s3-vectors-metadata-filtering-filterable"></a>

필터링 가능한 메타데이터를 사용하면 특정 메타데이터 값을 기반으로 쿼리 결과를 필터링할 수 있습니다. 기본적으로 모든 메타데이터 필드는 벡터 인덱스를 만드는 중에 필터링 불가능한 것으로 명시적으로 지정되지 않는 한 유사성 쿼리에서 필터링할 수 있습니다. S3 Vectors는 벡터당 크기 제한이 있는 메타데이터의 문자열, 숫자, 부울 및 목록 유형을 지원합니다. 메타데이터 유형은 범주, 타임스탬프 또는 상태 값과 같이 필터링 기준으로 사용하려는 속성에 적합합니다.

메타데이터 크기가 지원되는 제한을 초과하면 [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 작업이 `400 Bad Request` 오류를 반환합니다. 벡터당 필터링 가능한 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

다음 작업은 필터링 가능한 메타데이터와 함께 사용할 수 있습니다.


| 연산자 | 유효한 입력 유형 | 설명 | 
| --- | --- | --- | 
| \$1eq | 문자열, 숫자, 부울 | 단일 값에 대한 정확한 일치 비교입니다.배열 메타데이터 값과 비교할 때 입력 값이 배열의 요소와 일치하면 true를 반환합니다. 예를 들어 `{"category": {"$eq": "documentary"}}`는 벡터를 `"category": ["documentary", "romance"]` 메타데이터와 일치시킵니다. | 
| \$1ne | 문자열, 숫자, 부울 | 같지 않음 비교 | 
| \$1gt | 숫자 | 초과 비교 | 
| \$1gte | 숫자 | 초과 또는 같음 비교 | 
| \$1lt | 숫자 | 미만 비교 | 
| \$1lte | 숫자 | 미만 또는 같음 비교 | 
| \$1in | 비어 있지 않은 프리미티브 배열 | 배열의 값 중 하나 이상과 일치 | 
| \$1nin | 비어 있지 않은 프리미티브 배열 | 배열의 값과 일치하지 않음 | 
| \$1exists | 부울 | 필드가 존재하는지 확인 | 
| \$1and | 비어 있지 않은 필터 배열 | 여러 조건의 논리적 AND | 
| \$1or | 비어 있지 않은 필터 배열 | 여러 조건의 논리적 OR | 

## 필터링 가능한 유효한 메타데이터의 예
<a name="s3-vectors-metadata-filtering-examples"></a>

**단순 동등성**  

```
{"genre": "documentary"}
```
이 필터는 장르 메타데이터 키가 ‘documentary’와 같은 벡터와 일치합니다. 연산자를 지정하지 않으면 S3 Vectors는 \$1eq 연산자를 자동으로 사용합니다.

**명시적 동등성**  

```
// Example: Exact match
{"genre": {"$eq": "documentary"}}
```

```
// Example: Not equal to
{"genre": {"$ne": "drama"}}
```

**숫자 비교**  

```
{"year": {"$gt": 2019}}
```

```
{"year": {"$gte": 2020}}
```

```
{"year": {"$lt": 2020}}
```

```
{"year": {"$lte": 2020}}
```

**배열 연산자**  

```
{"genre": {"$in": ["comedy", "documentary"]}}
```

```
{"genre": {"$nin": ["comedy", "documentary"]}}
```

**존재 확인**  

```
{"genre": {"$exists": true}}
```
`$exists` 필터는 해당 메타데이터 키에 대해 저장된 값에 관계없이 ‘genre’ 메타데이터 키가 있는 벡터와 일치합니다.

**논리 연산자**  

```
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

```
{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

**가격 범위(동일한 필드의 여러 조건)**  

```
{"price": {"$gte": 10, "$lte": 50}}
```

메타데이터 필터링을 사용하여 벡터를 쿼리하는 방법에 대한 자세한 내용은 [메타데이터 필터링](s3-vectors.md#s3-vectors-filtering-metadata) 섹션을 참조하세요.

## 필터링 불가능한 메타데이터 키
<a name="s3-vectors-metadata-filtering-non-filterable"></a>

필터링 불가능한 메타데이터는 쿼리 필터에 사용할 수 없지만 필터링 가능한 메타데이터보다 많은 양의 컨텍스트 데이터를 저장할 수 있습니다. 검색할 필요는 없지만 쿼리 결과와 함께 반환할 수 있는 큰 텍스트 청크, 자세한 설명 또는 기타 컨텍스트 정보를 저장하는 데 적합합니다. 예를 들어 전체 문서 텍스트, 이미지 설명 또는 자세한 제품 사양을 필터링 불가능한 메타데이터로 저장할 수 있습니다.

필터링 불가능한 메타데이터 키는 벡터 인덱스 생성 중에 명시적으로 구성해야 합니다. 메타데이터 키가 인덱스 생성 중에 필터링 불가능으로 지정되면 나중에 필터링 가능으로 변경할 수 없습니다. 여러 메타데이터 키를 벡터 인덱스당 필터링 불가능한 것으로 구성할 수 있으며, 각 메타데이터 키 이름은 63자로 제한됩니다. 벡터 인덱스당 허용되는 필터링 불가능한 메타데이터 키의 최대 수에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

필터링 불가능한 메타데이터는 필터링할 수 없지만 `return-metadata` 파라미터를 사용하여 쿼리 결과와 함께 검색할 수 있습니다. 다음과 같이 일부 사용 사례에 필터링 불가능한 메타데이터를 사용할 수 있습니다.
+ 별도의 데이터 소스를 구문 분석하지 않고 애플리케이션에 컨텍스트를 제공하는 데 사용합니다.
+ 필터링 가능한 메타데이터 크기 제한을 초과하는 더 큰 텍스트 청크를 저장합니다.
+ [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) API 작업을 사용하여 벡터 내보내기에 포함합니다.

필터링 불가능한 메타데이터 구성에 대한 자세한 내용은 [벡터 버킷에서 벡터 인덱스 만들기](s3-vectors-create-index.md) 섹션을 참조하세요.