다음을 통해 공유


벡터 검색을 위한 인덱스 이진 벡터

Azure AI 검색은 벡터 데이터의 스토리지 및 메모리 공간을 좀 더 줄이기 위해 압축된 이진 유형의 Collection(Edm.Byte)을 지원합니다. Cohere의 Embed v3 이진 파일 포함 모델과 같은 모델의 출력에 이 데이터 형식을 사용할 수 있습니다.

이진 벡터에 대한 인덱스를 구성하는 세 단계는 다음과 같습니다.

  • 이진 벡터 비교를 위해 Hamming 거리를 지정하는 벡터 검색 알고리즘 추가
  • 알고리즘을 가리키는 벡터 프로필 추가
  • 이진 필드 정의에 벡터 프로필 추가

이 문서에서는 Azure AI 검색에서 인덱스 만들기 방법을 잘 알고 있다고 가정합니다. REST API를 사용하여 각 단계를 설명하지만 Azure Portal의 인덱스에 이진 필드를 추가할 수도 있습니다.

이진 데이터 형식은 일반적으로 API 버전 2024-07-01부터 사용할 수 있으며 인덱스 만들기 또는 인덱스 만들기 또는 업데이트 API를 사용하여 필드에 할당됩니다.

더 작은 공간의 이진 벡터 지원을 조사하는 경우 Azure AI 검색에서 벡터 양자화 및 스토리지 감소 기능을 고려할 수도 있습니다. 입력은 float32 또는 float16 포함입니다. 출력은 훨씬 더 작은 형식으로 저장된 데이터입니다. 자세한 내용은 양자화, 좁은 데이터 형식 및 스토리지 옵션을 통해 벡터 크기 줄이기를 참조하세요.

필수 조건

  • 차원당 1비트를 갖는 이진 벡터는 값당 8비트를 갖는 uint8 값으로 패키지됩니다. 이는 "패키지 이진 파일" 벡터를 직접 생성하는 모델을 사용하거나 인덱싱 및 검색 중에 클라이언트 쪽에서 벡터를 이진 파일 벡터로 양자화하여 가져올 수 있습니다.

제한 사항

  • 데이터 가져오기 및 벡터화 마법사에 Azure Portal 지원이 없습니다.
  • Azure AI 스튜디오 모델 카탈로그에서 모델의 통합 벡터화에 사용되는 AML 기술의 이진 파일 필드는 지원되지 않습니다.

벡터 검색 알고리즘 및 벡터 프로필 추가

벡터 검색 알고리즘은 인덱싱 중에 쿼리 탐색 구조를 만드는 데 사용됩니다. 이진 벡터 필드의 경우 Hamming 거리 메트릭을 사용하여 벡터 비교를 수행합니다.

  1. 인덱스에 이진 필드를 추가하려면 REST API 또는 Azure Portal을 사용하여 Create or Update Index 요청을 설정합니다.

  2. 인덱스 스키마에서 프로필 및 알고리즘을 지정하는 vectorSearch 섹션을 추가합니다.

  3. hamming 유사성 메트릭이 있는 하나 이상의 벡터 검색 알고리즘을 추가합니다. HNSW(Hierarchical Navigable Small Worlds)를 사용하는 것이 일반적이지만, 모든 K 가장 인접한 항목에 Hamming 거리를 사용할 수도 있습니다.

  4. 알고리즘을 지정하는 하나 이상의 벡터 프로필을 추가합니다.

다음 예제에서는 기본 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)으로 설정합니다.
  • 이진 인코딩을 위해 vectorEncodingpackedBit으로 설정합니다.
  • dimensions1024로 설정합니다. 원래(압축 해제) 벡터 차원을 지정합니다.
  • 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에 대한 데모 코드가 있습니다.