Прибуток:
- Зрозумійте, що вбудовування перетворює текст на вектор у семантичному просторі, а подібні значення є близькими векторами
- Пояснення того, як працює пошук ANN з косинусними та точковими показниками подібності
- Вибір загальних векторних баз даних на основі вартості, масштабу та потреби у фільтрації метаданих
В основі RAG лежить одне запитання: «Який фрагмент тексту найбільше схожий на запитання користувача?» Комп’ютер обробляє текст цифрами, а не буквально. Тому нам потрібно спочатку перетворити текст на числа, які несуть його значення. Ось що таке вбудовування: процес перетворення тексту в послідовність чисел (вектор), що представляє значення цього тексту. Коли ви закінчите цей розділ, ви знатимете, як працює вбудовування, як вимірюється подібність і як вибрати правильну векторну базу даних.
Вбудовування: переклад значення в координати
Модель вбудовування (спеціально навчений штучний інтелект) перетворює наданий вами текст у вектор із, наприклад, 1024 чисел. Подумайте про цей вектор як про координату в багатовимірному просторі. Магія полягає в тому, що схожі за змістом тексти потрапляють у близькі координати в цьому просторі.
Простий приклад: «щорічна відпустка», «право на відпустку» і «щорічна оплачувана відпустка» використовують різні слова, але означають те саме — їхні вектори близькі один до одного. Інша справа «Розрахунок» — його вектор далекий. Тож користувач запитує "скільки у мене днів відпустки?" Коли ви запитаєте, ми навіть можемо знайти документ, де немає слова «відпустка», а написано «щорічна відпустка — 14 днів». Це те, що класичний пошук за ключовими словами (пошук, який точно відповідає слову) не може зробити.
Порада. Думайте про вбудовування як про «відбиток сенсу». Відбитки пальців двох речень з однаковим значенням виглядають схожими; Навіть якщо слова різні.
Важливе правило: модель, яку ви використовуєте під час вбудовування запитання, має бути тією ж моделлю, яку ви використовуєте під час вбудовування документів. Різні моделі створюють різні простори; координати стають непорівнянними.
Як виміряти подібність?
Існує кілька методів вимірювання схожості двох векторів. Найбільш поширеною є косинусна подібність: вона вимірює кут між двома векторами. Якщо кут невеликий (вектори спрямовані в одному напрямку), подібність велика. Значення становить від −1 до 1; Близько до 1 = дуже схоже.
критерій
Що це вимірює?
Коли це краще?
Косинус
Кут (напрям) між векторами
Найпоширеніший; типова в тексті семантична схожість
Точковий добуток
Напрямок + величина разом
Якщо вектори нормалізовані, це дає той самий результат, що й косинус; швидкий
Евклідова (евклідова відстань)
Пряма відстань між координатами
У деяких сценаріях кластеризації; менше використовується в тексті
На практиці більшість моделей вбудовування створюють нормалізовані вектори (розмір встановлено на 1); У цьому випадку косинус і скалярний добуток мають однаковий порядок. Нехай вас паралізує рішення: починайте з косинуса.
Серед мільйонів векторів порівняння їх один за одним відбувається повільно. Ось чому векторні бази даних використовують алгоритми ANN (Approximate Nearest Neighbor). ANN дуже швидко знаходить «майже точне найближче», а не «точне найближче». Наприклад, метод HNSW може повернути результати за кілька мілісекунд навіть для 10 мільйонів векторів. Ви отримуєте велику швидкість за невелику жертву точності.
Що робить векторна база даних?
Векторна база даних виконує три речі одночасно: (1) зберігає вектори, (2) швидко знаходить вектори, найбільш схожі на вектор запиту, (3) фільтрує за метаданими поруч із кожним вектором. Метадані — це теги, які ви додаєте до цього фрагмента: вихідний файл, дата, відділ, рівень конфіденційності тощо. Фільтрування метаданих є критично важливим у корпоративних RAG; тому що вам потрібно мати можливість встановити обмеження на кшталт «шукати лише в документах фінансового відділу 2025».
# Реєстрація у векторній базі даних (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Щорічна оплачувана відпустка 14 днів..."), text="Щорічна оплачувана відпустка 14 днів...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "date": "2025-06", "конфіденційність": "ic"})
# Пошук із фільтрацією метаданих (концептуальний)результат = vektor_db.search( vektor=embed("скільки у мене днів відпустки?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Вибір правильної бази даних
транспортний засіб
Рекомендований аспект
Відповідна ситуація
Вбудований/файловий (вбудована бібліотека)
Без установки, одна машина
Прототип, невеликий набір (<кілька сотень тисяч деталей)
Керований хмарний сервіс
Масштабування та обслуговування не є вашою відповідальністю
Виробництво, швидко зростаючі дані, невелика команда
Відкритий код на вашому власному сервері
Повний контроль, ваші дані залишаються вашими
Зобов'язання щодо конфіденційності, наявна інфраструктура
Доповнення до існуючої бази даних
Ви не керуєте окремими системами
Додавання векторної підтримки до БД, яку ви вже використовуєте
Запитайте при виборі: Скільки штук буде? Наскільки важливою є фільтрація метаданих? Чи можуть дані виходити за межі компанії (конфіденційність)? Чи може команда керувати інфраструктурою? Часто розумно починати з малого та розширювати за потреби.
Слабкий підхід / Сильний підхід
Слабкий (зберігання простого вбудовування, без метаданих):
Просто збережіть текст і вектор. Пошук: повертає 4 найбільш схожі вектори.# Проблема: неможливо відфільтрувати як «лише поточні документи з кадрів»; # старі/неавторизовані частини також можуть бути включені у відповідь.
Потужний (багаті метадані + відфільтрований пошук):
Додайте джерело, дату, відділ і тег конфіденційності до кожного фрагмента. Фільтруйте відповідно до повноважень користувача та актуальності під час пошуку: filter = {"privacy": user_authority, "date_date": "2024-01"}# Таким чином, результат безпечний і актуальний.
Три міні-чохли
Випадок 1 — Неправильна суміш моделей. Команда вставила документи за моделлю А та запитання за моделлю Б. Пошуки дали безглузді результати, а відсоток правильних відповідей залишився на рівні 31%. Коли я перейшов на одну модель (обидві однакові моделі вбудовування), показник підскочив до 88%. Урок: питання та документ повинні бути в одному місці.
Випадок 2 — ризик конфіденційності без метаданих. У медичній компанії всі документи відділу були зібрані в єдиний пул без метаданих. Коли торговий партнер ставив запитання, система контекстуалізувала частину даних пацієнта. Після додавання метаданих + фільтра (відповідно до рівня авторизації) цей ризик було усунено; При вилученні 12 несанкціонованих штук взагалі не привозять.
Випадок 3 — вузьке місце масштабу. Компанія електронної комерції здійснила пошук у 8 мільйонах описів продуктів за допомогою простого методу «сканувати все»; Кожен запит займав 6 секунд. Коли ми перейшли на ANN на базі HNSW, час зменшився до 45 мілісекунд із лише 1% втратою точності. Урок: ANN є обов'язковим у великому наборі.
Поширені помилки
- Вбудовування питання та документа з різними моделями: результати безглузді; завжди одна модель.
- Пропуск метаданих: ви не можете фільтрувати; Ви втрачаєте контроль над конфіденційністю та актуальністю.
- Помилково приймаючи вбудовування за шифрування: вбудовування несе оборотну інформацію; Неправильно вважати, що конфіденційні дані «приховані».
- Створення надмірно великої інфраструктури на невеликому наборі: гігантський кластер, керований 5000 частинами, є непотрібною складністю.
- Не турбуйтеся надто про критерій подібності: починайте з косинуса в тексті; Точне налаштування відбувається пізніше.
Застереження: вбудовування вбудовує значення тексту в числа, але не «знищує» вміст. У разі витоку векторної бази даних оригінальні збережені тексти (у більшості інсталяцій текст також зберігається) також скомпрометовані. Зберігайте векторне сховище так само конфіденційним, як і документи в ньому.
Підсумовуючи
- Вбудовування перетворює текст на вектор чисел, який несе його значення; Подібні значення є близькими векторами.
- Подібність часто вимірюється косинусом; Для нормалізованих векторів скалярний добуток дає той самий результат.
- У великих даних ANN (наприклад, HNSW) замінює точний пошук: велика швидкість з невеликою втратою точності.
- Векторна база даних виконує векторне зберігання + пошук схожості + фільтрацію метаданих; Метадані важливі для корпоративної RAG.
- Питання та документ мають бути перекладені з однаковою моделлю вбудовування; інакше координати не можна порівняти.
Аплікаційне завдання
Виділіть 10 коротких уривків (3-6 речень кожен) із документа, який ви вибрали в попередньому розділі. (1) Створіть принаймні три теги метаданих для кожної частини (джерело, дата та третій, що відповідає вашому бізнес-контексту: відділ, продукт, конфіденційність тощо). (2) Напишіть, який фільтр метаданих слід застосувати до 3 різних запитань користувача. (3) Знайдіть 3 пари частин запитання, які виражають однакове значення в різних словах (наприклад, «право на відпустку» ↔ «щорічна відпустка»), і поясніть одним реченням, чому вони не відповідатимуть пошуку за ключовими словами, але відповідатимуть вбудовуванню.
контрольний список
- [ ] Я можу сказати, що вбудовування перетворює текст на вектор у семантичному просторі, і подібні значення близькі.
- Я знаю, що [ ] подібність косинуса вимірює кут і є перевагою за замовчуванням у тексті.
- [ ] Я можу пояснити, чому ШНН потрібна у великих даних.
- [ ] Я знаю, чому метадані критичні для контролю конфіденційності та свіжості.
- [ ] Я дотримуюся правила перекладу питання та документа з однаковою моделлю вбудовування.