기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
(미리 보기) Amazon S3 벡터 엔진을 사용한 고급 검색 기능
중요
Amazon S3 Vectors와 OpenSearch Service의 통합은 평가판 릴리스이며 변경될 수 있습니다.
Amazon OpenSearch Service는 Amazon S3를 벡터 인덱스의 벡터 엔진으로 사용할 수 있는 기능을 제공합니다. 이 기능을 사용하면 1초 미만의 벡터 검색 기능을 저렴한 비용으로 유지하면서 벡터 데이터를 Amazon S3로 오프로드할 수 있습니다.
이 기능을 사용하면 OpenSearch는 다른 문서 필드를 OpenSearch 클러스터의 스토리지에 유지하면서 벡터 임베딩을 Amazon S3 벡터 인덱스에 저장합니다. 이 아키텍처는 다음과 같은 이점을 제공합니다.
-
내구성: S3 벡터에 기록된 데이터는 11 9초의 데이터 내구성을 위해 설계된 S3에 저장됩니다.
-
확장성: 클러스터 스토리지를 사용하지 않고 대용량 벡터 데이터 세트를 S3로 오프로드합니다.
-
비용 효율성: 벡터가 많은 워크로드의 스토리지 비용을 최적화합니다.
OpenSearch에는 S3 벡터 인덱스를 사용하기 위한 다음과 같은 요구 사항이 있습니다.
-
OpenSearch 버전 2.19 이상
-
OpenSearch 최적화 인스턴스
-
OpenSearch 릴리스의 최신 패치 버전
S3 벡터 활성화
새 도메인을 생성하거나 기존 도메인을 업데이트할 때 고급 기능 섹션에서 엔진으로 S3 벡터 활성화 옵션을 선택할 수 있습니다. 이 설정을 사용하면 S3 벡터를 엔진으로 활용할 때 OpenSearch가 S3 벡터 버킷을 생성할 수 있습니다. 이 옵션을 활성화하면 OpenSearch는 다음을 통해 도메인에 대한 S3 벡터를 구성합니다.
-
도메인으로 구성된 AWS KMS 키에 대해 두 개의 새 권한 부여 생성:
-
복호화 권한이 있는 S3 벡터 백그라운드 인덱싱 작업에 대한 권한 부여
-
GenerateDataKey
권한이 있는 S3 벡터 버킷을 생성하기 위한 OpenSearch 권한 부여
-
-
OpenSearch 도메인에서 사용하는 KMS 키를 모든 벡터 인덱스 데이터의 나머지 부분에서 암호화를 위한 CMK로 구성합니다.
S3 벡터 엔진을 사용하여 인덱스 생성
도메인을 구성한 후 인덱스 매핑에서를 백엔드 벡터 엔진s3vector
으로 사용하여 필드를 사용하여 하나 이상의 k-NN 인덱스를 생성할 수 있습니다. 사용 사례에 따라 다양한 엔진 유형으로 다양한 벡터 필드를 구성할 수 있습니다.
중요
인덱스 생성 중에 필드 정의를 매핑할 때만 s3vector
엔진을 사용할 수 있습니다. 인덱스 생성 후에는 s3vector
엔진과의 매핑을 추가하거나 업데이트할 수 없습니다.
다음은 S3 벡터 엔진 인덱스를 생성하는 몇 가지 예입니다.
예: S3 벡터 엔진을 사용하여 k-NN 인덱스 생성
PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }
예: S3 벡터와 FAISS 엔진을 모두 사용하여 k-NN 인덱스 생성
이 예제에서는 동일한 인덱스 내에서 여러 벡터 엔진을 사용할 수 있다는 사실을 강조합니다.
PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }
지원되지 않는 예제: 인덱스 생성 후 S3 벡터 엔진 추가
다음 접근 방식은 지원되지 않으며 실패합니다.
PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }
기능 제한 사항
인덱스에서 s3vector
엔진을 사용하기 전에 다음 제한 사항을 고려하세요.
Feature | 동작 |
---|---|
Split/Shrink/Clone 인덱스 |
|
스냅샷 |
참고스냅샷은 point-in-time으로 복구할 수 없지만 |
UltraWarm 티어 |
|
클러스터 간 복제 |
|
우발적 삭제 방지 |
|
방사형 검색 |
방사형 검색이 있는 쿼리는 |
문서 인덱싱
S3 벡터 엔진으로 인덱스를 생성한 후 표준 _bulk
API를 사용하여 문서를 수집할 수 있습니다. OpenSearch는 s3vector
엔진을 사용하여 knn_vector
필드의 벡터 데이터를 S3 벡터 인덱스로 실시간으로 자동으로 오프로드합니다. 다른 엔진을 사용하는 다른 필드 또는 knn_vector
필드에 속한 데이터는 OpenSearch가 자체 스토리지 계층에서 유지합니다.
승인된 모든 대량 요청에 대해 OpenSearch는 모든 데이터(벡터 및 비벡터)의 내구성을 보장합니다. 요청이 부정 승인을 받는 경우 해당 대량 요청의 문서 내구성에 대한 보장은 없습니다. 이러한 요청을 다시 시도해야 합니다.
대량 인덱싱 예제
POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }
문서 검색
표준 _search
API를 사용하여 인덱스를 검색하여 텍스트, k-NN 또는 하이브리드 쿼리를 실행할 수 있습니다. s3vector
엔진으로 구성된 knn_vector
필드에 대한 쿼리의 경우 OpenSearch는 쿼리를 해당 S3 벡터 인덱스로 자동으로 오프로드합니다.
참고
s3vector
엔진의 경우 새로 고침 시맨틱은 s3vector
엔진을 사용하지 않는 필드에만 적용됩니다. 그러나 로 오프로드된 벡터 데이터는 문서가 성공적으로 s3vector
인덱싱된 직후 표시됩니다.
검색 쿼리 예
GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }
지원되는 매핑 파라미터
s3vector
엔진의 경우 knn_vector
필드는 매핑에서 다음 파라미터를 지원합니다.
파라미터 | 필수 | 설명 | 지원되는 값 |
---|---|---|---|
type |
예 | 문서에 있는 필드의 유형입니다. | knn_vector |
dimension |
예 | 인덱스에 수집될 각 벡터의 차원입니다. | >0, <=4096 |
space_type |
아니요 | 벡터 간 거리를 계산하는 데 사용되는 벡터 공간입니다. | l2 , cosinesimil |
method.engine |
예 | 인덱싱 및 검색에 사용할 대략적인 k-NN 엔진입니다. | s3vector |
method.name |
아니요 | 가장 가까운 이웃 방법 | "" |
중요
중첩 knn_vector
필드 유형은 s3vector
엔진을 사용하여 지원되지 않습니다.
측정 및 결제
측정이 발표될 때까지는이 기능에 요금이 청구되지 않습니다.
s3vector 엔진 비활성화
s3vector
엔진을 비활성화하기 전에 현재 사용 중인 모든 인덱스를 삭제합니다. 그렇지 않으면 엔진 비활성화 시도가 실패합니다.
또한 s3vector
엔진을 활성화하거나 비활성화하면 도메인에 블루/그린 배포가 트리거됩니다.
s3vector
엔진을 비활성화하려면 도메인 구성을 편집하고를 설정합니다S3VectorsEngine.Enabled: false
.