Vector Database Vocabulary: Embeddings, Search, and Similarity Explained (англійською)
Вбудовування векторів, семантичний пошук, HNSW, ANN, косинус подібності, конвеєр RAG — словник, який вам потрібен для роботи з векторними базами даних і пошуком на основі штучного інтелекту англійською мовою.
Векторні бази даних є серцем сучасних застосувань штучного інтелекту — від семантично пошуку до генерації з підвищеним пошуком (RAG). Оскільки ці технології переходять від досліджень до виробництва, словник навколо них стає важливим для інженерів, які пишуть проектні документи, переглядають PR і обговорюють архітектуру з науковцями даних. Ось основна термінологія, яку ми чітко пояснимо.
Вектори і вбудовування
** Вбудоване векторне представлення ** — Числове представлення вмісту (тексту, зображення, звуку, коду) у вигляді списку чисел з рухомою комою — * вектора * — у просторі з високими вимірами. Подібний вміст створює подібні вектори. Фраза: “Ми використовуємо вбудовану модель для перетворення описів продуктів в 1536-вимірні вектори і зберігаємо їх у векторній базі даних.”
** Модель вбудовування ** — модель машинного навчання, яка створює векторні вбудовування. Приклади: OpenAI text-embedding-3-small, Cohere Embed, sentence-transformers. Одну і ту ж модель слід використовувати для зберігання і запиту вбудованих даних — змішування моделей призведе до порушення пошуку.
** Стратегия розбиття на шматки ** — метод, який використовується для розбиття довгих документів на менші частини перед вбудовуванням. Поширені стратегії: шматки фіксованого розміру, шматки на рівні речення, шматки на рівні абзацу, семантичні шматки. Фраза: “Ми перевірили три стратегії розбиття на шматки — семантичні розбиття на шматки дали найкращу точність пошуку для довгих юридичних документів.”
Пошук і подібність
** Семантичний пошук ** — пошук результатів за значенням, а не за точним збігом ключових слів. Запит * « як скасувати мою підписку » * знайде документи щодо * « припинення членства » *, навіть якщо вказані слова не збігаються. Фраза: “Ми замінили пошук за ключовими словами на семантичний пошук — результати задоволення користувачів значно покращилися для запитів довгого хвоста.”
** Пошук за подібністю ** — пошук векторів, які найближче відповідають вектору запиту за відстанню або метрикою подібності. Також називається * пошук вектора * або * пошук найближчого сусіда *.
** Косинус подібності ** — метрика, що вимірює кут між двома векторами. Значення варіюються від - 1 до 1; значення, що ближче до 1, означають більш схожі. Найчастіше використовується для вбудовування тексту. Фраза: “Косінусна схожість добре працює для вбудованих текстів, тому що вона ігнорує величину — важливий тільки напрямок.”
** Схожість добутку точок ** — інша метрика схожості: сума добутку елементів. Для нормалізованих векторів це еквівалентно косинусній подібності. Деякі векторні бази даних використовують добутку точок з метою швидкості.
** ANN (Approximate Nearest Neighbour) ** — алгоритм, який знаходить вектори, * приблизно * найближчі до запиту, з невеликою точністю, але значно швидшим пошуком. Необхідний у масштабі — точний пошук найближчого сусіда занадто повільний для мільйонів векторів.
HNSW (Hierarchical Navigable Small World) (вимова: кожна літера окремо: H-N-S-W) — Найбільш широко використовуваний алгоритм індексування ANN. Побудовує багатошарову структуру графіка, що надає змогу швидко здійснювати приблизний пошук. Фраза: “HNSW дає суб-мілісекунду затримки пошуку на мільйон-вектор індексу — набагато швидше, ніж плоский пошук з використанням брутального сили.”
Векторні операції з базами даних
** Upsert ** — Комбінована операція вставки або оновлення: якщо вектор з вказаним ідентифікатором існує, оновити його; у іншому випадку вставити. Стандартний спосіб додавання векторів до більшості баз даних векторів. Фраза: “Ми додаємо вбудовані продукти, коли каталог оновлюється — ідентифікатори є SKU продукту.”
** Простір назв ** — логічний розділ у індексі бази даних векторів, який відокремлює вектори з різних джерел або користувачів. Фраза: “Кожен клієнт отримує свій власний простір імен — запити шукають тільки в просторі імен клієнта.”
** Фільтрування метаданих ** — фільтрування результатів векторного пошуку за доданими метаданими (наприклад, за категорією, датою, мовою) перед або після векторного пошуку. Фраза: “Ми фільтруємо за language: 'en' і category: 'support' перед векторним пошуком — це сужає набір кандидатів і покращує точність.”
** Переранжування ** — Крок після отримання, який змінює порядок початкових результатів векторного пошуку за допомогою більш точної (і більш дорогої) моделі. Фраза: “Ми отримуємо 50 найкращих кандидатів за векторною схожістю, а потім переранжуємо їх за допомогою крос-кодера — точність значно поліпшується.”
Підводний камінь
** Конвейєр RAG (Retrieval- Augmented Generation) ** — архітектура, за допомогою якої векторний пошук отримує відповідні контекстні документи, які потім надаються до мовної моделі як частина підказки. Зменшує галюцинації і дозволяє відповіді, засновані на ваших даних. Фраза: “Наш конвеєр RAG отримує 5 найкращих шматків з бази знань і вводить їх в запит LLM.”
** Векторний індекс ** — структура даних, яка надає змогу швидко шукати подібності за збереженими вбудованими даними. Індекс HNSW, IVF (Індекс інвертованих файлів) або плоский індекс. Фраза: “Перебудова векторного індексу після зміни схеми займає близько 20 хвилин на нашому наборі даних.”
** Вправа: ** Налаштування мінімального векторного пошуку за допомогою безкоштовного рівня Pinecone, Weaviate або Qdrant. Вбудовує десять речень, зберігає їх і виконує запит на найближче речення до нового вводу. Потім напишіть коротке технічне пояснення того, що ви створили, використовуючи словник з цієї статті.
Навигація: спільне фразування та відгуки
Будьмо чесними, коли ви вивчаєте професійну англійську, особливо на технічні теми, такі як векторні бази даних, це не просто про те, щоб знати що щось є. Це розуміння того, як люди говорять про це - тонке формулювання, улюблена термінологія і як зазвичай дається зворотній зв’язок. Це може здатися особливо складним, тому що точність є найважливішою в розробці, але так само важливо чітке спілкування в команді.
Наприклад, уявіть, що ви витратили багато годин на створення конвеєра RAG (Retrieval- Augmented Generation) за допомогою вбудованих елементів для покращення точності пошуку. Ви ретельно налаштували свою модель і пишаєтеся результатами. Колега переглядає ваш запит на завантаження і додає цей коментар: « Вбудована векторна розмірність є… цікавою. Можеш описати, чому ти вибрав 768? Це здається трохи занадто для наших типових довжин запитів, і може впливати на продуктивність. “Тепер, просто знати, що “вбудована векторна розмірність” * означає * недостатньо. Зрозуміти приховану занепокоєність - що 768 може бути надмірним і негативно впливати на швидкість - є ключовим. Колега не критикує ваш вибір; він пропонує вам пропозицію, засновану на його спостереженнях потенційних наслідків. Аналогічно, якщо ви описуєте процес комусь новому, сказати « Ми використовуємо косинусну схожість для вимірювання відстані між вбудованими елементами » буде цілком прийнятним, але додавання « Це дозволяє нам знайти документи з подібним * семантичним значенням * » прояснює * чому * за технічним терміном і робить його більш доступним. Інша поширена фраза - “досконала настройка індексу”, яка не тільки про коригування параметрів; це означає процес ітеративного поліпшення на основі спостережуваної поведінки - можливо, кориговані параметри в HNSW або ANN алгоритмів для оптимізації швидкості пошуку і відновлення.
Також важливо відзначити, як люди обговорюють розв’язання проблем. Замість того, щоб сказати: «Пошук повертає незначні результати», більш конструктивним підходом було б: «Я бачу деякий дрейф у подібності з певними запитами. Давайте розглянемо, чи вбудована модель потребує подальшого вдосконалення, або якщо нам потрібно налаштувати параметри індексу HNSW - конкретно, значення efConstruction.”Ця фраза негайно сигналізує про проблему і пропонує потенційні рішення без призначення звинувачення. Крім того, при описі продуктивності пошуку ANN (Approximate Nearest Neighbor) ви можете почути, як хтось каже: «Ми прагнемо до балансу між відновленням і затримкою». Це підкреслює внутрішній компроміс – пріоритетність знаходження * усіх * відповідних результатів (відновлення) проти мінімізації часу, який потрібно для їх пошуку (затримка).
Ось простий приклад використання faiss для побудови індексу:
import faiss
dimension = 768
index = faiss.IndexFlatL2(dimension) # L2 distance is common for cosine similarity
index.add([vector1, vector2, vector3]) # Add vectors to the index
print(index.nlist(10)) # Get the top 10 nearest neighbors
Це демонструє основне використання faiss, але розуміння основних концепцій — метрики відстані (L2), індексування стратегій (FlatL2) і додавання даних — є ключем до ефективного використання векторних баз даних.