INTEGRITY Документация

Усиление релевантности

Усиление позволяет смещать результаты поиска в сторону документов с определёнными характеристиками метаданных. Например, вы можете продвигать более новые документы, поднимать страницы с более высоким приоритетом или понижать черновики. Усиление меняет порядок результатов, но не заменяет смысловую релевантность.

Как это работает

Усиление применяется после этапа первоначального поиска и до реранкинг (если включено):

  1. Поиск: AI Search получает до 50 чанков-кандидатов с помощью векторного поиска, поиска по ключевым словам или обоих способов.
  2. Усиление: Каждый кандидат заново оценивается с использованием полей метаданных, указанных в boost_by. Усиление добавляется к исходной оценке поиска.
  3. Реранкинг: Если реранкинг включён, усиленные результаты повторно ранжируются моделью реранкинга.
  4. Возврат: Лучшие 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" }]

Ограничения