Головна / Статті / Пояснення векторних баз даних: як машини здійснюють пошук за значенням

Пояснення векторних баз даних: як машини здійснюють пошук за значенням

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

1497 слів

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

Перш ніж розглядати, як працює база даних векторів, корисно зрозуміти саму проблему, яку вона намагається вирішити.

Уявіть, що у вас є поле пошуку, і ви вводите слово „dog.“ Стандартна функція пошуку буде переглядати ваші документи у пошуках точного рядка „dog.“ Але що станеться, якщо в документі насправді використовується слово „puppy“? Пошук у простому текстовому форматі повністю проігнорує це, адже для комп’ютера „dog“ та „puppy“ — це просто дві різні послідовності символів, хоча ми, люди, відразу розуміємо, що вони стосуються одного й того самого об’єкта.

Ось у чому суть проблеми. Комп’ютери дуже добре справляються зі знаходженням точних рядків тексту, але у них важко самостійно зрозуміти значення. Саме цю прогалину і призначена для подолання база даних векторів.

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

Що ж насправді таке вектор?

У найпростішому вигляді вектор — це просто список чисел. Нічого більш загадкового. Цей список чисел використовується для представлення чогось іншого — це може бути окреме слово, повне речення, цілий абзац чи навіть зображення.

Ви, можливо, запитуєтеся, як послідовність чисел може замінювати слово.

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

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

Тож коли модель ШІ перетворює слово „собака“ на вектор, вона по суті присвоює цьому слову координати в цьому просторі. Слово „цуценя“ отримує координати, які знаходяться дуже близько до них, оскільки ці два слова також мають схоже значення.

База даних векторів — це не магія. Це просто розумний спосіб зберігання значень у вигляді чисел, а потім пошуку на основі близькості, а не точного збігу слів.

Карта значень

База даних векторів — це, по суті, система, яка відповідає за зберігання всіх цих координат. Коли ви подаєте запит, вона знаходить ті координати, які зберігаються найближче до координат вашого запиту на цій карті. Це, по суті, і є весь механізм.

Як насправді працює база даних векторів?

Процес можна розділити на чотири основні кроки:

  1. Перетворення тексту на вектор (цей крок називається імбеддингом)
  2. Зберігання цього вектора в базі даних разом із відповідним текстом
  3. Перетворення вашого пошукового запиту також на вектор
  4. Знаходження найближчих відповідних векторів та повернення тексту, пов’язаного з ними

Розгляньмо кожен з цих кроків детальніше.

1. Імбеддинг: перетворення тексту на числа

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

Наприклад, якщо підставити речення на кшталт "Я люблю машинне навчання" у функцію ембеддингу, це дасть числовий результат у вигляді серії десяткових значень, щось на кшталт кількох десятих та сотих часток у будь-якому напрямку — як позитивних, так і негативних.

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

2. Зберігання вектора

Як тільки вектор створюється, він зберігається у базі даних векторів разом із текстом, з якого він був отриманий. До найпопулярніших баз даних векторів сьогодні належать Pinecone, Chroma, Weaviate та Qdrant. Немає потреби запам’ятовувати цей список — достатньо пам’ятати, що подібні інструменти створені саме для обробки такого типу даних.

3. Перетворення вашого запитання на вектор

Коли ви вводите запитання, наприклад "Що таке машинне навчання?", це саме запитання проходить через ту саму модель ембеддингу та також перетворюється на вектор.

4. Пошук найбільш схожого результату

На цьому етапі база даних бере вектор вашого запитання та порівнює його з кожним вектором, який вже зберігається в ній. Потім вона шукає ті, що знаходяться найближче до вашого запиту. Ця „близькість“ зазвичай обчислюється за допомогою методу, який називається косинусовою схожістю, хоча наразі вам не потрібно заглиблюватися у математичні основи цього процесу. Основна ідея проста: вектори, які знаходяться близько один до одного, відображають значення, які також є близькими.

Це описує весь процес від початку до кінця. Якщо розглядати його крок за кроком, він насправді не є таким складним.

Де використовуються бази даних векторів у реальному житті?

Можливо, ви цікавитеся, де саме ця технологія знаходить застосування у повсякденних інструментах. Ось кілька конкретних прикладів:

1. Системи RAG У конфігураціях генерації з підтримкою пошуку компонент-пошуковик, відповідальний за перегляд документів, використовує у своїй роботі векторну базу даних. Це, по суті, з’єднувальний елемент, який поєднує процес пошуку документів із векторним пошуком.

2. Рекомендації товарів Коли інтернет-магазин відображає „схожі товари“, він часто порівнює вектори товарів, а не просто збігає теги категорій.

3. Рекомендації музики та відео Додатки, які пропонують пісні на основі загального настрою чи вражень, а не суворо дотримуючись жанрових позначок, працюють шляхом порівняння векторів, створених на основі характеристик самого аудіо.

4. Чат-боти та підтримка клієнтів Чат-бот підтримки, який може переглядати внутрішню документацію компанії, щоб відповісти на запитання клієнта, у більшості випадків працює на векторній базі даних у фоновому режимі.

Векторна база даних проти звичайної бази даних

На цьому етапі ви, можливо, запитуєтеся, що саме відрізняє це від звичайних баз даних, з якими ви вже знайомі. Ось у чому різниця:

  • Звичайна база даних зберігає точні значення та отримує дані через точні збіги або фільтри. Вона ідеально підходить для запитів на кшталт "знайти клієнта з ID = 5."
  • Векторна база даних зберігає значення у числовій формі та отримує дані на основі їхньої близькості. Вона ідеально підходить для запитів на кшталт "знайти документи, схожі на це запитання."

Пам’ятайте, що векторна база даних не призначена для заміни звичайної бази даних. На практиці більшість реальних систем використовують їх одночасно. Звичайна база даних обробляє структуровані дані, такі як ціна, ідентифікатор чи дата, тоді як векторна база даних обробляє все, що потребує розуміння значення, таке як текст, зображення чи відкриті запитання.

Щоб підсумувати, ось короткий огляд:

  • Традиційний пошук за ключовими словами знаходить лише точні відповідності та не функціонує, коли одну й ту саму ідею формулюють по-іншому
  • Вектор — це просто список чисел, які використовуються для представлення значення
  • Векторна база даних зберігає ці числові представлення та знаходить найближчі відповідності під час пошуку

Це справді все, що в цьому є. Тут немає жодної магії — лише розумний спосіб зберігання значень, який дозволяє комп’ютеру шукати серед них так, як наш мозок природно обробляє інформацію. Якщо ви хочете практикуватися, спроба інструменту на кшталт Chroma — гарна початкова точка, адже він безкоштовний та зрозумілий для початківців.

Пов’язана література

  • Розуміння пам’яті ШІ: пояснення контексту, ембеддингів, RAG та параметрів моделей — У цій статті детально розглядається, як системи ШІ насправді зберігають інформацію, включаючи контекстні вікна, ембеддинги, векторні бази даних, RAG та параметри моделей.
  • Чому DevSecOps стає новою перешкодою в епоху програмування з використанням ШІ — Пояснюється, як код, створений за допомогою ШІ, зміщує проблемну точку інженерії програмного забезпечення з написання коду на його перевірку, що робить автоматизований DevSecOps ключовим елементом довіри.