ИИ и машинное обучение
Что такое векторная база данных?
Векторная база данных (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 на практических курсах с менторами и реальными проектами.
Выбрать курс