Azure AI Search의 벡터 필드에 좁은 데이터 형식 할당
벡터 크기를 쉽게 줄이는 방법은 임베딩을 더 작은 데이터 서식으로 저장하는 것입니다. 대부분의 임베딩 모델은 32비트 부동 소수점 수를 출력하지만 벡터를 양자화하거나 임베딩 모델이 기본적으로 지원하는 경우 출력은 float16, int16 또는 int8일 수 있으며 float32보다 훨씬 작습니다. 좁은 데이터 형식을 벡터 필드에 할당하여 이러한 더 작은 벡터 크기를 수용할 수 있습니다. 벡터 인덱스에서 좁은 데이터 형식은 스토리지를 적게 사용합니다.
데이터 형식은 인덱스 정의의 필드에 할당됩니다. Azure Portal, Search REST API 또는 기능을 제공하는 Azure SDK 패키지를 사용할 수 있습니다.
필수 조건
- 텍스트 포함-3 또는 Cohere V3 포함 모델과 같은 작은 데이터 형식을 출력하는 포함 모델입니다.
지원되는 좁은 데이터 형식
권장 사용량은 벡터 필드에 사용되는 데이터 형식을 검토합니다.
Collection(Edm.Single)
32비트 부동 소수점(기본값)Collection(Edm.Half)
16비트 부동 소수점(좁은 형식)Collection(Edm.Int16)
16비트 부호 있는 정수(좁은 형식)Collection(Edm.SByte)
8비트 부호 있는 정수(좁은 형식)Collection(Edm.Byte)
8비트 부호 없는 정수(압축된 이진 데이터 형식에서만 허용)
해당 목록에서 임베딩 모델의 출력 또는 사용자 지정 양자화를 거치는 벡터에 유효한 데이터 형식을 결정합니다.
다음 표에서 추가 양자화 없이 좁은 데이터 형식(
Collection(Edm.Half)
)을 사용할 수 있는 여러 임베딩 모델의 링크를 확인할 수 있습니다. 추가 작업 없이 float32에서 float16(사용Collection(Edm.Half)
)으로 캐스팅할 수 있습니다.포함 모델 네이티브 출력 Azure AI 검색에서 이 형식 할당 text-embedding-ada-002 Float32
Collection(Edm.Single)
또는Collection(Edm.Half)
text-embedding-3-small Float32
Collection(Edm.Single)
또는Collection(Edm.Half)
text-embedding-3-large Float32
Collection(Edm.Single)
또는Collection(Edm.Half)
int8 embedding_type을 사용하는 Cohere V3 포함 모델 Int8
Collection(Edm.SByte)
모델이 더 작은 데이터 서식으로 임베딩을 내보내거나 벡터를 더 작은 형식으로 변환하는 사용자 지정 양자화가 있는 경우 다른 좁은 데이터 형식을 사용할 수 있습니다.
좁은 데이터 형식의 장단점을 이해해야 합니다.
Collection(Edm.Half)
은 정보가 더 적으므로 해상도가 낮습니다. 같은 유형의 데이터이거나 밀집 데이터인 경우 추가 세부 정보나 미묘한 차이가 손실되면 인접 벡터를 구별하는 데 사용할 수 있는 세부 정보가 적기 때문에 쿼리 시 허용할 수 없는 결과가 발생할 수 있습니다.
데이터 형식 할당
인덱스 정의 및 빌드 이 단계에서는 Azure Portal, 인덱스 만들기 또는 업데이트(REST API) 또는 Azure SDK 패키지를 사용할 수 있습니다.
이 필드 정의는 float16 값으로 저장된 float32 포함을 허용할 수 있는 좁은 데이터 형식 Collection(Edm.Half)
을 사용합니다. 모든 벡터 필드 dimensions
vectorSearchProfile
의 경우와 마찬가지로 설정됩니다. 세부 정보는 vectorSearchProfile
데이터 형식에 비물질적입니다.
필드 값을 시각적으로 확인하려면 true로 설정하는 retrievable
stored
것이 좋습니다. 이후 다시 빌드할 때 스토리지 요구 사항을 줄이기 위해 이러한 속성을 false로 변경할 수 있습니다.
{
"name": "nameEmbedding",
"type": "Collection(Edm.Half)",
"searchable": true,
"filterable": false,
"retrievable": true,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"synonymMaps": [],
"dimensions": 1536,
"vectorSearchProfile": "myHnswProfile"
}
벡터 필드는 필터링 가능하거나 정렬 가능하거나 패싯할 수 없습니다. 키로 사용할 수 없으며 분석기 또는 동의어 맵을 사용할 수 없습니다.
프로덕션 인덱스 작업
데이터 형식은 만들 때 새 필드에 할당됩니다. 기존 필드의 데이터 형식을 변경할 수 없으며 인덱스 다시 작성 없이는 필드를 삭제할 수 없습니다. 이미 프로덕션에 있는 설정된 인덱스의 경우 원하는 수정 버전으로 새 필드를 만든 다음 계획된 인덱스 다시 작성 중에 사용되지 않는 필드를 제거하여 이 문제를 해결하는 것이 일반적입니다.
결과 확인
필드 콘텐츠가 데이터 형식과 일치하는지 확인합니다. 벡터 필드가 표시
retrievable
되어 있다고 가정하면 검색 탐색기 또는 검색 - POST를 사용하여 벡터 필드 콘텐츠를 반환합니다.벡터 인덱스 크기를 확인하려면 Azure Portal의 검색 관리 > 인덱스 페이지에서 벡터 인덱스 크기 열을 참조하거나 GET 통계(REST API) 또는 동등한 Azure SDK 메서드를 사용하여 크기를 가져옵니다.
참고 항목
필드의 데이터 형식은 실제 데이터 구조를 만드는 데 사용됩니다. 나중에 데이터 형식을 변경하려면 인덱스 삭제 및 다시 작성 또는 새 정의로 두 번째 필드를 만듭니다.