Все статьи
Инструменты · 3 мин

Векторная база данных: что это простыми словами

Как устроена векторная база данных, зачем она нужна в продуктах с ИИ и с чего начать работу с эмбеддингами

Олег ЕмельяновДелаю продукты с помощью ИИ

Векторная база данных — это хранилище, которое держит данные не как обычный текст или числа, а как векторы: длинные ряды чисел, которые описывают смысл объекта. Два похожих по смыслу текста превращаются в два вектора, которые лежат близко друг к другу в этом числовом пространстве, а непохожие — далеко. Поэтому такая база ищет по смыслу, а не по точному совпадению слов в запросе.

Запрос «векторная база данных» обычно появляется у тех, кто собирает продукт с ИИ: модель умеет отвечать, но не помнит контекст и не отличает похожие документы от разных. Векторная база данных закрывает именно эту задачу — она хранит смысл в виде чисел и умеет быстро находить похожее.

Как это устроено

Текст, картинку или кусок кода сначала прогоняют через модель-эмбеддер — она превращает объект в вектор, набор из сотен или тысяч чисел. Эмбеддинг и есть этот вектор: не сам объект, а его числовой отпечаток смысла.

Эмбеддинг — числовой отпечаток смысла, а не сам текст

Термин · Эмбеддинг · от embedding — вложение · Вектор чисел, которым модель описывает смысл текста, картинки или кода — чем ближе смысл, тем ближе векторы друг к другу

Дальше база хранит эти числа рядом с исходным объектом и умеет быстро находить ближайшие векторы к любому новому запросу. Чтобы не перебирать миллионы векторов по одному, внутри строится индекс — структура, которая сразу отсекает дальние и оставляет только похожих кандидатов. Поэтому ответ приходит быстро даже на большой коллекции документов.

Кроме самого вектора база обычно хранит метаданные: откуда взялся текст, какая у него дата, к какому разделу он относится. По ним можно сузить поиск — например, искать похожие вопросы только внутри одного курса.

Пример из жизни

Самый частый сценарий — чат-бот поверх своих документов, RAG: retrieval-augmented generation. Пользователь задаёт вопрос, его превращают в вектор, векторная база находит несколько ближайших кусков документации, и эти куски вместе с вопросом отправляются в модель. Модель отвечает с реальным контекстом, а не придумывает факты из общих знаний.

Та же механика работает для поиска товаров по описанию, подбора похожих статей в блоге или рекомендаций: запрос переводится в вектор, и дальше это поиск ближайших соседей в числовом пространстве.

Смысл совпадает — слова можно не повторять

Поиск по смыслу · Разные · Похожи · Совпали · 0 · 2

Разница с обычным поиском по ключевым словам в том, что векторная база находит документ без слов запроса, если смысл совпадает. Запрос «где получить возврат денег» найдёт страницу про «политику возврата», хотя слова почти не пересекаются.

С чего начать

Чтобы попробовать векторную базу в своём продукте, не нужно поднимать отдельный сервер с нуля — многие привычные базы уже умеют хранить векторы, а отдельные сервисы заточены только под это.

Для старта подойдёт расширение pgvector в обычном Postgres, если база уже есть в проекте, или отдельный сервис вроде Qdrant, Chroma или Pinecone, если нужна скорость на больших объёмах. Разница между ними — в масштабе и в том, сколько инфраструктуры готов держать сам, а не в принципе работы: вектор, индекс, поиск по сходству — одно и то же везде.

Векторная база нужна не всегда — иногда хватает обычного поиска

Когда нужна векторная база · Поиск по смыслу · а не по точным словам · Контекст для модели · RAG поверх своих документов · Рекомендации · похожие товары, статьи, вопросы

Вопросы и ответы

Чем векторная база данных отличается от обычной

Обычная база хранит текст и числа и ищет по точному совпадению. Векторная база хранит эмбеддинги — числовые отпечатки смысла — и ищет по близости векторов, поэтому находит похожее по смыслу, даже если слова не совпадают.

Зачем векторная база данных нужна в продуктах с ИИ

Она даёт модели контекст: по вопросу пользователя находит нужные куски своих документов и передаёт их модели, чтобы ответ строился на реальных данных, а не на догадках модели.

Какую векторную базу данных выбрать для старта

Если база уже есть в проекте, достаточно расширения pgvector в Postgres. Для больших объёмов и готовой инфраструктуры под векторы подходят отдельные сервисы — Qdrant, Chroma, Pinecone.

Читать ещё