Векторные базы данных — один из новейших инструментов в области MLOps / Data Engineering. Они спроектированы так, чтобы быть эффективными при запросах ближайших соседей по сравнению с вложениями, обеспечивая при этом простой интерфейс CRUD для удобства сопровождения.

Вложения — это выходные данные слоя модели глубокого обучения по отношению к входным данным (одна точка данных). Это выученные представления, в которых объекты одного класса проецируются рядом друг с другом.

Лучшие векторные базы данных позволяют комбинировать запросы метаданных, например. разделение набора данных или класс, к которому вы хотите, чтобы результаты принадлежали, вместе с запросом ближайшего соседа, например. вернуть ближайших соседей к этому входному примеру, которые не имеют такой же метки. Этого трудно добиться с помощью библиотек ближайшего соседа, таких как Faiss и Annoy, потому что индекс создается заранее и не может быть отфильтрован. Чтобы достичь эквивалентного результата, вам нужно будет вернуть избыток ближайших соседей, а затем применить фильтр после.

Я бы порекомендовал встраиваемый проектор tensorflow для развития интуиции, если вы не знакомы (лучше всего использовать MNIST с изображениями).



Хотя важно отметить, что вложения подвергаются уменьшению размерности с помощью PCA, T-SNE или U-MAP, чтобы быть спроецированы в 3 измерения.

Эта статья:



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

1. Активное обучение

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

2. Модульное тестирование

Вы определили конкретный тип проблемы, которая требует больших затрат (например, вы не можете отличить ложки от вилок), и хотите следить за своим прогрессом в ее решении? Получите ближайших соседей к экземпляру случая ошибки в помеченном наборе, предоставьте описание проблемы и отследите, как производительность меняется с течением времени.

3. Ближайший контрфактический

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

NB: здесь вам может быть лучше использовать что-то вроде соответствия KNN или просто посмотреть на случаи, когда между вашей моделью и лейблом существует наибольшее несоответствие. Ближайший контрфакт — это здорово, но он достаточно ручной и плохо масштабируется по сравнению с более систематическими подходами.

4. Поиск экземпляров с неправильной маркировкой

Ваша модель совершает ошибку, которая кажется простым случаем? Проверьте ближайших соседей в обучающих наборах на наличие неправильно помеченных экземпляров и убедитесь, что у вас действительно есть некоторые экземпляры, которые в первую очередь похожи в обучающем наборе.

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

Дайте мне знать, что вы думаете. Пожалуйста, нажмите «Подписаться», если контент вас интересует.