GigaMemory: global memory for LLM

Долгосрочная память для языковой модели

champ imagechamp image

Входные данные

Для Конкурса был разработан датасет, предназначенный для оценки способности языковых моделей к долговременному запоминанию в условиях многосессионного взаимодействия. Он включает диалоги между пользователем и ассистентом.

Цель — проверить, насколько качественно модуль памяти запоминает и извлекает информацию из длинных диалогов. Для этого в сете предусмотрены вопросы по истории диалога. В среднем каждый диалог состоит из нескольких десятков сессий разной длины и содержит примерно 300 тысяч символов (или около 100 тысяч токенов).

Полный набор данных для оценки недоступен Участникам.

В репозитории соревнования выкладывается:

Описание датасета

Каждая запись представляет собой набор из:

  1. уникального идентификатора — id;
  2. вопроса — question;
  3. типа вопроса — question_type;
  4. ответа — ans;
  5. набора сессий — sessions;
  6. указаний на айди сессий с ответом — ans_session_ids.

Диалог

Каждый диалог состоит из списка сессий (обычно это несколько десятков сессий).

Сессия

Каждая сессия имеет свой уникальный идентификатор id и состоит из списка реплик пользователя user и системы assistant.

Реплика

Реплика имеет вид {"role": "роль", "content": "сообщение"}.

Пример из датасета

В каждой строке jsonl-файла содержится конструкция следующего вида:

{
    "id": "1",
    "question": "Как меня зовут?",
    "question_type": "fact_equal_session"
    "ans": "Иван",
    "sessions": [
        {
            "id": "session_id1",
            "messages": [
                {"role": "user", "content": "Привет, меня зовут Иван."},
                {"role": "assistant", "content": "Привет, приятно познакомиться, Иван!"}
            ]
        },
        {
            "id": "session_id2",
            "messages": [
                {"role": "user", "content": "У меня есть кот по имени Барсик."},
                {"role": "assistant", "content": "Как интересно! А сколько ему лет?"},
                {"role": "user", "content": "Ему 2."},
                {"role": "assistant", "content": "Ой, так он же совсем котёнок."}
            ]
        },
        {
            "id": "session_id3",
            "messages": [
                {"role": "user", "content": "Моя собака Лайка обожает мою девушку."},
                {"role": "assistant", "content": "Замечательно, когда твои питомцы любят близких тебе людей!"},
                {"role": "user", "content": "А вот мой кот, наоборот, её боится."},
                {"role": "assistant", "Коты в целом менее социальные животные, так что не стоит сильно переживать по этому поводу."}
            ]
        },
        {
            "id": "session_id4",
            "messages": [
                {"role": "user", "content": "Помнишь, я говорил про свою девушку?"},
                {"role": "assistant", "content": "Помню. Твоя собака очень её любит."},
                {"role": "user", "content": "Так вот, теперь она не моя девушка, а моя жена."},
                {"role": "assistant", "Ты женился? Поздравляю!"}
            ]
        }
    ],
    "ans_session_ids": ["session_id1"]
}

Вопросы

Вопросы бывают четырёх типов:

Тип вопросаОписаниеПример
fact_equal_sessionОтвет на вопрос содержится в одной конкретной сессии.Как меня зовут? (Ответ содержится в session_id1)
info_consolidationОтвет на вопрос содержится в нескольких сессиях. Чтобы найти ответ, нужно сагрегировать информацию из разных частей диалога.Какие домашние животные у меня есть? (Ответ на основе session_id2 и session_id3)
info_updatingДля этого типа характерно, что информация о пользователе меняется на протяжении диалога.Я женат? (Ответ на основе session_id3 и session_id4, в четвёртой сессии информация обновляется)
no_infoВопросы, на которые нет ответа в диалоге.Сколько мне лет? (Ответа в диалоге нет)

Специфика диалогов

  • Пользователь может писать как короткие диалоговые фразы, так и длинные запросы, например: «перескажи статью…» или «переведи текст…».
  • Не во всех сессиях присутствует информация о пользователе.
  • Состав сета: часть диалогов взята из логов общения пользователей с GigaChat (персональные данные были обезличены), а часть сгенерирована двумя моделями: одна выполняла роль юзера, вторая — роль ассистента. Некоторые диалоги генерировались зарубежными языковыми моделями, поэтому в них могут присутствовать явления и объекты, характерные для западного общества.
  • Вопросы задаются к любой сессии, а не только к первой или последней.

Выходные данные

После успешного inference у вас должен появиться файл submit.csv, который будет использоваться на этапе получения итоговой оценки решения. Множество уникальных идентификаторов во входных и выходных данных должно совпадать.

Выходной файл представляет собой таблицу с сигнатурой:

idansweranswer_time
1Тебя зовут Василий.1.3924849033355713
2У тебя двое детей.0.7695510387420654
  • id — уникальный идентификатор, который соответствует запросу во входных данных;
  • answer — ответ модели на вопрос по памяти из диалога;
  • answer_time — время, которое потребовалось на ответ на вопрос, в секундах.