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

메모

Azure AI 검색 Azure 포털, REST API 및 Azure SDK 통해 사용할 수 있습니다. 또한 엔터프라이즈 콘텐츠를 Microsoft Foundry 포털의 에이전트에 대해 재사용 가능한 사용 권한 인식 기술 자료로 변환하는 관리되는 기술 계층인 Foundry IQ를 뒷받침합니다.

Azure AI 검색 벡터 데이터의 스토리지 및 메모리 공간을 더 줄이기 위해 Collection(Edm.Byte) 압축된 이진 형식을 지원합니다. Cohere의 Embed v3 이진 포함 모델 또는 벡터를 이진 바이트로 출력하는 다른 포함 모델 또는 프로세스와 같은 모델의 출력에 이 데이터 형식을 사용할 수 있습니다.

이진 벡터에 대한 인덱스를 구성하는 세 가지 단계가 있습니다.

  • 이진 벡터 비교를 위해 Hamming 거리를 지정하는 벡터 검색 알고리즘 추가
  • 알고리즘을 가리키는 벡터 프로필 추가
  • 형식 Collection(Edm.Byte) 의 벡터 필드를 추가하고 Hamming 거리를 할당합니다.

이 문서에서는 그림에 REST API를 사용하지만 Azure SDK 또는 Azure 포털을 사용하여 인덱스로 이진 필드를 추가할 수도 있습니다. Indexes - Create 또는 Indexes - Create Or Update REST API를 사용하여 필드에 바이너리 데이터 형식을 할당합니다.

팁

더 작은 공간의 이진 벡터 지원을 조사하는 경우 Azure AI 검색 벡터 양자화 및 스토리지 감소 기능을 고려할 수도 있습니다. 입력은 float32 또는 float16 임베딩입니다. 출력은 훨씬 더 작은 형식으로 저장된 데이터입니다. 자세한 내용은 이진 또는 스칼라 정량화를 사용하여 압축 및 좁은 데이터 형식 할당을 참조하세요.

필수 구성 요소

  • 인덱스 만들기 및 벡터 필드 추가에 대한 숙지

  • 차원당 1비트가 있는 이진 벡터는 값당 8비트가 포함된 uint8 값으로 패키지됩니다. 패키지된 이진 벡터를 직접 생성하는 모델을 사용하거나 인덱싱 및 검색 중에 클라이언트 애플리케이션의 이진 벡터로 벡터를 정량화하여 이러한 벡터를 가져올 수 있습니다.

제한

  • 데이터 가져오기 마법사에는 Azure 포털이 지원되지 않습니다.

  • Microsoft Foundry 모델 카탈로그에서 모델의 통합 벡터화에 사용되는 AML 기술 이진 필드에 대한 지원은 없습니다.

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

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

이진 벡터에 대한 벡터 검색을 구성하려면 다음을 수행합니다.

  1. 인덱스 - 만들기 또는 업데이트 (REST API) 요청 설정

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

  3. 유사성 메트릭을 사용하는 하나 이상의 벡터 검색 알고리즘 을 추가합니다 hamming. 계층적 탐색 가능 소규모 세계 알고리즘이 일반적이지만, 완전 탐색 K-최근접 이웃과 함께 해밍 거리를 사용할 수도 있습니다.

  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 속성을 설정하여 압축된 포맷을 가져옵니다.

인덱스로 이진 벡터 필드를 추가하려면 다음을 수행합니다.

  1. 필드 컬렉션에 필드를 추가하고 이름을 지정합니다.

  2. 데이터 형식을 .로 Collection(Edm.Byte)설정합니다.

  3. vectorEncoding를 packedBit로 설정하십시오 이진 인코딩을 위해.

  4. dimensions을 1024로 설정합니다. 원래(압축 해제) 벡터 차원을 지정합니다.

  5. 이전 단계에서 정의한 프로필로 설정합니다 vectorSearchProfile .

  6. searchable을 true로 설정합니다.

다음 필드 정의는 인덱스 스키마의 이진 벡터 필드의 예입니다.

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]
  • 스키마 정의, 벡터화, 인덱싱 및 쿼리를 포함하는 엔드투엔드 워크플로에 대한 azure-search-vector-samples 리포지토리를 검토합니다.

  • C#, Python 및 JavaScript 대한 벡터 검색 데모 코드를 검토합니다.