Векторні бази
Векторні бази уможливлюють семантичний пошук - замість того щоб шукати за точним збігом слів, система розуміє значення тексту і знаходить схожий вміст.
Як це працює?
- Ембединг - кожен текст конвертується у числовий вектор (1536 вимірів) моделлю AI
- Зберігання - вектори записуються в базі разом з оригінальним текстом і метаданими
- Пошук - запитання користувача перетворюється на вектор і порівнюється із записаними векторами (cosine distance)
- Результати - система повертає найкраще дібрані записи
Застосування
- RAG (Retrieval-Augmented Generation) - збагачення відповідей AI контекстом з бази знань
- Семантичний пошук - знаходження схожих документів, статей, FAQ
- Чат із базою знань - ви ставите запитання, AI відповідає на основі ваших документів
Вимоги
Векторна база потребує конектора AI (OpenAI, Gemini або Claude) з підтримкою ембедингів для генерації векторів.
Записи
Кожен запис у векторній базі містить:
- Текстовий вміст
- Вектор ембедингу
- Метадані (наприклад, URL джерела)
- Зв’язок із джерелом (тип + ID, наприклад Kb::Entry #35)
- Номер chunk-а (коли текст ділився)
Поділ тексту на chunk-и
Довгі тексти автоматично діляться на менші фрагменти (chunk-и) перед генерацією ембедингу. Кожен chunk - це окремий запис у векторній базі, але всі chunk-и з одного джерела (наприклад, запису KB) пов’язані між собою.
Опція “Chunking увімкнено”
У налаштуваннях векторної бази можна ввімкнути опцію поділу на chunk-и. Це змінює поведінку:
| Налаштування | Розмір chunk-а | Ефект |
|---|---|---|
| Chunking вимкнено | макс. токенів моделі (наприклад, 8191 для OpenAI) | Текст ділиться лише коли перевищує ліміт моделі. Більші фрагменти, менше записів |
| Chunking увімкнено | ~500 токенів (~1-2 абзаци) | Текст завжди ділиться на малі фрагменти. Точніший пошук |
Коли вмикати chunking
- Увімкніть, коли джерело має довгі документи (статті, регламенти, документація) і вам залежить на точності пошуку - малий chunk краще підходить до конкретного запитання
- Залиште вимкненим, коли записи короткі (FAQ, окремі запитання/відповіді) - ділити короткі тексти немає сенсу
Як працює поділ
- Система розпізнає структуру тексту - заголовки markdown (
## Секція), абзаци, списки HTML - Нова секція (заголовок) - це природна межа chunk-а
- Кожен chunk отримує префікс із заголовком секції, до якої належить - завдяки цьому він не втрачає контексту
- Якщо текст у HTML - система конвертує його в structured text, зберігаючи заголовки та абзаци
- Токени рахуються точно через tiktoken (токенізатор OpenAI) - не вгадуються за символами
Ліміти за моделлю
Кожна модель ембедингу має інший ліміт токенів на один виклик. Система автоматично отримує ліміт з конектора:
| Модель | Макс. токенів | Ефект з chunking OFF | Ефект з chunking ON |
|---|---|---|---|
| OpenAI text-embedding-3-small | 8 191 | chunk-и до ~7 800 токенів | chunk-и до 500 токенів |
| Cohere embed-v4 (Bedrock) | 128 000 | практично без поділу | chunk-и до 500 токенів |
| Gemini embedding | 2 048 | chunk-и до ~1 900 токенів | chunk-и до 500 токенів |
При перемиканні конектора (наприклад, з OpenAI на Cohere) ліміти пристосовуються автоматично - не потрібно нічого змінювати в налаштуваннях бази.