Головна / Статті / Як насправді працюють бази даних векторів: від ембеддингів до гібридного пошуку

Як насправді працюють бази даних векторів: від ембеддингів до гібридного пошуку

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

1832 слів

Існує фраза, яка постійно згадується, коли розробники вперше починають працювати з системами GenAI:

"Я розумію, як працюють SQL-бази даних. Але векторні бази даних все одно здаються мені чорною скринькою."

Це цілком обґрунтована позиція.

Традиційна база даних обробляє запити через структуровані зв’язки:

SELECT * FROM customers WHERE country = 'India';

Векторна база даних створена для відповідей на зовсім інший тип запитів:

"Які збережені елементи мають значення, найближче до цього запиту?"

Саме ця зміна у типі запитань лежить в основі досить великої кількості сучасних додатків на основі ШІ.

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

Найважливішим є не сама технологія бази даних.

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

Що саме таке ембеддинг?

Перетворення значень на числа

Розгляньмо це речення:

"Employees can work remotely for up to 30 days."

Модель ембеддингів перетворює його на вектор:

[0.021, -0.184, 0.731, 0.092, ...]

На практиці ембеддинги мають сотні або навіть тисячі вимірів.

Не варто думати, що окремі числа означають:

"Це конкретне значення позначає слово employee."

Це не є точною когнітивною моделлю.

Натомість вектор є навченим числовим кодуванням семантичних характеристик тексту.

З огляду на це речення на кшталт:

"I love my dog."
"My puppy is my favorite companion."

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

"I love my dog."
"The database connection timed out."

Це і є основний механізм, який використовується.

Значення перекладаються на щось, що можна математично пошукати.

Створення ембеддингу

Створення ембеддингу за допомогою моделі відбувається за простою схемою:

from openai import OpenAI

client = OpenAI()

response = client.embeddings.create(
    model="text-embedding-3-small",
    input="Employees can work remotely for up to 30 days."
)

vector = response.data[0].embedding
print(len(vector))
print(vector[:5])

Отриманий вектор не призначений для читання людиною.

Це нормально.

Люди не є цільовою аудиторією для сирих чисел.

Мета — порівняти цей вектор з іншими векторами.

Схожість — це справжня ідея

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

Припустимо, у вас є три джерельні документи:

A -> Remote work policy
B -> Travel reimbursement policy
C -> Employee leave policy

А ваш запит є таким:

"Can I work from home while travelling abroad?"

Спочатку запит ембеддується.

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

Широко використовуваною метрикою схожості тут є косинусова схожість:

import numpy as np

def cosine_similarity(a, b):
   return np.dot(a, b) / (
      np.linalg.norm(a) *
      np.linalg.norm(b)
   )

Візуально це виглядає так:

Більша величина косинусової схожості свідчить про те, що два вектори спрямовані майже паралельно.

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

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

Чому ми не можемо просто порівняти кожен вектор?

Масштаб — це те, що руйнує наївний підхід

1,000 documents

При такому розмірі порівняння запиту з кожним окремим вектором є дуже простим.

Тепер уявіть:

100 million vectors

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

Саме цю проблему вирішує індексування векторів.

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

Відомою групою таких технік є HNSW – ієрархічні навіговані графи малого світу.

Вам не потрібно самостійно створювати HNSW, щоб скористатися пошуком векторів.

Однак вам необхідно зрозуміти основний компроміс:

Невелика жертва точності пошуку дозволяє досягти значного просунку у швидкості та можливостях масштабування.

Цей компроміс є основою функціонування баз даних векторів.

Що насправді зберігається в індексі векторів?

У реальних умовах використання кожен збережений запис зазвичай містить більше, ніж просто ембеддинг:

document = {
    "id": "policy-1042",
    "title": "Remote Work Policy",
    "content": "Employees can work remotely...",
    "department": "HR",
    "country": "India",
    "embedding": vector
}

Ця деталь має велике значення.

Ембеддинг не є заміною повного документа.

Він функціонує як зручне для індексації представлення документа.

Окрім нього вам все одно потрібно зберігати:

  • оригінальний текст, метадані, унікальні ідентифікатори, деталі контролю доступу та посилання на вихідне джерело

Це стає критично важливим під час створення систем RAG для корпоративного використання.

Azure AI Search

Точка перетину векторного пошуку та корпоративного пошуку

Azure AI Search пропонує пошук на основі векторів разом із традиційним пошуком за ключовими словами та їхніми гібридними комбінаціями.

Спрощений приклад векторного запиту виглядає так:

from azure.search.documents.models import VectorizedQuery

vector_query = VectorizedQuery(
    vector=query_vector,
    k_nearest_neighbors=5,
    fields="content_vector"
)
results = search_client.search(
    search_text=None,
    vector_queries=[vector_query],
    select=["title", "content"]
)

Результат, який повертається, не формулюється так:

"Ось речення, яке є математично найближчим."

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

Саме тут архітектурні рішення починають мати справжню вагу.

Чому гібридний пошук часто є кращим вибором

Пошук на основі значень та пошук за ключовими словами ефективні в різних ситуаціях

Візьмемо таке запитання:

"Що сказано в політиці HR-2026-17?"

Для такого типу пошуку пошук за ключовими словами працює дуже добре.

Тепер порівняймо його з таким запитанням:

"Чи може співробітник тимчасово працювати з іншої країни?"

У цьому випадку семантичний пошук явно має перевагу.

