Phone icon Связаться с нами

ИИ и машинное обучение

Что такое векторная база данных?

Векторная база данных (vector database) — это хранилище, приспособленное для эмбеддингов: оно хранит векторы вместе с фрагментами текста и за миллисекунды находит те, что ближе всего к вектору запроса.

Обычная реляционная база отвечает на вопрос «покажи строки, где поле имеет определённое значение». Векторная — на вопрос «покажи записи, больше всего похожие по смыслу на эту». Для этого она использует индексы приближённого поиска ближайших соседей, которые не сравнивают запрос со всеми векторами подряд.

Векторная база — обязательная часть почти каждой RAG-системы. Популярные варианты: Pinecone, Qdrant, Weaviate, Milvus, а также расширение pgvector, которое добавляет векторный поиск прямо в PostgreSQL.

Где применяется

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

Выбор решения зависит от объёма. Для небольших данных часто хватает расширения для обычной базы, например pgvector в PostgreSQL, — и не нужен отдельный сервис. Для миллионов документов берут специализированные Qdrant, Weaviate, Pinecone или Milvus.

Пример

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

results = client.search(
    collection_name='knowledge_base',
    query_vector=embed('как оформить возврат'),
    limit=5,
    with_payload=True,
)

for point in results:
    print(round(point.score, 3), point.payload['title'])
Поиск ближайших фрагментов: в базу поступает вектор запроса, а возвращаются похожие по смыслу записи.

Частые вопросы

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

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

Нужна ли отдельная векторная база, или хватит PostgreSQL?

Для сотен тысяч фрагментов обычно хватает расширения pgvector, и это заметно упрощает инфраструктуру: одна база, одна резервная копия, один инструмент. Специализированные решения лучше для больших объёмов, сложной фильтрации и большого количества запросов.

Как обновлять данные в векторной базе?

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

Сколько стоит векторное хранилище?

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

Обучение программированию в OWU

Освойте профессию в IT на практических курсах с менторами и реальными проектами.

Выбрать курс