Что такое векторная база данных?
Векторная база данных — это хранилище, оптимизированное под эмбеддинги: она хранит векторы вместе с исходными фрагментами текста и умеет за миллисекунды находить те из них, которые ближе всего к вектору запроса.
Обычная реляционная база отвечает на вопрос «покажи строки, где поле равно значению». Векторная отвечает на вопрос «покажи записи, наиболее похожие по смыслу на эту». Для этого она использует индексы приближённого поиска ближайших соседей, которые не сравнивают запрос со всеми векторами подряд.
Векторные базы — обязательный компонент почти любой RAG-системы. Популярные варианты: Pinecone, Qdrant, Weaviate, Milvis, а также расширение 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 обычно достаточно, и это заметно упрощает инфраструктуру: одна база, одна резервная копия, один инструмент. Специализированные решения выигрывают на больших объёмах, сложной фильтрации и высокой частоте запросов.
Как обновлять данные в векторной базе?
При изменении документа его фрагменты нужно заново превратить в векторы и перезаписать, а удалённые — убрать. Обычно это делают по расписанию или по событию изменения. Забытое обновление приводит к тому, что помощник отвечает по устаревшей редакции.
Сколько стоит такое хранилище?
Для небольших объёмов — практически ничего: расширение к существующей базе бесплатно, а память под несколько десятков тысяч векторов невелика. Основные расходы обычно приходятся не на хранение, а на построение эмбеддингов при загрузке и обновлении документов.