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

Семантичний пошук у типі збігу блоків — це ШІ, який навчений витягувати контекст із умов, вбудованих у повідомлення клієнта.

Блоки мають пріоритет над AI-асистентом, тож ви можете використати блок з умовою та вибором збігу «порівняння за змістом», якщо хочете надіслати клієнту чітко перевірену й задану відповідь.

## Як це працює

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

**Основний принцип**

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

**Робочий процес обробки**

1. ШІ витягує семантичне значення з повідомлення клієнта.
2. Система порівнює це значення із семантичними фразами, визначеними в умовах тригера.
3. Якщо виникає **семантичний збіг** знайдено, чат-бот обробляє відповідну подію всередині блоку (наприклад, надсилає конкретне повідомлення).

**Приклад**

В умові ми визначаємо семантичну фразу (наприклад, *«закриття рахунків та акти»*). Якщо ШІ ідентифікує цей зміст у повідомленні користувача, він запускає пов’язаний блок події.

<div data-with-frame="true"><figure><img src="/files/6a3a9c488b913de556a391b982776ea09869d95b" alt=""><figcaption></figcaption></figure></div>

Налаштування блоку виглядає так:

<div data-with-frame="true"><figure><img src="/files/a295d2bebb919f1ca9d026a8c90a8c26bd599570" alt="" width="563"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/042b6ccd7120b096ea28c8cbc4c5143e1eadb1c5" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/d00349ab2ef2d34c83d02d1493bdf757c8adf378" alt="" width="563"><figcaption></figcaption></figure></div>

Щоразу, коли бот обробляє повідомлення клієнта, він коректно виконує потрібну подію в блоці.

## Як писати тригер

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

<div data-with-frame="true"><figure><img src="/files/318b01ab9b75780f9467ad02ef81fb72a0a91c9c" alt="" width="563"><figcaption></figcaption></figure></div>

Створення чітких, лаконічних і точних умов є критично важливим для **продуктивності, надійності та користувацького досвіду**. Ось чому це важливо:

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

Уникайте надто складних слів, неоднозначних термінів і довгих багатослівних фраз у ваших умовах.

**Приклад ефективної умови тригера**

<div data-with-frame="true"><figure><img src="/files/27e6137c8e4ec14ce3fcddfdc410bbf8a6faa1dc" alt="" width="563"><figcaption></figcaption></figure></div>

Приклад <mark style="color:red;">**НЕкоректної умови тригера**</mark>:

<div data-with-frame="true"><figure><img src="/files/8a124c1da7d3ea9192bb0ad7c6e841c3154bf884" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="danger" %}
**Уникайте умов тригера, що складаються з одного слова**

Хоча умови мають бути лаконічними, вони також повинні бути **семантично змістовними**. Одне слово (наприклад, «рахунок-фактура») часто не має достатнього контексту для точного семантичного зіставлення.

**Використовуйте описові фрази**

Замість окремих слів використовуйте короткі описові фрази, що передають намір.

**Приклад:**

❌ `«рахунок-фактура»`\
✅ `«щомісячна оплата рахунку-фактури»`

Це надає моделі ШІ чіткіший контекст для точного семантичного порівняння.

**Ключовий принцип**

ШІ порівнює *значення* умов, а не лише ключові слова. Добре сформульована фраза встановлює необхідні семантичні критерії для надійного збігу.
{% endhint %}

### **Приклад**

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

<div data-with-frame="true"><figure><img src="/files/f5e17f9f16ac318562ee6d0ec3d5cdc5b18b83aa" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/1fb518c487b2a814a2f5468810344b8d4aac1910" alt="" width="563"><figcaption></figcaption></figure></div>

Якщо ви визначите умову тригера лише за допомогою **одного слова** (як у прикладі нижче), ШІ може **не виявити достатнього контексту** і не запустить відповідь, що призведе до мовчання.

<div data-with-frame="true"><figure><img src="/files/d244260d97ff0c0ce2888f0a947fb567d301be9b" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/a25181d598c915ed8076ae7516fd25be543d5489" alt="" width="563"><figcaption></figcaption></figure></div>

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

{% hint style="warning" %}

#### Будьте обережні

Також, якщо тригер для семантичного пошуку є некоректним (занадто коротким або неоднозначним), ШІ може реагувати на такі тригери не в той час або не в тому місці.
{% endhint %}

## **Приклад чат-бота AI Smart Station**

{% hint style="success" %}
У цьому прикладі ми наочно продемонструємо пріоритет блоків над AI-асистентами та пошук за контекстом у повідомленні клієнта з вибором типу Semantic search.
{% endhint %}

У конструкторі чат-бота ми створюємо два блоки «Start», у кожному з яких обираємо тип «Semantic search» і повідомлення «Увімкнути/вимкнути світло»:

1. Блок 1 «Увімкнути світло»

<div data-with-frame="true"><figure><img src="/files/4929666832f024424896cd3e9fc91638ce00cb3a" alt="" width="563"><figcaption></figcaption></figure></div>

2. Блок 2 «Вимкнути світло»

<div data-with-frame="true"><figure><img src="/files/96f3a2c7ebbb9f9678da9e0f980035404f1f71a7" alt="" width="563"><figcaption></figcaption></figure></div>

Щоб зрозуміти, що спрацював саме блок, а не AI-асистент, ми додамо додатковий рядок у повідомлення кожного блоку.

Далі переходимо до AI-асистента.

Створюємо бота з роллю «Універсальний AI-асистент».

<div data-with-frame="true"><figure><img src="/files/5c843db2d3eb912b674bb9e9a297349b082b65b9" alt="" width="563"><figcaption></figcaption></figure></div>

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

Усі налаштування завершено. Перейдемо до тестування.

1. Почніть чат зі Smart Station, щоб розпочати.

<div data-with-frame="true"><figure><img src="/files/787437068d8173337b9da1583700cdde9285bb10" alt="" width="375"><figcaption></figcaption></figure></div>

Оскільки ми жодним чином не обмежили станцію, вона може говорити на цілком абстрактні теми.

2. Тепер у контексті нашого повідомлення ми записуємо ключовий зміст — увімкнути або вимкнути світло:

<div data-with-frame="true"><figure><img src="/files/f4d77b7037f239ba95d38db11ec699924ad25e9c" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/79a5cc6a280bfd39ee76834411e5d1bb75009a45" alt="" width="375"><figcaption></figcaption></figure></div>

Бот спрацював правильно.

Отже, у ті моменти, коли тригер із блоку не виконується, працює асистент.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/chatbot/ai/search.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
