
Что такое векторные вкрапления?
Векторные вложения - это числовые представления точек данных в высокоразмерном пространстве, в котором похожие точки данных находятся ближе друг к другу, а непохожие - дальше друг от друга. Например, расстояние между словами может указывать на семантическое сходство в векторном пространстве. Париж и Токио находятся близко друг к другу, но далеко от Apple.
Векторные вкрапления широко используются в машинном обучении и искусственном интеллекте для передачи семантического смысла неструктурированных данных (таких как текст, видео, изображения, аудио и т.д.), что позволяет проводить более эффективный и точный анализ, поиск и извлечение информации. Векторные вкрапления обычно генерируются моделями нейронных сетей (или более современными моделями трансформаторной архитектуры).
Поскольку векторное представление объекта данных содержит только числа, векторный поиск сходства иногда называют "плотным векторным поиском " или "встраивающим векторным поиском", который отличается от традиционного поиска по ключевым словам, где между словами в поиске и возвращаемыми данными должны быть точные совпадения. "Лексический поиск" и "разреженный векторный поиск" - термины, которые обычно относятся к традиционному поиску по ключевым словам.
Векторные вкрапления обычно хранятся в современной векторной базе данных для индексации и эффективного поиска по сходству.
Как создаются векторные вкрапления?
Векторные вкрапления часто создаются с помощью моделей машинного обучения (также называемых embedding models), которые учатся отображать исходные данные в векторное пространство. Модель встраивания преобразует каждую единицу информации в вектор чисел, а расстояние между двумя векторами означает, насколько они похожи семантически.
Ниже приведены основные шаги по созданию векторных вкраплений:
- Первый шаг - выбор данных и решение о том, какие переменные будут составлять векторы. Это могут быть слова в корпусе текстов, визуальные образы и предпочтения пользователей.
Далее из данных извлекаются релевантные признаки с помощью токенизации и стемминга, а также прекращается удаление слов для текстовых данных. Рассмотрим использование конволюционных нейронных сетей (CNNs) для распознавания и извлечения признаков изображений для данных об изображениях.
После предварительной обработки данных введите их в модель машинного обучения, например Word2Vec, GloVe, OpenAI или другую модель глубокой нейронной сети. В процессе обучения модель учится создавать векторные представления для каждого элемента в наборе данных. Модель изменяет масштаб этих векторов, чтобы минимизировать различия между похожими элементами и увеличить различия между разными.
В результате получается многомерное векторное пространство, в котором каждый элемент набора данных представлен определенным вектором. В этом пространстве похожие предметы расположены ближе друг к другу, а непохожие - дальше друг от друга.
Разреженные, плотные, бинарные вкрапления векторов
Векторные вложения можно разделить на три типа по их представлению и свойствам: плотные эмбеддинги, разреженные эмбеддинги и бинарные эмбеддинги. Каждый тип имеет свои преимущества и сферы применения.
Плотные вкрапления (плотные векторы)
Плотные вкрапления или плотные векторы - это векторы, большинство элементов которых ненулевые, что обеспечивает компактное числовое представление, которое отражает богатые, непрерывные характеристики данных. Как правило, плотные вкрапления, имеющие низкую размерность, могут эффективно сжимать информацию в меньшем пространстве, что делает их полезными для хранения и вычислений. Плотные вкрапления часто встречаются в таких приложениях, как вкрапления слов (например, Word2Vec, GloVe, FastText), вкрапления предложений (например, Universal Sentence Encoder, InferSent, Sentence-BERT) и вкрапления изображений, полученных с помощью конволюционных нейронных сетей (например, ResNet, VGG). Плотные вкрапления очень удобны для сбора семантической информации. Они особенно подходят для моделей на основе нейронных сетей и глубокого обучения, которые полагаются на такие подробные представления для задач классификации, кластеризации и поиска сходства.
Разреженные вкрапления (разреженные векторы)
Разреженные вкрапления, или разреженные векторы, - это векторы, большинство элементов которых равны нулю, что часто приводит к созданию высокоразмерных представлений, подчеркивающих наличие или отсутствие определенных признаков. Такие вложения используются в текстовом анализе и информационном поиске с помощью таких методов, как TF-IDF (Term Frequency-Inverse Document Frequency) и bag-of-words. Разрозненные вкрапления просты для понимания и реализации, что делает их эффективными для традиционных алгоритмов машинного обучения и линейных моделей.
Бинарные вкрапления (бинарные векторы)
Двоичные вкрапления или двоичные векторы - это векторы, каждый элемент которых равен либо 0, либо 1, что позволяет создавать компактные представления, которые очень эффективны для хранения и поиска информации. Такие вкрапления часто используются в приложениях, требующих высокой эффективности, например, в локально-чувствительном хешировании (LSH) для поиска приблизительного ближайшего соседа в высокоразмерных пространствах, бинарных нейронных сетях, где веса и активации являются бинарными, и хешировании признаков (трюк хеширования) для преобразования больших категориальных признаков в бинарные векторы фиксированного размера. Встраивание бинарных векторов позволяет повысить эффективность хранения и вычислений, что делает их идеальными для обработки крупномасштабных данных и приложений, работающих в режиме реального времени. Благодаря своей компактности они особенно полезны для задач поиска и извлечения сходства.
Простое руководство по созданию векторных вкраплений
Вот пример использования предварительно обученной модели встраивания для создания вкраплений для наших собственных слов. Чтобы следовать этому примеру, вам нужно установить Python и настроить векторную базу данных Milvus для хранения и поиска векторов.
Сначала установите зависимости: milvus, pymilvus и gensim. Pymilvus - это Python SDK для Milvus, а gensim - это Python-библиотека для обработки естественного языка (NLP).
Gensim - это библиотека Python с открытым исходным кодом для моделирования тем и анализа сходства документов с помощью различных алгоритмов без контроля. Она специализируется на обработке крупномасштабных текстовых корпораций и широко используется в задачах обработки естественного языка (NLP). Gensim поддерживает обучение и использование вкраплений слов с помощью таких моделей машинного обучения, как Word2Vec, FastText и Doc2Vec. Эти вкрапления отражают семантические связи между словами и могут быть использованы для решения различных задач НЛП.
pip install milvus, pymilvus, gensim
Импортируйте библиотеки.
import gensim.downloader as api
из pymilvus import (
соединения,
FieldSchema,
CollectionSchema,
DataType,
Collection)
Создайте соединение с сервером Milvus.
connections.connect(
alias="default",
user='username',
password='password',
host='localhost',
port='19530'
)
Создайте коллекцию.
#Создает коллекцию:
fields = [
FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(name="words", dtype=DataType.VARCHAR, max_length=50),
FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=50)
]
schema = CollectionSchema(fields, "Demo to store and retrieve embeddings")
demo_milvus = Collection("milvus_demo", schema)
Загрузите предварительно обученную модель из gensim.
model = api.load("glove-wiki-gigaword-50")
Генерируем текстовые вкрапления, используемые для слов образца.
лед = модель['лед']
вода = model['water']
cold = model['cold']
дерево = model['tree']
мужчина = model['man']
женщина = model['woman']
ребенок = model['child']
female = model['female']
Вот пример векторного вложения для слова "female".
array([-0.31575 , 0.74461 , -0.11566 , -0.30607 , 1.524 , 1.9137 ,
-0.392 , -0.67556 , -0.1051 , -0.17457 , 1.0692 , -0.68617 ,
1.2178 , 1.0286 , 0.35633 , -0.40842 , -0.34413 , 0.67533 ,
-0.5443 , -0.21132 , -0.61226 , 0.95619 , 0.43981 , 0.59639 ,
0.02958 , -1.1064 , -0.48996 , -0.82416 , -0.97248 , -0.059594,
2.396 , 0.74269 , -0.16044 , -0.69316 , 0.55892 , 0.22892 ,
0.013605, -0.44858 , -0.52965 , -0.96282 , -0.54444 , 0.18284 ,
0.16551 , 0.33446 , 0.53432 , -1.4824 , -0.34574 , -0.82834 ,
0.10107 , 0.024414], dtype=float32)
Вставьте сгенерированные векторные вкрапления в коллекцию
#Вставка данных в коллекцию
data = [
[1,2,3,4,5,6,7,8], # поле pk
['лед','вода','холод','дерево','мужчина','женщина','ребенок','женщина'], # поле слов
[ice, water, cold, tree, man, woman, child, female], # field embeddings
]
insert_result = demo_milvus.insert(data)
# После вставки конечной сущности лучше всего вызвать flush, чтобы в памяти не осталось растущих сегментов
demo_milvus.flush()
Создайте индексы для сущностей.
индекс = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 128},
}
demo_milvus.create_index("embeddings", index)
Загрузите коллекцию в память для подтверждения успешной загрузки и выполните поиск векторного сходства.
demo_milvus.load()
# выполняет поиск векторного сходства:
data = [cold]
search_params = {
"metric_type": "L2",
"params": { "nprobe": 10},
}
result = demo_milvus.search(data, "embeddings", search_params, limit=4, output_fields=["words"])
Перебираем результаты и выводим слова.
for i in range(0,4):
hit = result[0][i]
print(hit.entity.get('words'))
А вот и ожидаемый результат.
холод
лед
вода
мужчина
Как работают вкрапления?
Преобразуя данные, такие как изображения, текст и аудио, в числовые представления, эмбеддинги позволяют машинам понимать семантический смысл и взаимосвязи в исходных данных. Это открывает двери для инновационных приложений в самых разных областях.
Поиск похожих изображений, видео или аудиофайлов
Представьте себе поиск похожих фотографий или видео на основе их содержания, а не только ключевых слов. Например, поиск изображений по звуку (птиц легче услышать, чем увидеть) или поиск видео по изображению. Векторные вкрапления делают такой поиск возможным. Извлекая вкрапления из изображений, видеокадров или аудиофрагментов с помощью таких методов, как [Конволюционные нейронные сети (CNN)] (https://zilliz.com/glossary/convolutional-neural-network), мы можем хранить эти вкрапления в векторных базах данных, таких как Milvus или Zilliz Cloud. Когда пользователь ищет по запросу изображение, видео или аудиоклип, система извлекает похожие элементы, сравнивая последовательные данные с их встроенными векторными представлениями.
Ускорение поиска лекарств
Поиск лекарств - сложный и длительный процесс. Векторные вложения могут ускорить этот процесс, помогая ученым выявлять перспективных кандидатов в лекарственные препараты. Закодировав химические структуры лекарственных соединений в векторных вложениях, созданных выше, мы можем измерить их сходство с целевыми белками. Это позволяет исследователям сосредоточиться на наиболее перспективных направлениях, что ускоряет открытие и разработку лекарств.
Повышение релевантности поиска с помощью семантического поиска
Традиционные поисковые системы часто не могут понять истинное намерение пользователя, что приводит к нерелевантным результатам. Предположим, компания превращает свои внутренние документы в векторы и хранит их в векторной базе данных. Теперь сотрудники могут искать эти документы, используя обычный человеческий чат. Ближайшие вкрапления данных к вкраплению вопроса сотрудника в чате могут быть извлечены из векторной базы данных и отправлены в ChatGPT в качестве части подсказки для генерации человекоподобного текстового ответа на вопрос сотрудника. Ответ будет наиболее близким по значению на основе данных компании. Этот общий процесс называется RAG (Retrieval Augmented Generation). Добавление семантического понимания документов компании может значительно повысить релевантность внутреннего поиска для этой компании и избежать галлюцинаций ИИ.
Рекомендательные системы
Рекомендательные системы крайне важны для онлайн-платформ, но общие рекомендации могут разочаровать. Векторные вкрапления предлагают решение, позволяя нам представлять пользователей и предметы в виде вкраплений. Измеряя сходство между пользователем и предметом для генерации векторных вкраплений, мы можем создавать персонализированные рекомендации, учитывающие уникальные предпочтения каждого пользователя. Это приведет к созданию более эффективных рекомендательных систем и, надеемся, к повышению вовлеченности пользователей.
Обнаружение аномалий
Выявление необычных закономерностей в данных имеет огромное значение для различных приложений, таких как обнаружение мошенничества, сетевая безопасность и мониторинг промышленного оборудования. Векторные вкрапления представляют собой мощный инструмент для обнаружения аномалий. Представляя точки данных в виде вкраплений, мы можем вычислять расстояния или несходства между точками данных. Значительные расстояния могут сигнализировать о потенциальных аномалиях, которые необходимо исследовать. Это позволяет нам заблаговременно выявлять проблемы, способствуя раннему выявлению и предотвращению аномалий.
Различные типы векторных вкраплений в зависимости от характера представляемых данных
Векторные вкрапления также можно разделить на вкрапления слов, вкрапления изображений, вкрапления графов, мультимодальные вкрапления и т. д., в зависимости от области применения и характера представляемых данных. Вот некоторые из наиболее распространенных типов векторных вкраплений.
- Встраивание слов: Встраивания слов представляют слова как числовые векторы в непрерывном векторном пространстве. Они обучаются на больших текстовых массивах, таких как Википедия, с помощью различных моделей, таких как Word2Vec, GloVe или fastText. Эти модели используют различные механизмы для представления каждого слова в виде вектора чисел. Word2Vec генерирует вкрапления слов, прогнозируя слово в огромном текстовом корпусе. Он определяет лингвистические отношения между словами. Например, "король" и "королева" могут быть представлены в виде векторов, расположенных близко друг к другу в пространстве, показывая их семантическое сходство. GloVe, с другой стороны, опирается на данные о кокуррентности слов для построения векторов. GloVe может представить слова "лед" и "вода" как векторы, расположенные близко друг к другу, поскольку они часто встречаются в тексте и имеют общие семантические отношения. fastText переносит вложения слов на уровень подслова, что позволяет работать со словами, не входящими в словарный запас (OOV), или вариациями.
- Встраивания предложений и документов: Вкрапления предложений и документов представляют целые предложения или документы в виде числовых векторов, используя такие модели, как Doc2Vec и BERT. Doc2Vec опирается на парадигму Word2Vec для генерации вкраплений на уровне документов, позволяя кодировать целые документы или отрывки. BERT (Bidirectional Encoder Representations from Transformers) учитывает контекст каждого термина в предложении, что приводит к созданию векторов вкраплений с высокой степенью учета контекста.
- Эмбеддинги изображений: CNN могут создавать вкрапления изображений путем извлечения признаков на различных уровнях сети. Они обеспечивают ценный подход к классификации и поиску изображений. Например, фотография кошки может содержать вектор встраивания изображения с признаками, представляющими ее уши, шерсть и хвост. Другие модели, такие как Inception и ResNet, также имеют слои, которые могут извлекать признаки из изображений. Модель Inception может генерировать вложения, представляющие визуальные атрибуты изображения, например объекты или узоры.
- Встраивание временных рядов: Вы можете встраивать данные временных рядов с помощью нейронных сетей с долговременной кратковременной памятью (LSTM) и рекуррентных нейронных сетей (GRU), которые способны улавливать временные зависимости. Встраивание на основе LSTM или GRU позволяет улавливать временные зависимости для данных временных рядов, например цен на акции. Например, эти векторные вложения могут представлять закономерности в движении цен на акции.
- Аудиовложения: В обработке звука вкрапления mel-frequency cepstral coefficients (MFCC) представляют аудиоданные для задач классификации звука. При распознавании речи вкрапления MFCC отражают акустические характеристики аудиосигналов. Например, они могут представлять спектральное содержание произносимых слов.
- Встраивание графов: Рассмотрим граф социальной сети. Node2Vec может генерировать вкрапления узлов, где похожие пользователи (узлы) имеют схожие векторы. Например, пользователи со схожими интересами могут иметь схожие векторные вкрапления. Вы также можете использовать графовые нейронные сети (ГНС) для генерации вкраплений для узлов и отражения сложных отношений в графах. GNN могут представлять пользователей и предметы в рекомендательной системе и предсказывать взаимодействие пользователя и предмета.
Области применения векторных вкраплений
Вот как можно применять векторные вкрапления в различных областях.
- Поиск векторного сходства изображений, видео и аудио [https://zilliz.com/learn/vector-similarity-search]: Вы можете извлекать вкрапления из изображений, видеокадров или аудиосегментов, используя такие методы, как CNN для извлечения изображений или признаков. Храните эти вкрапления в базе данных векторов. Когда пользователь запрашивает изображение, видеокадр или аудиоклип, он получает похожие элементы, измеряя сходство между их вкраплениями.
- AI drug discovery: Кодируя химические структуры соединений в эмбеддинги, можно использовать эти эмбеддинги для измерения сходства между лекарственными соединениями и предсказания потенциальных белков-мишеней для лекарственных соединений.
- Семантическая поисковая система: Векторные вкрапления расширяют возможности поисковых систем, сопоставляя смысл запросов с соответствующими документами, что повышает релевантность поиска.
- Рекомендательная система: Вы можете представлять пользователей и предметы в виде вкраплений. Измерение сходства между пользователем и предметом для создания персонализированных рекомендаций. Индивидуальные рекомендации повышают удобство использования.
- Обнаружение аномалий: Представляя точки данных в виде вкраплений, вы можете выявлять необычные закономерности в данных. Это достигается путем вычисления расстояния или несходства между точками данных. Точки данных с большим расстоянием являются потенциальными аномалиями. Это может быть полезно при выявлении мошенничества, сетевой безопасности, мониторинге промышленного оборудования или процессов.
Подробнее о векторном встраивании и [случаях использования векторных баз данных] (https://zilliz.com/use-cases).
Зачем использовать векторные вкрапления
- Распознавание образов: Векторные вкрапления отражают закономерности, сходства и несходства в данных. Модели машинного обучения выигрывают от вкраплений, представляющих значимые паттерны, улучшая производительность в таких задачах, как классификация и кластеризация.
- Уменьшение размерности: Встраивания уменьшают размерность данных. Они преобразуют высокоразмерные данные в более низкоразмерные векторы, упрощая вычислительные задачи и зачастую повышая эффективность.
- Семантическое понимание: Векторные вкрапления кодируют семантические связи между точками данных, облегчая машинам понимание и интерпретацию сложной информации.
- Эффективная обработка: Числовые векторы эффективны с точки зрения вычислений. Алгоритмы машинного обучения могут обрабатывать числовые данные быстрее и с меньшими вычислительными затратами.
- Трансферное обучение: Предварительно обученные вкрапления, такие как вкрапления слов в NLP или вкрапления изображений в компьютерном зрении, могут быть точно настроены для решения конкретных задач. Это уменьшает потребность в огромных объемах помеченных данных, ускоряет сходимость модели и повышает ее производительность.
FAQ по векторному встраиванию
Где хранятся векторные вкрапления?
Векторные вкрапления можно хранить в векторной базе данных, например Milvus, в базе данных in-memory, например Redis, в базах данных, например PostgreSQL, или в файловой системе. Выбор места хранения векторных вкраплений зависит от таких факторов, как объем данных, шаблоны доступа и специфические требования приложения.
В чем разница между векторными базами данных и векторными вкраплениями?
Векторные базы данных - это специализированные базы данных, которые индексируют, хранят и извлекают векторные данные. В отличие от них, векторные вкрапления - это числовые представления точек данных (например, предложений, изображений или других объектов) в непрерывном векторном пространстве. Встраивания фиксируют значимые связи и закономерности в данных, а базы данных хранят векторы и оптимизируют поиск по сходству на основе векторных [метрик сходства] (https://docs.zilliz.com/docs/search-metrics-explained).
Что такое векторы?
Векторы представляют неструктурированные данные с помощью многомерных массивов чисел. Примерами могут служить аудиовекторы, векторы изображений, видео или текста. Они позволяют выполнять такие операции, как векторный поиск. Алгоритмы поиска, такие как KNN, ANNS или HNSW, организуют данные таким образом, чтобы быстро вычислять расстояние между векторами. Расстояние между векторами определяет сходство, и при поиске возвращаются самые близкие векторы. Это полезно для кластеризации, обнаружения аномалий, обратного поиска изображений, ответов на вопросы в чате или составления рекомендаций. Создание структуры данных для эффективного поиска векторов называется созданием векторного индекса.
Отличаются ли вкрапления от векторов?
Эмбеддинги в сравнении с векторами: Технически вектор - это фундаментальный математический объект, представленный многомерным массивом чисел, а эмбеддинги - это техника преобразования неструктурированных данных в векторные представления с помощью математических операций, которые фиксируют семантические связи между точками данных. Но в большинстве случаев, особенно в контексте машинного обучения, "векторы" и "вкрапления" можно использовать как взаимозаменяемые понятия.
Что такое векторный индекс?
Векторный индекс [https://zilliz.com/learn/choosing-right-vector-index-for-your-project], также известный как индекс векторной базы данных или индекс сходства, - это структура данных, используемая в векторных базах данных для организации и оптимизации поиска векторных данных на основе [метрики сходства] (https://docs.zilliz.com/docs/search-metrics-explained). Примерами индексов являются FLAT, IVF_FLAT, IVF_PQ, IVF_SQ8, HNSW и SCANN для поиска по ANN на базе CPU и GPU_IVF_FLAT и GPU_IVF_PQ для поиска по ANN на базе GPU.
В чем разница между предварительно обученными вкраплениями и пользовательскими вкраплениями?
Предварительно обученные вставки создаются на основе предварительно обученных моделей глубокого обучения, называемых контрольными точками. Эти контрольные точки обычно представляют собой модели с открытым исходным кодом transformer models, которые были обучены на публичных данных. Пользовательские вкрапления создаются на основе ваших собственных моделей глубокого обучения, обученных на ваших собственных, специфических для вашей области учебных данных.
Создает ли векторная база данных Zilliz векторные вкрапления?
Да. Zilliz Cloud - это полностью управляемый сервис векторной базы данных Milvus, способный создавать, хранить и извлекать миллиарды векторных вкраплений.
Zilliz Cloud может похвастаться мощной функцией Pipelines, которая позволяет преобразовывать неструктурированные данные в высококачественные векторные вкрапления с возможностью поиска. Эта функция упрощает рабочий процесс векторизации для разработчиков, охватывая создание, извлечение и удаление векторов для быстрой и эффективной работы. Она также минимизирует затраты на обслуживание разработчиков и предприятий, избавляя их от необходимости использовать дополнительные технологические стеки, такие как модели встраивания, для создания своих приложений.
Лучшие векторные базы данных для векторных вкраплений
Не существует универсальной "лучшей" векторной базы данных; выбор зависит от ваших потребностей. Поэтому очень важно оценить масштабируемость, функциональность, производительность и совместимость векторной базы данных с вашими конкретными задачами.
Современные базы данных для встраивания векторов должны обеспечивать эффективный поиск векторов, фильтрацию с использованием метаданных, а также семантический поиск и поиск по ключевым словам. Они также должны быть масштабируемыми, настраиваемыми и производительными, чтобы справляться с рабочими нагрузками корпоративного уровня.
Одним из общепризнанных инструментов бенчмаркинга с открытым исходным кодом, который можно оценить, является ANN-Benchmark. ANN-Benchmark позволяет построить график результатов тестирования отзыва/запросов в секунду различных алгоритмов на основе ряда предварительно вычисленных наборов данных. На оси x отображается коэффициент запоминания, а на оси y - QPS, что иллюстрирует производительность каждого алгоритма при различных уровнях точности поиска.
Помимо использования инструментов бенчмаркинга, вы также можете обратиться к этим сравнительным диаграммам основных векторных баз данных с открытым исходным кодом и полностью управляемых сервисов векторных баз данных по их архитектуре, масштабируемости, производительности, вариантам использования, стоимости и набору функций.
- Что такое векторные вкрапления?
- Как создаются векторные вкрапления?
- Разреженные, плотные, бинарные вкрапления векторов
- Простое руководство по созданию векторных вкраплений
- Как работают вкрапления?
- Различные типы векторных вкраплений в зависимости от характера представляемых данных
- Области применения векторных вкраплений
- Зачем использовать векторные вкрапления
- FAQ по векторному встраиванию
Контент
Начните бесплатно, масштабируйтесь легко
Попробуйте полностью управляемую векторную базу данных, созданную для ваших GenAI приложений.
Попробуйте Zilliz Cloud бесплатно