AACSearch / руководство
Графовый поиск (GraphRAG)
Извлеките сущности и утверждения из документов коллекции, сгруппируйте их в отчёты сообществ и отвечайте на широкие вопросы через глобальный и DRIFT-поиск.
Графовый поиск строит граф знаний поверх одной коллекции и отвечает на вопросы, которые не поддаются ключевому поиску: «какие темы проходят через весь каталог?», «как связаны эти сущности?». В нём живут три вида объектов:
- Сущности — названные объекты, извлечённые из ваших документов (товары, бренды, материалы, люди…), с типом, описанием, псевдонимами и документами, которые их упоминают. Связи соединяют сущности, встречающиеся вместе.
- Утверждения (claims) — структурированные фактические высказывания («ковариаты»), извлекаемые вместе с сущностями, каждое со статусом (confirmed, suspected, disputed, unverified), субъектом, объектом и исходным документом.
- Сообщества — группы связанных сущностей, для каждой модель пишет заголовок и сводку; они выстроены в иерархию уровней (уровень 0 — самый мелкий, каждый следующий — более крупное объединение).
Стоимость
Всё на этой странице генерируется вызовами моделей и оплачивается кредитами; операциям генерации нужен полный ключ. Экран графа в консоли управляет тем же API.
1. Извлеките сущности
generateGraphEntities читает text_fields у каждого из document_ids
(один вызов модели на документ) и вносит найденные сущности и связи. Сущность,
уже известная под точно таким же name, получает этот документ в
source_doc_ids вместо дубликата; новое имя дополнительно разрешается
семантически против существующих сущностей того же типа, поэтому
«iPhone 17» и «Apple iPhone 17» могут слиться в одну.
await client.graph.generateGraphEntities({
collectionName: "products",
body: {
document_ids: ["sku-4821", "sku-4822", "sku-4823"],
text_fields: ["title", "description"],
},
});Утверждения извлекаются тем же проходом. Читайте результаты через
listGraphEntities и listGraphClaims (обе — в разрезе коллекции); удаляйте
через deleteGraphEntity (вместе со связями сущности) и deleteGraphClaim
(сущность не затрагивает).
2. Сгруппируйте сущности в сообщества
generateGraphCommunities кластеризует сущности коллекции многоуровневым
алгоритмом Лувена (оптимизация модулярности) и просит модель написать короткий
заголовок и сводку для каждой группы минимум из min_size сущностей, на
каждом уровне до max_levels (0 — самый мелкий). Существующие отчёты
коллекции заменяются. Кластеризация останавливается сама, как только проход
ничего не объединил.
await client.graph.generateGraphCommunities({
collectionName: "products",
body: { min_size: 3, max_levels: 2 },
});listGraphCommunities показывает отчёты; deleteGraphCommunity удаляет
сводку, не трогая сущности, которые она объединяла.
3. Задавайте широкие вопросы
Глобальный поиск — globalSearchGraph — отвечает на широкий вопрос
map-reduce по отчётам сообществ: каждый отчёт уровня level (по умолчанию —
самый крупный из построенных: отчётов меньше, они шире и дешевле) получает
один параллельный вызов модели, который предлагает ключевые тезисы с оценкой
релевантности 0–100; берётся не более max_communities отчётов, выбираемых по
эмбеддинг-близости к вопросу, после чего лучшие тезисы сводятся в итоговый
ответ.
DRIFT-поиск — driftSearchGraph — копает на уровень глубже: подготовительный
шаг (глобальный поиск по отчётам уровня level) предлагает промежуточный ответ
и уточняющие вопросы, на которые отчёты сами не отвечают, и каждый из первых
max_follow_ups вопросов разбирается локальным поиском по наиболее релевантным
ему сущностям, после чего финальный reduce собирает ответ. DRIFT нужен, когда
вопрос требует и общей картины, и конкретики.
const answer = await client.graph.globalSearchGraph({
collectionName: "products",
body: { question: "Какой зимний инвентарь у нас есть и чем он различается?" },
});
const detailed = await client.graph.driftSearchGraph({
collectionName: "products",
body: { question: "Какие бренды шьют пуховки до 15 000 ₽?", max_follow_ups: 3 },
});Модель для любого шага можно переопределить полем model — извлечение,
суммаризацию, map, local и reduce.
Что выбрать
| Форма вопроса | Инструмент |
|---|---|
| «Документы, содержащие X» | ключевой поиск |
| «Документы по смыслу X» | семантический поиск |
| «Какие темы/связи есть во всей коллекции?» | глобальный поиск |
| «Объясни X, с деталями» | DRIFT-поиск |
| Чат со ссылками на документы в каждом ответе | ассистенты |
GraphRAG — сущности, сообщества и утверждения
Извлекайте сущности и связи из документов, группируйте их в отчёты сообществ и отвечайте на широкие или конкретные вопросы через Global Search и DRIFT.
Семантический, фото- и голосовой поиск
Поиск по смыслу на любом языке, поиск документа по фотографии, поиск голосом, встраивание текста и хранение изображений с подписанными ссылками.