Замість того, щоб обирати один підхід замість іншого:

Keyword OR Vector

ви можете поєднати їх:

Keyword + Vector => Hybrid Ranking

Azure AI Search дозволяє виконувати гібридні запити, які поєднують повний текстовий пошук з векторним пошуком.

Це розкриває корисну закономірність:

results = search_client.search(
    search_text="remote work from another country",
    vector_queries=[vector_query],
    top=10
)

Конкретна налаштування ранжування буде відрізнятися залежно від сценарію використання, але основний урок полягає у наступному:

Не намагайтеся вирішувати кожну проблему з пошуком лише за допомогою ембеддингів.

Фільтрація метаданих є обов’язковою у корпоративних масштабах

India HR policies
US HR policies
UK HR policies
Finance policies
Engineering documentation

Потім користувач запитує:

"Який ліміт відшкодування витрат на подорож до Індії?"

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

Додавання фільтрів метаданих дозволяє звузити діапазон пошуку:

results = search_client.search(
    search_text=query,
    vector_queries=[vector_query],
    filter="country eq 'India'",
    top=5
)

Тепер процес пошуку поєднує два аспекти:

Semantic relevance + Structured filtering

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

Це не замінює те, що бази даних вже роблять ефективно.

Натомість вона поєднує неструктуроване семантичне пошукове забезпечення із знайомим підходом до структурованих даних.

Pinecone, Weaviate та Databricks Vector Search

Різні постачальники, одна й та сама основна концепція

Кілька платформ, з якими ви, ймовірно, стикнетеся:

Pinecone

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

Weaviate

База даних векторів з відкритим кодом, яка пропонує можливості пошуку векторів, фільтрації та низку додаткових функцій, орієнтованих на ШІ.

Databricks Vector Search

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

Інтерфейси та деталі роботи цих інструментів відрізняються.

Основна концепція залишається незмінною:

Не варто розглядати ці продукти як окремі технології, які потрібно опанувати окремо.

Почніть з розуміння самої моделі пошуку.

Як тільки ви це зробите, кожен продукт стане просто іншим варіантом реалізації.

Де векторні бази даних справді мають сенс

Векторна база даних — не найкращий інструмент для кожної ситуації в галузі ШІ

Серед перспективних сценаріїв:

Корпоративні системи RAG

Пошук відповідних політик, документації та технічних знань.

Семантичний пошук

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

Рекомендації

Показ продуктів, контенту чи документів з схожими характеристиками.

Системи підтримки

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

Пошук коду

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

Асистенти з інженерії даних

Завантаження відповідних документацій до пайплайнів, схем, посібників з їх виконання та історії інцидентів.

Проте не варто автоматично використовувати векторну базу даних для структурованих аналітичних запитів.

Якщо запит звучить так:

"Який був дохід у другому кварталі?"

а відповідь знаходиться у керованому сховищі даних, то SQL зазвичай є більш підходящим інструментом.

Structured question => SQL
Semantic question => Vector Search
Mixed question => SQL + Vector Search

Саме це розрізнення може допомогти уникнути багатьох архітектурних помилок.

Архітектура підприємства, яку я віддаю перевагу

Добре спроєктована система пошуку частіше нагадує пайплайн, ніж окремий інструмент.

Векторна база даних — це лише одна з складових такого пайплайну.

Це, мабуть, найбільше хибне уявлення, яке варто виправити.

Одна лише векторна база даних не робить AI-застосунок розумним.

Це забезпечує ефективний спосіб отримання інформації на основі семантичної близькості.

Справжня інтелектуальна цінність виникає з усього, що її оточує:

  • стратегія вбудовування даних, спосіб розділення контенту на частини, додані метадані, логіка пошуку, критерії класифікації, спосіб формування контексту, методи оцінки та сама модель

Ментальна модель, яку потрібно запам’ятати

Якщо ви інженер з обробки даних, який переходить у сферу розробки ШІ, не починайте з запам’ятовування назв продуктів.

Натомість зосередьтеся на цьому:

Embedding = numerical representation of meaning

Vector Search = find semantically similar representations

Vector Index = make nearest-neighbor search fast

Hybrid Search = semantic + lexical retrieval

Metadata Filter = apply structured constraints

Reranking = improve ordering of retrieved candidates

Як тільки ці шість концепцій стануть зрозумілими, інструменти на кшталт Azure AI Search, Pinecone, Weaviate та Databricks Vector Search більше не здаватимуться окремими загадками.

Це просто різні способи вирішення однакової основної проблеми:

Якщо у вас є запит, як знайти найкориснішу інформацію серед величезної кількості даних?

Саме тому векторні бази даних є настільки важливими.

Вони — це не просто ще один тип баз даних.

Вони стають одним із ключових елементів механізмів пошуку, які працюють у сучасних системах ШІ.

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

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

  • Керування Docling Pipelines через HTTP: від налаштування проекту до індексованих частин — Покрокове ознайомлення з REST API Docling Pipelines: запуск сервера, виявлення операторів, перевірка та запуск DAG для обробки даних, а також читання інформації про його виконання.
  • Налаштування індексів HNSW та масштабування векторного пошуку для продакшн-систем RAG — Дізнайтеся, як параметри M та ef у алгоритмі HNSW впливають на точність, затримку та використання пам’яті, як налаштувати їх у Chroma та коли слід масштабувати векторну базу даних вертикально або шляхом шардування.