← Обзор / ai-search / configuration / retrieval
Усиление релевантности
Усиление позволяет смещать результаты поиска в сторону документов с определёнными характеристиками метаданных. Например, вы можете продвигать более новые документы, поднимать страницы с более высоким приоритетом или понижать черновики. Усиление меняет порядок результатов, но не заменяет смысловую релевантность.
Как это работает
Усиление применяется после этапа первоначального поиска и до реранкинг (если включено):
- Поиск: AI Search получает до 50 чанков-кандидатов с помощью векторного поиска, поиска по ключевым словам или обоих способов.
- Усиление: Каждый кандидат заново оценивается с использованием полей метаданных, указанных в
boost_by. Усиление добавляется к исходной оценке поиска. - Реранкинг: Если реранкинг включён, усиленные результаты повторно ранжируются моделью реранкинга.
- Возврат: Лучшие
max_num_resultsвозвращаются.
Усиление может изменить порядок результатов внутри набора кандидатов, но не может выдвинуть на первый план чанк, который не был найден на этапе первоначального поиска.
Поддерживаемые поля
Вы можете усиливать результаты поиска по встроенному timestamp поле или по любому полю, определённому в вашей пользовательская схема метаданных.
| Тип поля | Поддерживаемые направления |
|---|---|
datetime |
asc, desc, exists, not_exists |
number |
asc, desc, exists, not_exists |
text |
exists, not_exists только |
boolean |
exists, not_exists только |
Направления
Направление определяет, как значение поля влияет на ранжирование каждого результата:
| Направление | Эффект |
|---|---|
desc |
Чем выше значение поля, тем выше оценка (например, у самых последних записей). |
asc |
Более низкие значения поля дают более высокую оценку (например, наименьшая стоимость). |
exists |
Документы, у которых есть это поле, получают более высокую оценку. |
not_exists |
Документы, у которых нет этого поля, получают более высокую оценку. |
Если вы не укажете direction, AI Search применяет значение по умолчанию в зависимости от типа поля:
| Тип поля | Направление по умолчанию |
|---|---|
number, datetime, timestamp |
asc |
text, boolean |
exists |
Использование asc или desc на text или boolean поле возвращает ошибку.
Конфигурация
Укажите boost_by как массив из не более чем трёх объектов при создании или обновлении экземпляра. Каждый объект должен ссылаться на уникальное поле.
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
field |
string | Да | Имя поля метаданных или timestamp. Должно соответствовать вашей схеме. Регистр не учитывается. |
direction |
string | Нет | Один из asc, desc, exists, not_exists. Значения по умолчанию зависят от типа. |
const instance = await env.AI_SEARCH.create({
id: "my-instance",
retrieval_options: {
boost_by: [
{ field: "timestamp", direction: "desc" },
{ field: "priority", direction: "desc" },
],
},
});Чтобы убрать усиление, задайте boost_by в пустой массив при обновлении инстанса.
Переопределения на уровне запроса
Можно переопределить boost_by для отдельных запросов с помощью ai_search_options.retrieval. Значения на уровне запроса полностью заменяют значение по умолчанию на уровне экземпляра.
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
boost_by: [{ field: "timestamp", direction: "desc" }],
},
},
});Чтобы отключить усиление для отдельного запроса, передайте пустой массив:
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
boost_by: [],
},
},
});Типичные паттерны
Вот несколько распространённых способов использования усиления релевантности:
| Шаблон | Конфигурация |
|---|---|
| Приоритизация новых документов | [{ "field": "timestamp", "direction": "desc" }] |
| Продвижение по пользовательскому приоритету | [{ "field": "priority", "direction": "desc" }] |
| Усиление более дешёвых вариантов | [{ "field": "cost", "direction": "asc" }] |
| Продвижение документов с автором | [{ "field": "author", "direction": "exists" }] |
| Скрытие черновиков | [{ "field": "draft", "direction": "not_exists" }] |
| Сочетание давности и приоритета | [{ "field": "timestamp", "direction": "desc" }, { "field": "priority", "direction": "desc" }] |
Ограничения
- Максимум 3 поля усиления на запрос.
- Имена полей должны соответствовать полю в вашей пользовательской схеме метаданных либо встроенному
timestampполе. textиbooleanполя поддерживают толькоexistsиnot_existsнаправления.- Поля усиления в пределах одного запроса должны быть уникальными.
- Усиление переупорядочивает набор кандидатов из первоначального поиска. Оно не может поднять документы, которые не были найдены.