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

Note

Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.

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

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

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

Предупреждение

Если задано значение storedfalse, векторные данные теряются во время частичных обновлений документов, если вы не предоставляете весь вектор в каждом обновлении. Установите значение stored , чтобы true избежать этой проблемы. Дополнительные сведения см. в разделе "Устранение необязательных векторных экземпляров из хранилища".

Предварительные требования

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

Для реализации сжатия MRL можно использовать интерфейсы REST API или пакеты Azure SDK. В настоящее время нет поддержки портала Azure или Microsoft Foundry.

  • Проверьте журналы изменений для каждого пакета sdk Azure для поддержки функций: Python, .NET, Java, JavaScript.

Использование внедрения расширенного текста MRL

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

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

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

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

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

  5. truncationDimension Включите параметр и задайте для него значение 512. Если вы используете модель text-embedding-3-large, значение можно установить на уровне 256.

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

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

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

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

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

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

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

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

В следующем формате JSON показано определение векторного поля, которое использует этот профиль:

  • Тип данных имеет значение Collection(Edm.Half) или Collection(Edm.Single).

  • Поле имеет vectorSearchProfile свойство, указывающее параметры алгоритма и сжатия.

  • Поле имеет dimensions свойство, указывающее количество измерений для оценки и ранжирования результатов. Его значение должно быть ограничением размеров используемой модели (1536 для text-embedding-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": []
}