Prog Academy
RU UA
ШІ та машинне навчання

Що таке векторна база даних?

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

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

Векторні бази — обовʼязковий компонент майже будь-якої 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 зазвичай достатньо, і це помітно спрощує інфраструктуру: одна база, одна резервна копія, один інструмент. Спеціалізовані рішення виграють на великих обсягах, складній фільтрації та високій частоті запитів.

Як оновлювати дані у векторній базі?

При зміні документа його фрагменти треба наново перетворити на вектори і перезаписати, а видалені — прибрати. Зазвичай це роблять за розкладом або за подією зміни. Забуте оновлення призводить до того, що помічник відповідає за застарілою редакцією.

Скільки коштує таке сховище?

Для невеликих обсягів — практично нічого: розширення до наявної бази безплатне, а памʼять під кілька десятків тисяч векторів невелика. Основні витрати зазвичай припадають не на зберігання, а на побудову ембедингів при завантаженні й оновленні документів.

Повʼязані терміни