Введение
Open AI CLIP ViT-L/14. Размерность каждого эмбеддинг-вектора — 768.
Этот датасет можно использовать для моделирования вопросов проектирования, подбора размера и производительности
крупномасштабного приложения векторного поиска из реального мира. Датасет можно использовать как для поиска
изображений по тексту, так и для поиска изображений по изображению.
Сведения о датасете
S3.
Бакет S3 содержит 10 файлов Parquet, каждый из которых включает 10 миллионов строк.
Мы рекомендуем пользователям сначала оценить требуемые ресурсы, чтобы определить требования к хранилищу и памяти для этого датасета, обратившись к документации.
Шаги
1
Создание таблицы
Создайте таблицу The
laion_5b_100m для хранения эмбеддингов и связанных с ними атрибутов:id — это просто целое число, которое увеличивается на единицу. Дополнительные атрибуты можно использовать в предикатах, чтобы понять,
как поиск по векторному сходству работает в сочетании с постфильтрацией/префильтрацией, как описано в документации2
Загрузите данные
Чтобы загрузить данные из всех файлов Загрузка 100 миллионов строк в таблицу займет несколько минут.Либо можно выполнить отдельные SQL-команды, чтобы загрузить определенное количество файлов / строк.
Parquet, выполните следующий оператор SQL:3
Выполнение полного перебора для векторного поиска по сходству
Поиск KNN (k ближайших соседей), или метод полного перебора, предполагает вычисление расстояния от каждого вектора в наборе данных
до искомого эмбеддинг-вектора с последующей сортировкой расстояний для нахождения ближайших соседей. В качестве вектора поиска
можно использовать один из векторов самого набора данных. Например:Запишите задержку запроса, чтобы затем сравнить её с задержкой запроса ANN (с использованием векторного индекса).
При 100 миллионах строк приведённый выше запрос без векторного индекса может занять несколько секунд или минут.
Query
Response
4
Создайте индекс векторного сходства
Выполните следующий SQL, чтобы задать и построить индекс векторного сходства для столбца Параметры и особенности производительности при создании индекса и выполнении поиска описаны в документации.
В операторе выше для гиперпараметров HNSW
vector таблицы laion_5b_100m:M и ef_construction используются значения 64 и 512 соответственно.
Вам нужно тщательно подобрать оптимальные значения этих параметров, оценивая время построения индекса и качество результатов поиска,
соответствующие выбранным значениям.Построение и сохранение индекса для полного набора данных из 100 миллионов записей может занять несколько часов в зависимости от количества доступных процессорных ядер и пропускной способности хранилища.5
Выполните ANN-поиск
После построения индекса векторного сходства запросы векторного поиска будут автоматически использовать этот индекс:Первая загрузка векторного индекса в память может занять от нескольких секунд до нескольких минут.
Query
6
Генерация эмбеддинг-векторов для поискового запроса
Эмбеддинг-векторы набора данных Ниже показан результат поиска, выполненного выше:
LAION 5b были созданы с помощью модели OpenAI CLIP ViT-L/14.Ниже приведён пример скрипта на Python, показывающий, как программно генерировать
эмбеддинг-векторы с помощью API CLIP. Затем эмбеддинг-вектор поискового запроса
передаётся в качестве аргумента функции cosineDistance() в запросе SELECT.Чтобы установить пакет clip, обратитесь к репозиторию OpenAI на GitHub.