메타데이터 필터링 - Amazon Simple Storage Service

메타데이터 필터링

참고

Amazon S3 Vectors는 Amazon Simple Storage Service의 미리 보기 릴리스이며 변경될 수 있습니다.

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

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

필터링 가능한 메타데이터

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

메타데이터 크기가 지원되는 제한을 초과하면 PutVectors API 작업이 400 Bad Request 오류를 반환합니다. 벡터당 필터링 가능한 메타데이터 크기 제한에 대한 자세한 내용은 한계 및 제한 섹션을 참조하세요.

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

연산자 유효한 입력 유형 설명
$eq 문자열, 숫자, 부울

단일 값에 대한 정확한 일치 비교입니다.

배열 메타데이터 값과 비교할 때 입력 값이 배열의 요소와 일치하면 true를 반환합니다. 예를 들어 {"category": {"$eq": "documentary"}}는 벡터를 "category": ["documentary", "romance"] 메타데이터와 일치시킵니다.

$ne 문자열, 숫자, 부울 같지 않음 비교
$gt 번호 초과 비교
$gte 번호 초과 또는 같음 비교
$lt 번호 미만 비교
$lte 번호 미만 또는 같음 비교
$in 비어 있지 않은 프리미티브 배열 배열의 값 중 하나 이상과 일치
$nin 비어 있지 않은 프리미티브 배열 배열의 값과 일치하지 않음
$exists 필드가 존재하는지 확인
$and 비어 있지 않은 필터 배열 여러 조건의 논리적 AND
$or 비어 있지 않은 필터 배열 여러 조건의 논리적 OR

필터링 가능한 유효한 메타데이터의 예

단순 동등성
{"genre": "documentary"}

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

명시적 동등성
// 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}}

메타데이터 필터링을 사용하여 벡터를 쿼리하는 방법에 대한 자세한 내용은 메타데이터 필터링 섹션을 참조하세요.

필터링 불가능한 메타데이터 키

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

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

필터링 불가능한 메타데이터는 필터링할 수 없지만 return-metadata 파라미터를 사용하여 쿼리 결과와 함께 검색할 수 있습니다. 다음과 같이 일부 사용 사례에 필터링 불가능한 메타데이터를 사용할 수 있습니다.

  • 별도의 데이터 소스를 구문 분석하지 않고 애플리케이션에 컨텍스트를 제공하는 데 사용합니다.

  • 필터링 가능한 메타데이터 크기 제한을 초과하는 더 큰 텍스트 청크를 저장합니다.

  • ListVectors API 작업을 사용하여 벡터 내보내기에 포함합니다.

필터링 불가능한 메타데이터 구성에 대한 자세한 내용은 벡터 버킷에서 벡터 인덱스 만들기 섹션을 참조하세요.