AACSearch / руководство
Поиск и релевантность
Предпросмотр, playground, правила поиска и мерчандайзинг, синонимы, семантический и графический поиск, интеллект запросов и NL-модели.
Настройки поиска хранятся на двух уровнях: документы для отдельной коллекции (правила поиска, синонимы, стоп-слова, стемминг, наборы синонимов) и значения по умолчанию для всего аккаунта (пресеты, алиасы, политики запросов). Экраны релевантности сгруппированы в боковой панели в разделе Search → Relevance.
Предпросмотр поиска
/dashboard/search — страница поиска в том виде, в каком её видит посетитель,
отрисованная в реальном времени поверх одной коллекции. Она работает в браузере
с краткоживущим предпросмотровым ключом, разрешающим только поиск, который
выпускает консоль (keys.preview), — и никогда не использует полный ключ организации.
- Виджеты — строка поиска с голосовым вводом, похожие запросы, правила поиска и панель Filters с иерархическим меню, списком уточнений, вводом диапазона, меню рейтинга, переключателем уточнения и сбросом уточнений. Кроме того — статистика, сортировка, число результатов на странице (12 / 24 / 48), текущие уточнения, статус поиска, результаты, состояние «ничего не найдено» и пагинация.
- Конфигурация из схемы —
query_byстроится из строковых полей; фасеты берутся из схемы (string → список с поиском, bool → переключатель, numeric → диапазон или меню рейтинга, если поле похоже на рейтинг,*.lvlN→ иерархия), не более восьми; сортировка предлагает релевантность, а также цену, если есть поле, похожее на цену. - Ответ ИИ — переключатель, который добавляет в запрос
conversation: trueи первую зарегистрированнуюconversation_model_idи выводит ответ прямо на странице. Он заблокирован только пока загружается список моделей; если модели нет, его всё равно можно включить, и тогда он показывает ссылку на Conversation models. - Расширения ответа —
redirectиз сработавшего правила показывается как ссылка (переход не выполняется),query_rewriteвыводится рядом с состоянием «ничего не найдено», аsuggestionsпревращаются в похожие запросы и чипы уточнений. - Детали результата — при открытии результата исходный документ показывается в выдвижной панели с выделенными терминами запроса.
- Встраивание — диалог в шапке выдаёт сниппет виджета для этой коллекции.
Коллекция выбирается в шапке и сохраняется в ?collection=, поэтому предпросмотр
поиска можно передать ссылкой. Если коллекций ещё нет, пустое состояние предлагает
Create a collection и Guided setup.
Search playground
/dashboard/playground/search — «обозреватель фрагментов» с исходными результатами:
экран, к которому стоит обращаться, когда результат выглядит неправильно. Он работает
на том же краткоживущем предпросмотровом ключе только для поиска, что и предпросмотр;
без ключа он показывает пустое состояние «No preview key» со ссылкой на Guided setup.
Параметр ?q= задаёт начальный запрос.
- Выберите коллекцию, затем задайте
query_byфлажками или списком через запятую в текстовом поле (приоритет у текстового поля). Поля, указанные раньше, весят больше, а экран показывает итоговый список. - Задайте размер страницы (10 / 20 / 50 / 100) и при необходимости ограничьте поиск
выбранным набором документов: селектор загружает первые 100 с
q=*, поддерживает поиск и множественный выбор, сообщает «First N of M documents» и превращает выбор вfilter_by=id:=[…]; Clear document limit снимает ограничение. - Rerank включает
rerank=trueс моделью (bge-reranker-basecross-encoder илиllm) и поясняет, что переранжированные результаты содержатrerank_scoreи что каждый вызов расходует кредиты. - Debug (включён по умолчанию) запрашивает
debug=true, что возвращает_traceи_explainдля каждого результата. Страница выводит эквивалентный вызовGET …/documents/search, поэтому эксперимент в playground можно воспроизвести из кода.
При включённой отладке свёрнутую панель trace можно развернуть: в ней видны бейджи
статуса индекса, времени индексации, общего времени, фильтра исключения, сработавших
поднятий, закреплений, отсечений по разнообразию, переписывания и fallback, а также
тайминги этапов. Результаты показываются в том виде, в каком хранятся, — у каждого бейджи
оценки, rerank_score и векторного расстояния, а также переключатели
Explain / View JSON для исходного объекта движка.
Чат-playground
/dashboard/playground — чат с ассистентом в реальном времени. Доступ к нему
определяется функцией тарифа voice, а не assistants, поэтому на тарифе без voice
экран показывает пояснение о необходимости перейти на другой тариф.
- В шапке выбирается ассистент (только те id, которые действительно есть у организации;
глубокая ссылка
?assistant=учитывается, аNEXT_PUBLIC_NOVA_ASSISTANT_IDслужит запасным вариантом, только если он есть в списке). Селектор заблокирован во время загрузки или если ассистентов нет. - New chat очищает текущие источники и начинает новый разговор.
- Chat parameters переопределяет параметры одной реплики:
filter_by, максимальное число источников (1–40, по умолчанию — собственная настройка ассистента) иuser_id, с кнопками Reset и Save. - Диалог API показывает примеры на cURL, TypeScript и Python для
POST /assistants/{id}/chat/completions/stream, поясняет, что ключ с областью доступа (scope) search может вызывать его из браузера, если также передаётX-NOVA-SESSION-ID, и содержит ссылку на создание ключа. - Макет состоит из истории разговоров, стенограммы и колонки Assistant / Sources, где показаны коллекции ассистента, модель и активные переопределения; процитированный источник открывает свой документ в выдвижной панели. На мобильных устройствах история и колонка ассистента становятся шторками.
Если ассистента нет, экран ссылается на Assistants; при ошибке загрузки показывается встроенное сообщение об ошибке. Первая завершённая реплика отмечает шаг playground в быстром старте.
Ranking Studio
/dashboard/ranking (открывайте /dashboard/ranking напрямую — его нет в
боковой панели) сводит воедино четыре места, где формируется ранжирование, и показывает,
используется ли каждое из них: правила поиска, пресеты, политики запросов и
персонализация. Вверху — счётчик «N of 4 ranking sources in use» и кнопка Refresh,
а четыре карточки загружаются независимо: если один источник недоступен, его карточка
показывает бейдж Unavailable и ошибку, а остальные всё равно отрисовываются. Каждая
карточка имеет статус Active или Not configured и свои счётчики — коллекции с
правилами, поднятиями и закреплениями; число пресетов; политики тенанта в сравнении
со встроенной лестницей; а также включена ли персонализация, настроена ли она и
применяется ли.
Экран указывает порядок применения — политики запросов (каналы, исправление,
спасение запроса) → пресеты (query_by, фильтры, сортировка) → правила поиска (поднятие,
закрепление, спонсорство, диверсификация) → персонализация — и ссылается на Quality lab.
Правила поиска
/dashboard/search-rules содержит по одному документу правил на коллекцию: fallback при
нулевом результате, а также число поднятий, закреплений, спонсорских размещений, баннеров,
редиректов, записей разнообразия и переранжирования. Для списка нужна функция тарифа
search_rules; он предлагает кнопку New, которая запрашивает коллекцию (выберите
существующую или введите новое имя) и открывает её редактор; ?collection=… ведёт прямо туда.
Как и другие общие экраны-списки, он содержит Refresh, число строк, поле фильтра, когда строк
шесть или больше, и состояние превышения квоты. Строку можно удалить с подтверждением,
после чего коллекция возвращается к правилам по умолчанию.
/dashboard/search-rules/{collection} — редактор мерчандайзинга. При сохранении
выполняется проверка через control plane (rules.lint), а предупреждения показываются над
кнопкой сохранения — предупреждения никогда не блокируют сохранение. Разделы:
| Раздел | Что настраивает |
|---|---|
| Defaults | Исключающий filter_by, объединяемый через AND с каждым поиском, fallback при нулевом результате (none, broaden_query для отбрасывания фильтров вызывающей стороны или модель рекомендаций), а также переопределяют ли поднятия запрошенную сортировку. |
| Boosts | filter_by, вес (отрицательный понижает) и имя. |
| Pins | id документа, позиция (с 0) и необязательный запрос с сопоставлением exact / prefix / contains. |
| Sponsored | id, позиция, метка (по умолчанию «Sponsored»), необязательные запрос и сопоставление, а также filter_by. Результат помечается _sponsored. Если не задан ни один триггер, размещение применяется к каждому поиску. |
| Banners | id, приоритет, необязательные запрос и сопоставление, filter_contains и обязательный JSON-объект content (например, {heading, image_url, link}). |
| Diversity | Ограничения по полю (field, max, min, from), подавление почти дубликатов по текстовым полям с порогом Жаккара (по умолчанию 0.9) и MMR (lambda по умолчанию 0.7, k, vector_field или текстовый fallback). Применяется в порядке почти дубликаты → ограничения → MMR → нижние пороги. |
| Rerank | Переключатель, включённый по умолчанию (в выключенном состоянии по-прежнему можно передать rerank=true в отдельном запросе), модель, top_k (по умолчанию 20), timeout_ms (по умолчанию 400) и поля фрагментов. Переранжирование тарифицируется в кредитах. |
| Redirects & suggestions | Редиректы запрос → URL (ответ содержит redirect.url), подсказки запросов и поля фасетных подсказок, которые строят уточнения вида «phone Apple». |
| Schedule & audience | Метки времени начала и окончания, устройство, язык и страна. Пустое значение применяется к каждому запросу. |
Для fallback при нулевом результате на модель рекомендаций также нужен
fallback_model_id.
Администраторам доступны ещё две панели:
- Preview — принимает запрос, указывает, что ничего не сохраняется и не тарифицируется, и выводит для каждой стороны сводку «fired» о том, что сделало бы правило-кандидат (исключение, поднятия, редирект с его URL, закрепления, спонсорские размещения, баннеры, подсказки, разнообразие, fallback), рядом с действующим правилом, с diff.
- Versions — история с бейджем latest, бейджами источника (console, API, rollback, suggestion) и удаления, колонкой примечаний, относительным временем с точной меткой времени при наведении и кнопкой View для каждой версии, которая показывает этот снимок и его diff с текущим правилом. Roll back недоступна для самой новой версии и записывает новую версию, а не переписывает историю.
Синонимы
/dashboard/synonyms управляет наборами синонимов. Каждая строка поля Groups —
одно правило:
айфон, iphone, apple phone # every term finds the others (multi-way)
кроссы => кроссовки, sneakers # one-way rewrite
# comments are skippedСтрока без стрелки, содержащая меньше двух терминов, отклоняется с указанием номера строки. Создание уже существующего набора заменяет его — отдельного экрана редактирования нет. Удаление набора сразу прекращает расширение запросов его группами; поиск продолжает работать. Список показывает число групп в каждом наборе и колонку For example с первыми двумя группами в виде бейджей (остальные — во всплывающей подсказке, до двенадцати), а JSON строки можно просмотреть. Импорта из CSV нет.
Подсказки синонимов
/dashboard/synonym-suggestions анализирует запросы с нулевым результатом и популярные
запросы и предлагает синонимы для каждой коллекции. Фильтр статуса переключает между
ожидающими (по умолчанию), принятыми, отклонёнными и всеми. Generate читает события
за последние 30 дней (или заданный запрос) и сообщает, сколько запросов проверено, сколько
подсказок создано и сколько пропущено. Ожидающие подсказки можно
принять в набор синонимов или отклонить, а любую подсказку можно
удалить; для принятых строк показывается набор, в который они вошли.
Таблица содержит запрос, предложенный термин (и кандидата, через которого он
получен), тип, статус, как часто запрос находил результаты и встречался, а также примеры
заголовков. Экран Search issues ссылается сюда с ?collection= и ?query= — в
этом случае кнопка генерации называется Generate for query.
Курирование
/dashboard/curation хранит наборы правил, которые закрепляют, скрывают, переписывают или
пересортировывают результаты для заданных запросов. Нужна функция тарифа curation. Список
показывает описание каждого набора, число правил и колонку Reacts to — первые три
триггера, а во всплывающей подсказке до десяти пар trigger → effect, — а также поле
фильтра и просмотр JSON для каждой строки. Для создания набора нужны только имя и описание;
после удаления набора (с подтверждением) охваченные им запросы возвращаются к
обычной релевантности.
Редактор правил работает с карточками и при сохранении заменяет весь набор. Каждое
правило срабатывает по запросу (any / exact / contains) или по filter_by и
может:
- включать (закреплять) документы на позиции,
- исключать (скрывать) документы,
- заменять запрос,
- переопределять
sort_by, - и останавливать обработку последующих правил.
Пустые правила отбрасываются, а ключи, которые форма не редактирует (теги, метаданные,
временные окна), сохраняются при повторном сохранении. Правила сопоставляются в порядке
набора. В запросе curation_tags ограничивает курирование правилами с этими тегами, а
enable_curations включает или выключает курирование для этого поиска.
Стоп-слова и стемминг
/dashboard/stopwords управляет наборами стоп-слов — id набора, метка локали и
слова (через запятую или с новой строки). Локаль — только метка и не
влияет на сопоставление. Удаление набора снова делает его слова доступными для поиска и
прекращает применение любого правила поиска, которое на него ссылалось.
/dashboard/stemming импортирует пары слово → корень, чтобы поиск находил другие формы.
Парсер принимает →, ->, =>, =, табуляцию, запятую, точку с запятой, два и более
пробела, одиночный пробел, простой JSON-объект или JSON-массив {word, root},
и пропускает строки комментариев #; ошибочная строка сообщается с номером, а
повторяющиеся слова отклоняются. Словарь
заменяется повторным импортом с тем же id — API не позволяет его удалить.
Список загружает соответствия только для первых 25 словарей; у последующих строк
число и пример не отображаются, пока вы их не откроете. Словарь можно просматривать (первые
500 строк с фильтром по слову или корню и надписью «Showing the first 500 of N — download
the JSONL for the rest») и скачать в формате JSONL.
Пресеты и алиасы
/dashboard/presets хранит именованные наборы параметров поиска, которые запрос
применяет через preset=<id>; собственные параметры запроса имеют приоритет. В списке есть
фильтр по имени с задержкой ввода (нажмите / для фокуса, Esc для очистки, со счётчиком
«N of M»), бейдж Kind, отличающий одиночный пресет search от
массива multi-search, и просмотр JSON сохранённого значения для каждой строки. Редактор
в первую очередь основан на форме (query_by, sort_by, filter_by, per_page — последнее
должно быть положительным целым числом), а для всего остального есть режим JSON, включая
массивы multi-search. Ключи, которые форма не отображает, сохраняются. При сохранении
выполняется PUT presets/{id}, поэтому создание с существующим id заменяет пресет; id нельзя
переименовать. Временная строка «Saved. The preset is live.» подтверждает запись,
при ошибках отображается карточка Retry, а удаление пресета приводит к немедленному
сбою каждого запроса, который его передаёт.
/dashboard/aliases направляет стабильное виртуальное имя коллекции на реальную
коллекцию — это схема переиндексации с переключением указателя. Создание уже существующего
алиаса перенаправляет его — именно так переиндексация вводится в работу. Форма предлагает
коллекции организации и отклоняет несуществующее имя. Колонка
Documents показывает число документов в целевой коллекции или предупреждающий бейдж
«missing», если целевой коллекции больше нет, а цель ссылается на экран своей
коллекции. Если целевая коллекция не существует, экран предупреждает, что поиск через
алиас завершается ошибкой 404. Удаление алиаса никогда не затрагивает целевую коллекцию —
об этом сказано в подтверждении, — но поиск через алиас сразу
перестаёт работать.
Семантический поиск и поиск по изображениям
/dashboard/vector-search («Semantic & image») требует функции тарифа
semantic_search. На нём две вкладки:
- По смыслу — введите предложение на любом языке и выполните поиск по векторному полю коллекции.
- По изображению — перетащите файл (PNG / JPEG / WebP / GIF) или укажите публичный URL изображения. Изображение встраивается как медиа (экран опрашивает медиазапись, пока работает модель компьютерного зрения, с таймаутом 45 секунд), а затем используется для поиска.
Обе вкладки используют общий селектор векторного поля, число результатов k (1–50, по
умолчанию 12), ползунок минимального сходства (передаётся как порог расстояния) и
необязательное выражение Filter (filter_by), применяемое к обоим видам поиска.
Коллекция и вкладка сохраняются в ?collection= и ?tab=meaning|image,
поэтому векторный поиск можно передать ссылкой, а в шапке есть кнопка Keyword
preview, открывающая ту же коллекцию в предпросмотре поиска. Варианты коллекций
показывают число документов и отмечают коллекции с векторами.
Результаты показывают сходство как 1 − cosine distance, исходное расстояние — во
всплывающей подсказке, а также found и search_time_ms; у каждого результата есть
кнопка Open, которая переходит в обозреватель документов с фильтром по этому id.
Векторные поля удаляются из возвращаемых документов. При поиске по изображению панель
«What the model sees» показывает подпись, бейдж статуса эмбеддинга (pending / ready / failed),
id медиа, размер и разрешение. Пустое состояние поясняет, что коллекции
нужно поле float[] (собственная модель эмбеддингов платформы выдаёт 1024
измерения), и ссылается на редактор схемы.
Интеллект запросов
/dashboard/query-intelligence показывает, как понимается запрос до того, как
движок его выполнит. Селектор коллекции вверху задаёт область для всех вкладок и сохраняется
в ?collection=; если активной организации нет или нет коллекций,
страница показывает пустое состояние со ссылкой на создание коллекции. На ней четыре вкладки:
- Debugger — входные данные: запрос, переопределение политики (автоподбор или
именованная встроенная политика либо политика тенанта), имитируемая поверхность (
search,autocompleteилиpresearch), необязательный JSON параметров движка и переключатель «Run search». На выходе — весь конвейер: нормализованный текст, интент, отношение, стратегия, политика, письменность, уверенность, тип товара, бренды, флаг «только идентификатор» и лексический/семантический каналы; защищённые токены; сущности; ограничения с их жёсткостью (hard / soft / negative) и сгенерированнымfilter_by; токены и сегменты с приоритетом отбрасывания; оценённые гипотезы и исправления с выбранным исправлением, его причиной и альтернативами; а также план выполнения. При включённом «Run search» выполняется реальный поиск, и рядом показываются его тайминги, чипы уточнений, понимание запроса и трассировка. - Policies — встроенная лестница (только чтение) и политики тенанта. У политики
есть имя, необязательная коллекция (пусто = все), приоритет (побеждает больший,
0–100000), флаг включения и JSON-блоки
matchиplan; строка также показывает версию и время последнего обновления. Встроенные имена нельзя использовать повторно. При удалении политики применяется следующая по приоритету. - Entities — канонические сущности с алиасами и типом, с поиском и
фильтрацией. Каждая строка показывает каноническую форму, тип, алиасы, покрытие,
коллекцию, включена ли сущность и откуда она взялась (
manualили начальное заполнениеfacet:<field>), с редактированием и удалением для каждой строки. Алиасы автоматически дополняются вариантами транслитерации и раскладки клавиатуры. Bootstrap from facet создаёт сущности из строкового фасетного поля (до 2000 значений). - Graph & stats — показы подсказок, списки, выборы, клики по чипам, рёбра графа, кандидаты и число сущностей за окно 1 / 7 / 30 / 90 дней; перестроение графа и подсказок; и поиск соседей с переходами, успехами и оценкой. Граф перестраивается каждую ночь на основе последовательностей сессий.
Запись (политики, сущности, начальное заполнение, перестроение) доступна только владельцу и администраторам.
Поиск на естественном языке
/dashboard/nl-search управляет моделями NL-поиска; доступ определяется функцией тарифа
nl_search. У каждой модели есть id, имя provider/model (например,
openai/gpt-4o-mini) и необязательный API-ключ — платформа хранит ключ и
никогда его не возвращает; если оставить поле пустым, используются учётные данные платформы.
Действие в строке ведёт в search playground с указанием этой модели
(nl_query=true&nl_model_id=…); сейчас playground читает только q, поэтому
само переписывание проверяется отправкой nl_query и nl_model_id (а также
nl_query_debug для исходного ответа модели) в API поиска, ответ которого
содержит parsed_nl_query.
Каждое переписывание — вызов модели, оплачиваемый кредитами, и ничто здесь не меняет обычный поиск по ключевым словам. После удаления модели запросы, которые на неё ссылаются, используют запрос в том виде, в каком он был введён.