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 на практичних курсах із менторами та реальними проєктами.

Обрати курс