Введение
Open AI CLIP ViT-L/14. Размерность каждого эмбеддинг-вектора — 768.
Этот датасет можно использовать для моделирования вопросов проектирования, подбора размера и производительности
крупномасштабного приложения векторного поиска из реального мира. Датасет можно использовать как для поиска
изображений по тексту, так и для поиска изображений по изображению.
Сведения о датасете
npy и Parquet на the-eye.eu
ClickHouse также предоставил подмножество из 100 миллионов векторов в бакете S3.
Бакет S3 содержит 10 файлов Parquet, каждый из которых включает 10 миллионов строк.
Мы рекомендуем пользователям сначала оценить требуемые ресурсы, чтобы определить требования к хранилищу и памяти для этого датасета, обратившись к документации.
Шаги
1
Создание таблицы
Создайте таблицуlaion_5b_100m для хранения эмбеддингов и связанных с ними атрибутов:id — это просто целое число, которое увеличивается на единицу. Дополнительные атрибуты можно использовать в предикатах, чтобы понять,
как поиск по векторному сходству работает в сочетании с постфильтрацией/префильтрацией, как описано в документации2
Загрузите данные
Чтобы загрузить данные из всех файловParquet, выполните следующий оператор SQL:3
Выполнение полного перебора для векторного поиска по сходству
Поиск KNN (k ближайших соседей), или метод полного перебора, предполагает вычисление расстояния от каждого вектора в наборе данных до искомого эмбеддинг-вектора с последующей сортировкой расстояний для нахождения ближайших соседей. В качестве вектора поиска можно использовать один из векторов самого набора данных. Например:Query
Response
4
Создайте индекс векторного сходства
Выполните следующий SQL, чтобы задать и построить индекс векторного сходства для столбца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.