Итак, чтобы научить модель отвечать на такие вопросы нужен датасет. Авторы описывают примерный процесс его создания, но в этот раз опускают множество деталей, не указывают промпты, и кода нет — поэтому воспроизвести на коленке не получится. Первым делом нужно получить граф. Узлы в графе представляют сущности, а рёбра — отношения между сущностями. Берут граф из Wikidata — базы знаний, принадлежащей Wikipedia и как раз хранящей миллионы связей. В эту базу можно писать запросы на SPARQL — и через фильтрацию по набору правил авторы получают «редкие» сущности. Что означает редкие — не уточняется: это может быть и популярность страницы / количество упоминаний / связей с другими сущностями. Затем для этих узлов формируют набор признаков. Написано, что делается это через поиск и переходы по ссылкам — видимо, промптят LLM на выделение атрибутов, а не переиспользуют данные из графа Wikidata; хотя одно другого не исключает. По этим признакам находятся другие узлы графа, то есть другие сущности. Например, находятся другие сериалы, другие вымышленные персонажи и так далее. Для них тоже формируют признаки. Затем случайным образом выбирают один из обработанных узлов и повторяют процесс: берут признак, делают поиск, добавляют узлы, формируют признаки. Получается маленький подграф. Чем больше итераций делаем — тем он больше, и тем больше связей / признаков получается. Ну а дальше из этого графа выбирают случайную подгруппу, и, наверное, дают промпт LLM проанализировать эти данные и сгенерировать вопрос с ответом — про это опять ничего не написано, но не думаю, что придумали что-то сложнее разобранного вчера подхода из WebDancer. Замена конкретных дат / мест на неконкретные расплывчатые делается легко. Таким образом получают датасет SailorFog-QA. Часть сгенерированных вопросов настолько сложна, что даже мощным моделям вроде o3 требуется до 40 вызовов инструментов (запросов на поиск + переходов по ссылке), чтобы прийти к ответу.