Семантический поиск в лорбуках

Семантический поиск позволяет записи лорбука активироваться по смыслу, а не только по точным ключевым словам. Тогда запись с ключевым словом "меч" может сработать на сообщение, где сказано "клинок". Пользуйтесь им, когда в вашем тексте одна и та же мысль выражается многими разными словами.

Работает он на эмбеддингах. Эмбеддинг – это набор чисел, который передает смысл текста. Marinara хранит для каждой записи один эмбеддинг, его также называют вектором. Их построение называется векторизацией. Во время чата Marinara строит эмбеддинг ваших недавних сообщений и находит самые близкие записи.

Семантический поиск добавляет совпадения. Ключевые слова продолжают работать. Под лимитами совпадения по ключевым словам и по смыслу имеют одинаковый приоритет, поэтому, когда все не помещается, решает Order (порядок) записи.

Настройка семантического поиска

Сначала нужен источник эмбеддингов, затем переключатель Vectors (векторы), затем прогон векторизации.

Шаг 1: выберите источник эмбеддингов

Перед началом: нужен либо аккаунт, сервис которого предоставляет эмбеддинги, либо встроенная модель. Эмбеддинги предоставляет не каждый сервис. Если ваш не умеет, редактор предложит выбрать отдельный аккаунт для эмбеддингов.

Вариант 1: аккаунт с моделью эмбеддингов.

  1. Откройте панель Connections (подключения) и откройте аккаунт для редактирования.
  2. Откройте Advanced (дополнительно), затем More (еще) и найдите Semantic search (embeddings) (семантический поиск).
  3. Введите название модели эмбеддингов, например text-embedding-3-small. Если не знаете точного названия, посмотрите документацию своего сервиса или используйте встроенную модель.
  4. Сохраните аккаунт.
  5. Нажмите Test embedding (проверить эмбеддинг), чтобы проверить настройку. Marinara сначала сохраняет изменения, строит эмбеддинг короткого пробного текста и показывает размер вектора, например "1536 dimensions", или ошибку, которую вернул сервис.

Чтобы отправлять запросы эмбеддингов через ключ и адрес другого аккаунта, выберите этот аккаунт в поле Embedding provider (провайдер эмбеддингов). Значение по умолчанию – Same as this provider (как у этого провайдера). Если у выбранного аккаунта есть собственная модель эмбеддингов, Marinara использует ее. Иначе – название модели, введенное здесь.

Вариант 2: встроенная модель. Она работает на вашем компьютере без ключа API и в списке выбора называется Built-in model (встроенная модель). Она появляется после скачивания и скрыта в сборках Lite. См. Настройка встроенной модели.

Чтобы сделать один источник стандартным для всех аккаунтов, в которых он не задан, откройте Connections и выберите его в задаче Embeddings (эмбеддинги). Собственная настройка аккаунта по-прежнему важнее. Стандартное значение Marinara's own search (собственный поиск Marinara) оставляет встроенную модель в качестве запасного варианта.

Шаг 2: включите Vectors

В новых лорбуках семантический поиск выключен.

  1. Откройте лорбук и останьтесь на вкладке Overview (обзор).
  2. Включите Vectors. Когда он включен, записи можно найти и по смыслу. Когда выключен, ключевые слова по-прежнему работают, а лорбук не векторизуется.

Пока Vectors выключен, панель показывает: "Semantic search is disabled by the lorebook-level Vectors toggle."

Шаг 3: векторизуйте записи

  1. В панели Semantic search (embeddings) выберите источник в раскрывающемся списке. Первый вариант – No semantic search. Следом идет Built-in model, когда он доступен, затем ваши подходящие аккаунты.
  2. Нажмите Vectorize N missing, например "Vectorize 5 missing".
  3. Подождите. Плашка показывает ход работы, например "8/12 entries vectorized", и становится зеленой, когда готовы все записи.

Если не получилось: когда ни в одном аккаунте нет модели эмбеддингов, панель показывает "No connections with an embedding model configured. Set an Embedding Model on a connection first." Выполните шаг 1 и попробуйте снова.

Панель Semantic search (embeddings)

После включения Vectors панель появляется на вкладке Overview с такими настройками.

НастройкаЧто делаетПо умолчаниюДиапазон
Query Messages (сообщения для запроса)По скольким недавним сообщениям пользователя искать. 0 использует все доступные сообщения.10от 0 до 100
Score Threshold (порог сходства)Сходство, которое нужно записи для активации. Чем выше, тем строже.0.3от 0 до 1
Vector Limit (лимит векторов)Сколько записей этот лорбук может добавить по смыслу в один ответ максимум.10от 1 до 100

Include character context (учитывать контекст персонажа) ищет также по недавним ответам персонажа, отдельно от ваших сообщений, и оставляет более сильное совпадение. Он строит эмбеддинги дополнительного текста и по умолчанию выключен. Query Messages тогда действует и на ответы персонажа.

Низкий порог Score Threshold, например 0.2, пропускает больше записей, но растет риск совпадений не по теме. Высокий, например 0.5, оставляет только близкие по смыслу. Начните со значения по умолчанию.

Vector Limit считает только совпадения по смыслу. Обычные лимиты токенов по-прежнему действуют.

Повторная векторизация, удаление и пропуск

После смены модели эмбеддингов

Сохраненные векторы принадлежат той модели, которая их создала. После смены модели нажмите Re-vectorize N entries или Re-vectorize all, чтобы все записи использовали одну модель. Прогон "только по недостающим", который вернул вектор другого размера, отклоняется с сообщением "Embedding dimensions changed. Use Re-vectorize all entries instead of only missing entries before switching embedding models."

Один сбой происходит тихо. Во время чата Marinara строит эмбеддинг ваших сообщений моделью эмбеддингов активного аккаунта или моделью из его Embedding provider. Если в аккаунте не задано ни то ни другое, она берет источник задачи Embeddings или встроенную модель. Если размер вектора этой модели отличается от векторов ваших записей, Marinara пропускает такие записи при поиске по смыслу и не показывает ошибки. Векторизуйте тем же источником, который работает в чате, и векторизуйте заново после любой смены модели.

Семантический поиск и Knowledge Router

Когда лорбук векторизован, агент Knowledge Router тоже использует совпадения по смыслу, чтобы составить свой короткий список. Без векторов он опирается только на совпадения по ключевым словам. См. Источники знаний: агенты Knowledge Retrieval и Knowledge Router.

Смежные руководства