Индексирование двоичных векторов для поиска векторов
Внимание
Типы двоичных данных доступны в общедоступной предварительной версии в разделе "Дополнительные условия использования". REST API 2024-05-01-preview и более поздних предварительных версий предоставляют новый тип данных.
Начиная с REST API 2024-05-01-preview, поиск ИИ Azure поддерживает упакованный двоичный тип Collection(Edm.Byte)
для дальнейшего уменьшения объема хранилища и памяти векторных данных. Этот тип данных можно использовать для выходных данных из таких моделей, как внедрение двоичных моделей Cohere версии 3.
Существует три шага по настройке индекса для двоичных векторов:
- Добавление алгоритма поиска вектора, указывающего расстояние Хамминга для сравнения двоичных векторов
- Добавление профиля вектора, указывающего на алгоритм
- Добавление профиля вектора в определение двоичного поля
В этой статье предполагается, что вы знакомы с созданием индекса в службе "Поиск ИИ Azure". Он использует REST API для иллюстрации каждого шага, но можно также добавить двоичное поле в индекс в портал Azure.
Необходимые компоненты
- Двоичные векторы с 1 битом на измерение, упакованные в значения uint8 с 8 битами на значение. Их можно получить с помощью моделей, которые непосредственно создают "упакованные двоичные" векторы или путем квантизации векторы в двоичные векторы на стороне клиента во время индексирования и поиска.
Ограничения
- Нет скалярного сжатия или встроенной векторизации.
- В мастере импорта и векторизации данных не поддерживается портал Azure.
- Нет поддержки двоичных полей в навыке AML, используемом для интегрированной векторизации моделей в каталоге моделей Azure AI Studio.
Добавление алгоритма поиска вектора и профиля вектора
Алгоритмы поиска векторов используются для создания структур навигации запросов во время индексирования. Для двоичных векторных полей сравнение векторов выполняется с помощью метрики расстояния Хамминга.
Чтобы добавить двоичное поле в индекс, настройте
Create or Update Index
запрос с помощью REST API 2024-05-01-preview или портал Azure.В схеме индекса добавьте раздел, указывающий
vectorSearch
профили и алгоритмы.Добавьте один или несколько алгоритмов поиска векторов с метрикой
hamming
сходства. Обычно используется иерархические навигационные небольшие миры (HNSW), но вы также можете использовать расстояние Хамминга с исчерпывающими К-ближайшими соседями.Добавьте один или несколько профилей векторов, которые указывают алгоритм. Вы не можете указать скалярное сжатие или векторизатор в этой предварительной версии.
В следующем примере показана базовая 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)
данных значение . packedBit
Установите значениеvectorEncoding
для двоичного кодирования.- Задайте для параметра
dimensions
значение1024
. Укажите исходное (распаковаемое) векторное измерение. - Задайте
vectorSearchProfile
профиль, определенный на предыдущем шаге.
Минимальное определение коллекции полей должно выглядеть примерно так:
"fields": [
{
"name": "Id",
"type": "Edm.String",
"key": true,
"searchable": true
},
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile"
}
]
См. также
Примеры кода в репозитории azure-search-vector-samples демонстрируют комплексные рабочие процессы, включающие определение схемы, векторизацию, индексирование и запросы.
Существует демонстрационный код для Python, C# и JavaScript.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по