Azure AI 검색은 벡터 데이터의 스토리지 및 메모리 공간을 좀 더 줄이기 위해 압축된 이진 유형의 Collection(Edm.Byte)을 지원합니다.
Cohere의 Embed v3 이진 포함 모델이나 벡터를 이진 바이트로 출력하는 다른 포함 모델 또는 프로세스와 같은 모델의 출력에 이 데이터 형식을 사용할 수 있습니다.
이진 벡터에 대한 인덱스를 구성하는 세 단계는 다음과 같습니다.
- 이진 벡터 비교를 위해 Hamming 거리를 지정하는 벡터 검색 알고리즘 추가
- 알고리즘을 가리키는 벡터 프로필 추가
-
Collection(Edm.Byte)형식의 벡터 필드를 추가하고 Hamming 거리를 지정합니다.
이 문서에서는 사용자가 Azure AI 검색에서 인덱스를 만드는 방법과 벡터 필드를 추가하는 방법에 익숙하다고 가정합니다. 여기서는 각 단계를 설명하기 위해 REST API를 사용하지만 Azure Portal이나 Azure SDK의 인덱스에 이진 필드를 추가할 수도 있습니다.
이진 데이터 형식은 인덱스 만들기 또는 인덱스 만들기또는 업데이트 API를 사용하여 필드에 할당됩니다.
팁
더 작은 공간의 이진 벡터 지원을 조사하는 경우 Azure AI 검색에서 벡터 양자화 및 스토리지 감소 기능을 고려할 수도 있습니다. 입력은 float32 또는 float16 포함입니다. 출력은 훨씬 더 작은 형식으로 저장된 데이터입니다. 자세한 내용은 이진 또는 스칼라 양자화를 사용하여 압축 및 좁은 데이터 형식 할당을 참조하세요.
필수 구성 요소
- 차원당 1비트를 갖는 이진 벡터는 값당 8비트를 갖는 uint8 값으로 패키지됩니다. 이는 패키지 이진 파일 벡터를 직접 생성하는 모델을 사용하거나 인덱싱 및 검색 중에 클라이언트 쪽에서 벡터를 이진 파일 벡터로 양자화하여 가져올 수 있습니다.
제한 사항
- 데이터 가져오기(새) 마법사에서 Azure Portal을 지원하지 않습니다.
- Microsoft Foundry 모델 카탈로그에서 모델의 통합 벡터화에 사용되는 AML 기술의 이진 필드에 대한 지원은 없습니다.
벡터 검색 알고리즘 및 벡터 프로필 추가
벡터 검색 알고리즘은 인덱싱 중에 쿼리 탐색 구조를 만드는 데 사용됩니다. 이진 벡터 필드의 경우 Hamming 거리 메트릭을 사용하여 벡터 비교를 수행합니다.
인덱스에 이진 필드를 추가하려면 REST API 또는 Azure Portal을 사용하여
Create or Update Index요청을 설정합니다.인덱스 스키마에서 프로필 및 알고리즘을 지정하는
vectorSearch섹션을 추가합니다.유사성 메트릭이 있는 하나 이상의
hamming을 추가합니다. HNSW(Hierarchical Navigable Small Worlds)를 사용하는 것이 일반적이지만, 모든 KNN(K 가장 인접한 항목)에 Hamming 거리를 사용할 수도 있습니다.알고리즘을 지정하는 하나 이상의 벡터 프로필을 추가합니다.
다음 예제에서는 기본 vectorSearch 구성을 보여 줍니다.
"vectorSearch": {
"profiles": [
{
"name": "myHnswProfile",
"algorithm": "myHnsw",
"compression": null,
"vectorizer": null
}
],
"algorithms": [
{
"name": "myHnsw",
"kind": "hnsw",
"hnswParameters": {
"metric": "hamming"
}
},
{
"name": "myExhaustiveKnn",
"kind": "exhaustiveKnn",
"exhaustiveKnnParameters": {
"metric": "hamming"
}
}
]
}
인덱스에 이진 필드 추가
인덱스의 필드 컬렉션은 문서 키 필드, 벡터 필드 및 하이브리드 검색 시나리오에 필요한 다른 모든 필드를 포함해야 합니다.
이진 필드는 Collection(Edm.Byte) 형식이며 압축 형식의 포함이 있습니다. 예를 들어 원래 포함 차원이 1024인 경우 압축된 이진 벡터 길이는 ceiling(1024 / 8) = 128입니다. 필드에 vectorEncoding 속성을 설정하여 압축 형식을 가져옵니다.
- 필드 컬렉션에 필드를 추가하고 이름을 지정합니다.
- 데이터 형식을
Collection(Edm.Byte)으로 설정합니다. - 이진 인코딩을 위해
vectorEncoding을packedBit으로 설정합니다. -
dimensions를1024로 설정합니다. 원래(압축 해제) 벡터 차원을 지정합니다. -
vectorSearchProfile을 이전 단계에서 정의한 프로필로 설정합니다. - 필드를 검색할 수 있도록 합니다.
다음 필드 정의는 설정해야 하는 속성의 예입니다.
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
참고 항목
azure-search-vector-samples 리포지토리의 코드 샘플에서는 스키마 정의, 벡터화, 인덱싱 및 쿼리를 포함하는 엔드투엔드 워크플로를 보여 줍니다.
Python, C# 및 JavaScript에 대한 데모 코드가 있습니다.