Поделиться через


Усечение измерений с помощью сжатия MRL (предварительная версия)

Внимание

Эта функция предоставляется в общедоступной предварительной версии в соответствии с дополнительными условиями использования. Предварительная версия REST API поддерживает эту функцию.

Вы можете использовать меньше измерений для моделей, внедренных в текст. В Azure OpenAI модели внедрения текста-3 переобучены на методе Обучения представления Матриошки (MRL), который создает несколько векторных представлений на разных уровнях сжатия. Такой подход позволяет быстрее выполнять поиск и сократить затраты на хранение с минимальными потерями семантической информации.

В поиске ИИ Azure MRL поддерживает скалярную и двоичную квантизацию. При использовании любого метода квантизации можно также указать truncationDimension свойство в полях векторов, чтобы уменьшить размерность внедрения текста.

Многоуровневое сжатие MRL сохраняет векторное хранилище и улучшает время отклика запросов для векторных запросов на основе внедрения текста. В службе "Поиск ИИ Azure" поддержка MRL предлагается только вместе с другим методом квантизации. Использование двоичной квантизации с MRL обеспечивает максимальное уменьшение размера векторного индекса. Чтобы добиться максимального сокращения хранилища, используйте двоичную квантизацию с MRL и stored установите значение false.

Эта функция находится в режиме предварительного просмотра. Она доступна в 2024-09-01-preview пакетах ПАКЕТА SDK для бета-версии и в ней, предназначенных для предварительной версии API.

Необходимые компоненты

  • Модели внедрения текста-3, такие как Text-embedding-3-small или Text-embedding-3-large (только текстовое содержимое).

  • Новые векторные поля типа Edm.Half или Edm.Single (не удается добавить сжатие MRL в существующее поле).

  • Иерархический алгоритм навигации small World (HNSW) (без поддержки исчерпывающих KNN в этой предварительной версии).

  • Скалярная или двоичная квантизация. Усеченные измерения можно задать только при настройке скалярной или двоичной квантизации. Мы рекомендуем двоичную квантизацию для сжатия MRL.

Поддерживаемые клиенты

Для реализации сжатия MRL можно использовать ИНТЕРФЕЙСы REST API или бета-версии пакетов Azure SDK.

В настоящее время не поддерживается портал Azure или Azure AI Studio.

Использование внедренных текста с расширением MRL

MRL — это возможность, встроенная в модель внедрения текста, которую вы уже используете. Чтобы воспользоваться этими возможностями в службе "Поиск ИИ Azure", выполните следующие действия.

  1. Используйте индекс создания или обновления (предварительная версия) или эквивалентный API, чтобы указать схему индекса.

  2. Добавьте векторные поля в определение индекса.

  3. vectorSearch.compressions Укажите объект в определении индекса.

  4. Включите метод квантизации, скалярный или двоичный (рекомендуется).

  5. truncationDimension Включите параметр, равный 512, или не более 256, если используется модель преобразования текста в 3.3.

  6. Укажите векторный профиль, указывающий алгоритм HNSW и объект сжатия вектора.

  7. Назначьте профиль вектора Edm.Half типу или Edm.Single коллекции полей.

Нет изменений на стороне запроса для использования модели внедрения текста с поддержкой MRL. Встроенная векторизация, преобразование текста в запрос во время запроса, семантический ранжирование и другие функции улучшения релевантности, такие как повторное использование с помощью исходных векторов и чрезмерное использование, не влияют на поддержку MRL.

Индексирование медленнее из-за дополнительных шагов, но запросы быстрее.

Пример конфигурации векторного поиска, поддерживающей MRL

В следующем примере показана конфигурация векторного поиска, которая соответствует требованиям и рекомендациям MRL.

truncationDimension — это свойство сжатия. Он указывает, сколько нужно уменьшить граф векторов в памяти вместе с методом сжатия, таким как скалярное или двоичное сжатие. Рекомендуется использовать 1024 или более поздней версии для truncationDimension двоичной квантизации. Размерность менее 1000 снижает качество результатов поиска при использовании MRL и двоичного сжатия.

{ 
  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "use-bq-with-mrl", 
        "compression": "use-mrl,use-bq", 
        "algorithm": "use-hnsw" 
      } 
    ],
    "algorithms": [
       {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
             "m": 4,
             "efConstruction": 400,
             "efSearch": 500,
             "metric": "cosine"
          }
       }
    ],
    "compressions": [ 
      { 
        "name": "use-mrl", 
        "kind": "truncation", 
        "rerankWithOriginalVectors": true, 
        "defaultOversampling": 10, 
        "truncationDimension": 1024
      }, 
      { 
        "name": "use-bq", 
        "kind": "binaryQuantization", 
        "rerankWithOriginalVectors": true,
        "defaultOversampling": 10
       } 
    ] 
  } 
} 

Ниже приведен пример полного определения поля вектора, удовлетворяющего требованиям для MRL.

Помните, что поля векторов должны иметь тип Edm.Half или Edm.Single. Векторные поля должны иметь vectorSearchProfile свойство, определяющее параметры алгоритма и сжатия. Векторные поля имеют dimensions свойство, используемое для указания количества измерений для оценки и ранжирования результатов. Его значение должно быть ограничением измерений используемой модели (1536 для текстового внедрения-3-small).

{
    "name": "text_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "stored": false,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "normalizer": null,
    "dimensions": 1536,
    "vectorSearchProfile": "use-bq-with-mrl",
    "vectorEncoding": null,
    "synonymMaps": []
}