벡터 검색을 위한 인덱스 이진 벡터
Azure AI 검색은 벡터 데이터의 스토리지 및 메모리 공간을 좀 더 줄이기 위해 압축된 이진 유형의 Collection(Edm.Byte)
을 지원합니다. Cohere의 Embed v3 이진 포함 모델 또는 벡터를 이진 바이트로 출력하는 다른 포함 모델 또는 프로세스와 같은 모델의 출력에 이 데이터 형식을 사용할 수 있습니다.
이진 벡터에 대한 인덱스를 구성하는 세 단계는 다음과 같습니다.
- 이진 벡터 비교를 위해 Hamming 거리를 지정하는 벡터 검색 알고리즘 추가
- 알고리즘을 가리키는 벡터 프로필 추가
- 형식
Collection(Edm.Byte)
의 벡터 필드를 추가하고 Hamming 거리를 할당합니다.
이 문서에서는 사용자가 Azure AI Search에서 인덱스를 만들고 벡터 필드를 추가하는 데 익숙하다고 가정합니다. REST API를 사용하여 각 단계를 설명하지만 Azure Portal 또는 Azure SDK의 인덱스에도 이진 필드를 추가할 수 있습니다.
이진 데이터 형식은 일반적으로 API 버전 2024-07-01부터 사용할 수 있으며 인덱스 만들기 또는 인덱스 만들기 또는 업데이트 API를 사용하여 필드에 할당됩니다.
팁
더 작은 공간의 이진 벡터 지원을 조사하는 경우 Azure AI 검색에서 벡터 양자화 및 스토리지 감소 기능을 고려할 수도 있습니다. 입력은 float32 또는 float16 포함입니다. 출력은 훨씬 더 작은 형식으로 저장된 데이터입니다. 자세한 내용은 이진 또는 스칼라 정량화를 사용하여 압축 및 좁은 데이터 형식 할당을 참조하세요.
필수 조건
- 차원당 1비트를 갖는 이진 벡터는 값당 8비트를 갖는 uint8 값으로 패키지됩니다. 패키지된 이진 벡터를 직접 생성하는 모델을 사용하거나 인덱싱 및 검색 중에 벡터를 이진 벡터 클라이언트 쪽으로 정량화하여 가져올 수 있습니다.
제한 사항
- 데이터 가져오기 및 벡터화 마법사에 Azure Portal 지원이 없습니다.
- Azure AI 스튜디오 모델 카탈로그에서 모델의 통합 벡터화에 사용되는 AML 기술의 이진 파일 필드는 지원되지 않습니다.
벡터 검색 알고리즘 및 벡터 프로필 추가
벡터 검색 알고리즘은 인덱싱 중에 쿼리 탐색 구조를 만드는 데 사용됩니다. 이진 벡터 필드의 경우 Hamming 거리 메트릭을 사용하여 벡터 비교를 수행합니다.
인덱스에 이진 필드를 추가하려면 REST API 또는 Azure Portal을 사용하여
Create or Update Index
요청을 설정합니다.인덱스 스키마에서 프로필 및 알고리즘을 지정하는
vectorSearch
섹션을 추가합니다.hamming
유사성 메트릭이 있는 하나 이상의 벡터 검색 알고리즘을 추가합니다. HNSW(Hierarchical Navigable Small Worlds)를 사용하는 것이 일반적이지만, 모든 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에 대한 데모 코드가 있습니다.