# Семантичний пошук (ембеддинги) SUMMARY: Концептуальний пошук спогадів із використанням векторних ембеддингів — пошук за змістом, а не лише за ключовими словами. Семантичний пошук (ембеддинги) Synapse підтримує семантичний пошук за допомогою векторних ембеддингів. На відміну від FTS5 (зіставлення ключових слів), семантичний пошук знаходить спогади за змістом — навіть якщо ключові слова не збігаються. Як це працює [CODE BLOCK] Що таке ембеддинги? Ембеддинги — це числові векторні представлення тексту. Текст зі схожим змістом має схожі вектори. Synapse генерує вектор (напр. 1536 вимірів) для вмісту кожного спогаду. Косинусна подібність Для пошуку семантично схожих спогадів Synapse обчислює косинусну подібність між вектором запиту та вектором кожного спогаду. Більша подібність = більша релевантність. Коли використовувати семантичний пошук Використовуйте семантичний пошук, коли: - Потрібні «спогади про X», де X описано інакше, ніж збережено - FTS5 не повертає результатів (немає збігу ключових слів) - Потрібне концептуальне групування (напр. усі спогади про «deployment», навіть якщо деякі кажуть «release») - Запит є питанням: «як ми обробляємо автентифікацію?» Використовуйте FTS5, коли: - Знаєте точні ключові слова - Потрібна булева логіка (AND, OR, NOT) - Потрібна затримка менше мілісекунди - Потрібен пошук фраз Кінцева точка GET /memory/semantic-search [CODE BLOCK] Відповідь: [CODE BLOCK] Приклади Пошук спогадів про розгортання [CODE BLOCK] Повертає спогади про «deployment», «release», «publishing», «rolling out» тощо. Пошук шаблонів автентифікації [CODE BLOCK] Повертає спогади про login, auth, JWT, session management, OAuth тощо. Пошук подібних спогадів [CODE BLOCK] Використовує семантичну подібність (через спільні теги ТА вектори ембеддингів). Генерування ембеддингів Коли генеруються ембеддинги? - При збереженні спогаду — якщо службу ембеддингів налаштовано, ембеддинг генерується синхронно - Пакетна генерація — генерує ембеддинги для спогадів, що їх не мають - Асинхронні оновлення — при оновленні вмісту ембеддинг регенерується Постачальники ембеддингів Synapse підтримує настроюваних постачальників ембеддингів: - OpenAI (, ) - Локальні моделі (через Ollama або подібні) - Користувацькі (реалізуйте інтерфейс ембеддингів) Налаштування через змінні середовища: [CODE BLOCK] Пакетна генерація Для mind-ів із багатьма спогадами без ембеддингів: [CODE BLOCK] Продуктивність | Операція | Затримка | |-----------|---------| | Генерування ембеддингу (OpenAI) | 100-200мс | | Семантичний пошук (1к спогадів) | 50-100мс | | Семантичний пошук (10к спогадів) | 200-500мс | | Пакетна генерація (100 спогадів) | 10-20с | > [!NOTE] > Семантичний пошук повільніший за FTS5 через обчислення векторів. Використовуйте > FTS5 для відомих ключових слів, семантичний — для концептуальних запитів. Обмеження Вартість ембеддингів Якщо використовуєте OpenAI, генерування ембеддингів коштує гроші ($0.02 за 1М токенів для text-embedding-3-small). Для 10 000 спогадів у середньому по 100 токенів кожен — це $0.02, що несуттєво. Холодний старт Спогади, збережені до налаштування ембеддингів, не матимуть ембеддингів. Запустіть для заповнення. Залежність від постачальника Якщо постачальник ембеддингів недоступний, семантичний пошук м'яко завершується помилкою (повертає порожні результати або помилку). FTS5 продовжує працювати. Коли ембеддинги недоступні Якщо службу ембеддингів не налаштовано: - повертає 503 Service Unavailable - продовжує працювати (просто ембеддинг не генерується) - Пошук FTS5 продовжує працювати Найкращі практики > [!TIP] > - Семантичний для концептуальних запитів — «як ми обробляємо X?» > - FTS5 для конкретних термінів — «docker swarm» > - Регулярно заповнюйте ембеддинги — > - Моніторте стан постачальника — від нього залежить семантичний пошук > - Комбінуйте з тегами — семантичний + фільтр тегів звужує результати Наступні кроки - Пошук FTS5 - Memory API - Архітектура