Що взагалі таке вектор?#
Коли звичайні люди вперше чують слово «вектор», воно часто здається абсолютно незрозумілим. Ті, хто навчався у класах з природничим ухилом, можуть пам'ятати його з уроків математики (алгебри та геометрії), але для гуманітаріїв це поняття зазвичай чуже. Найпростіший спосіб інтуїтивно зрозуміти вектор — уявити географічну карту.
Уявіть перед собою карту та проведіть пряму лінію від станції Токіо до станції Ікебукуро. Це і є базова концепція вектора. У числових значеннях це лінія зі стрілкою по діагоналі прямокутника шириною 3 см і висотою 5 см. Іншими словами, вектор вказує «напрямок і величину (довжину)» від однієї точки до іншої. На карті це 2-вимірний простір, але додавання висоти робить його 3-вимірним, що широко застосовується у фізиці для опису руху об'єктів.
Чотиривимірна кишеня Дораемона, ймовірно, базується на 4 осях: довжина, ширина, висота та час (за Ейнштейном четверта вісь — це час). Зберігаючи кілька числових значень, ми можемо математично виражати багатовимірні вектори. 3D-простір легко зрозуміти, бо це наш фізичний світ, але задаючи 1024, 1536 або 4096 вимірів як стандарт деталізації, ми отримуємо набагато точніший вектор. Сприймайте багатовимірність просто як математичний спосіб представлення: головне пам'ятати, що вектор описує «напрямок і кількість».
Використання в сучасних моделях штучного інтелекту (LLM)#
Справжнім проривом у сучасних технологіях штучного інтелекту стала векторизація тексту. Перетворення цілих речень у вектори значно спрощує математичні розрахунки для генерації наступного тексту — це фундаментальна основа великих мовних моделей (LLM). У нашому векторному пошуку семантичне значення речень зберігається як векторні дані, що суттєво підвищує точність пошуку та допомагає ШІ точно вловлювати контекст.
Зауважимо, що це стосується текстового ШІ; генерація зображень працює на базі зовсім інших теорій, таких як дифузійні моделі (Diffusion Models).
Поточний стан документації та реалізація#
Середовище розробки Kurousagi побудоване на базі Cloudflare, де для збереження специфікацій використовується база даних D1 (на базі SQLite). Спочатку специфікації зберігалися як файли Markdown або HTML у репозиторіях, проте при паралельній розробці багатьох бібліотек файли дублювалися та губилися.
Тому ми перейшли на монорепозиторій і створили внутрішній портал розробника. Редагування специфікацій через API та браузер дозволило централізовано керувати всією документацією та швидко знаходити будь-який документ.
Однак у процесах розробки з активним залученням ШІ покроковий пошук по всіх документах витрачає занадто багато токенів. Для вирішення цієї проблеми ми впровадили векторний повнотекстовий пошук.
Базовий принцип роботи#
Тексти специфікацій зберігаються в базі даних D1. До цього ми підключили Cloudflare Vectorize — спеціалізовану векторну базу даних. Ми витягуємо тексти з D1, обробляємо їх через Cloudflare Workers AI та зберігаємо як векторні ембеддинги в Cloudflare Vectorize (CF Vectorize).
Безкоштовний ліміт Cloudflare Workers AI
- 10 000 Neurons на день на акаунт для всіх моделей Workers AI
- Оплата лише за використання понад ліміт
- Скидання щодня о 00:00 UTC (09:00 за токійським часом)
- Спільний ліміт для всіх моделей Workers AI в обліковому записі
Ми використовуємо модель ембеддингів @cf/baai/bge-m3. Завдяки багатомовній підтримці японські специфікації та пошукові запити проектуються в однаковий числовий векторний простір.
Безкоштовний ліміт Cloudflare Vectorize
- Зберігання: 5 мільйонів векторних вимірів
- Пошук: 30 мільйонів векторних вимірів на місяць
- Плата за перевищення: Відсутня (для продовження роботи потрібен перехід на платний план)
- Egress, CPU та обслуговування індексів: Без додаткової плати
Оскільки наш акаунт є платним (Paid), дані легко вкладаються в ліміт 10 мільйонів вимірів, але це перевищує стандартний безкоштовний тариф. Логіка проста: регулярний cron-скрипт витягує оновлені тексти з D1 через Workers AI, векторизує їх і зберігає у Vectorize. Під час пошуку запит користувача векторизується, Vectorize знаходить найбільш схожі записи, а повний текст завантажується з D1.
Враження від використання#
Наше враження після впровадження векторного пошуку: неймовірно зручно! Якщо раніше доводилося шукати за окремими словами на зразок «термінал» або «втрата», то тепер запит на кшталт «дії з обліковим записом у разі втрати пристрою» одразу виводить потрібний список специфікацій. Проте через обмежені ліміти безкоштовного тарифу для великих обсягів тексту знадобиться платний план.
На скріншоті показано панель керування векторним пошуком, де видно перевищення безкоштовного ліміту. Workers AI скидається щодня, але векторне сховище зберігає дані постійно.
Це чудовий інструмент для тих, хто вже має платний тариф Cloudflare. Сподіваємося, наш досвід стане вам у пригоді!