В этой статье мы показываем наш первый публичный релиз FractalGPT QA агента — какие вопросы можно задавать по загруженным вами документам и насколько хорошо и полно система вам ответит.
В частности, с помощью алгоритма Fractal answer synthesis и интерпретируемого ИИ нам удается существенно снизить % галлюцинаций и стабильно сильно повысить точность и полноту ответов.
Если читать теорию не охота — можно сразу промотать на кейсы демо.
Отвечаем по документам
FractalGPT QA агент — это вопросно-ответная система с искусственным интеллектом, в которую вы можете загружать свои документы или базу знаний компании, задавать по ним вопросы и получать точные и полные ответы.
Попробовать FractalGPT QA агент
💎Фичи
1. Обрабатывает документы ЛЮБОЙ длины.
Вы можете загружать файлы размером 2 или 50мб — это намного больше типичного контекста 4k и даже 100k. Качество ответов не будет страдать.
2. Почти без галлюцинаций.
Наш алгоритм Fractal answer synthesis доработан и теперь строит еще более сложную внутреннюю структуру документа на своем языке, что обеспечивает высокий уровень фактологии.
3. Собственный векторный поиск.
Отлично работает для сложных текстов(юридических, документации), ищет термины, определения, наименования, понимает жаргон.
4. Принимает документы в форматах: pdf, txt, docx.
5. Имеет мультиагентную архитектуру.
Агенты договариваются между собой и в итоге система автоматически добывает знания, обеспечивающие полноту из тех документов, которые наиболее релевантны вашему вопросу. Такая архитектура имеет существенные преимущества перед простым поиском или внедрением модели ранжирования — она скейлится на новые домены без потери качества.
Одна из основных проблем при использовании больших языковых моделей это практически неустранимые галлюцинации, возникающие при ответах на вопросы по загруженным документам. Задача «поговорить со своими документами» возникает очень часто, и как правило, она решается с помощью промптинга — вы загружаете вашу статью, договор или другой документ и пишете промпт «Ответь на вопрос по тексту:». Этот способ работает, но у него есть существенные недостатки: размер документа ограничен 1-3 страницами, рандомное возникновение галлюцинаций — неправильных ответов, выглядящих правдоподобно.
FractalGPT QA агент уже доступен всем: загрузить свой файл и задать вопрос.
Недостатки Retrieval-Augmented Generation
Retrieval-augmented generation дословно переводится как «Генерация с расширенным извлечением» и по сути она частично решает главную проблему языковых моделей — использование для ответов устаревших данных из «весов», что приводит к неправильным ответам.
Прежде, чем отметить недостатки и слабые места вопросно-ответных систем нужно сначала понять общую схему того, как подход работает. Схематично, типичное решение выглядит так:
- Нарезать документ на сниппеты, каждый не более чем контекст модели минус промпт токенов
- Создать индекс из сниппетов в векторной базе данных (Pinecone, chromadb)
- С помощью эмбеддингов OpenAi получить вектора вопроса пользователя
- Найти в векторной базе сниппеты, наиболее близкие к вектору вопроса
- С помощью LLM (ChatGPT, GPT-4, Gigachat, YandexGPT, FractalGPT LLM, Mistral, Zephyr) сгенерировать конечный ответ на вопрос, используя текст сниппетов
В интернете довольно много туториалов и схемы обычно выглядят так:
Давайте посмотрим что не так с этой схемой:
- Размер контекста должен быть не более 4096 токенов (порядка 1000 слов на русском языке, 1-2 страницы А4). Есть модели с большим контекстом: 16k и даже Claude 100k, но этого тоже часто не хватает. В итоге, если вам нужно проанализировать реферат, книгу, законы, конструкторскую документацию, регламенты вашей компании и построить на базе этих документов вопросно-ответную систему — этого сделать на текущих LLM не получится, контекст этих документов составляет сотни страниц.
- Векторные базы ищут плохо. Наши опыты показывают, что если ваш текст изобилует терминами, является техническим, содержит аббревиатуры(маркировки, номера), названия деталей, статей законов, разделов и тп — то эмбеддинги будут ошибаться и не находить участки с правильным ответом.
- LLM галлюцинируют в рандомных местах.
Как говаривал Воланд — плохо не то, что LLM галлюцинируют, а то, что они делают это внезапно. - В нашей статье на Хабре об алгоритме Fractal answer synthesis мы разобрали основные причины галлюцинаций — ответы разбросаны по сниппетам, извлеченным из текста, связи между ними нет, сами сниппеты могут нарушать логику и очередность событий (например, если текст с хронологией) из-за разрывов при сплите. А если сниппеты недостаточно хорошо извлечены на 2м шаге — практически точно в ответе будет правдоподобная галлюцинация.
- Промт инжиниринг нестабилен.
Мы также проверяли что будет, если с помощью промтов мы будем говорить модели «Отвечай только по тексту, не искажай термины» и другие подобные промты для снижения галлюцинаций или для управления длиной и структурой ответа.К сожалению работают промты нестабильно — иногда они улучшают ответ и его полноту, но могут приводить и к галлюцинациям, это требует дальнейшего изучения именно в сеттинге retrieval.
Мы сделали свой RAG
Типичные, перечисленные выше проблемы Retrieval-Augmented Generation мы пытались решить еще в августовской статье с релизом QA системы с ограниченным функционалом — вопросы можно было задавать только по теме нейросетей и ML, Ai.
Нам удалось исправить и улучшить результаты у всех 3х причин плохих ответов в RAG системах: недавно мы завершили тесты своих собственных обученных моделей. В целом, апгрейд RAG сделан следующий:
- Внедрили Fractal answer synthesis.
Обучили несколько своих моделей решать универсальную задачу извлечения графовой структуры текста(по сути «извлечения знаний») — это позволяет находить неочевидные связи между структурными элементами статей, инструкций и различных регламентов, дисклеймеров: связи устанавливаются на разных уровнях, начиная от предложений и заканчивая темпоральными, логическими, причинно-следственными(NLI задача), онтологическими (часть-целое, common sense, отношения между сущностями, учет связей таксономии «входит в», часть множества, цели, принадлежность, вложенность) - Сделали собственный векторный поиск.
Сильно доработали подход Pinecone и других векторных баз — наше решение по метрикам близости гораздо лучше находит «близкие» по смыслу тексты с учетом конкретной предметной области. Работает поиск терминов, жаргона, например вы можете своими словами описать термин в вопросе и система поймет это (пример ниже с РИД — результатом интеллектуальной деятельности).При этом модель достаточно универсальная.
Смотрим демо на документах
Давайте проверим как FractalGPT QA агент «прочитывает» pdf документы и действительно ли он понимает когда отвечать нужно, а когда данных для этого недостаточно.
Было проведено тестирование нашей системы на задаче ответа по вопросам лекционного материала (классическое тестирование студентов). Тест состоял из 20 вопросов на тему «Антикоррупционная деятельность». В результате наша система смогла дать правильные ответы на 20/20 вопросов, со 100% точностью, при том, что суммарный объем лекций составил 132 страницы!
Ответы были не только правильными, но и более полными.
Кейсы ниже с ответами по документам были сделаны на общедоступных pdf файлах, скачать их можно по ссылкам: гражданском кодексе РФ с изменениями (19 страниц, т.к. в бете есть лимит), лекции по нечеткой логике, статье о конструкторской документации на изделия машиностроения с сайта extxe.com.
Почему эти документы? — Они сложные и на них даже лучшие LLM часто галлюцинируют.
На вопрос «Является ли Чатгпт автором результата интеллектуальной деятельности, если он сгенерировал некий текст» — оригинальный ChatGPT срывается и начинает отвечать не по тексту а сам(даже промт не помог), а FractalGPT дает верный ответ по тексту загруженного документа.
Очень важно правильно формулировать вопрос — в кейсе ниже в вопросе «О чем гласит подпункт в редакции, введенной в действие с 1 октября 2014 г ?» нет уточнения какой именно подпункт имеется ввиду. Если такое уточнение дать, то ответ будет верным. («О чем гласит подпункт в редакции, введенной в действие с 1 октября 2014 г, там где про РИД в сложном объекте ?»)
Теперь зададим вопрос по конструкторской документации — и здесь ответы достаточно хорошие и полные, с учетом терминов, специфичных для данной отрасли.
Очень важно получать ответы без галлюцинаций и в образовательной деятельности — для студентов, преподавателей, ученых, аналитиков. Только представьте, что студенту ответ дается неверным — это вызовет не просто скандал, а подорвет весь смысл изучения и проверки своих знаний.
Наше решение RAG хорошо справляется с символьными вопросами. Обратите внимание, что первый вопрос «И или Л будет высказывание о событии до начала события?» является вопросом на обобщение и логическому выводу из знаний, содержащихся в тексте — прямого ответа на него в документе нет — поэтому корректное поведение это не делать никакого вывода(в жизни мы часто делаем такое обобщение, но это тема отдельной статьи — о тех случаях, когда это делать нужно строго по правилам той отрасли, которую мы обсуждаем). Однако, если привести конкретный пример из документа, то ответ уже можно получить вполне конкретным.
Недостатки типичного RAG ярко видны на научных вопросах — «Что такое молекулярные эффекты оксида азота» — как видим, система, использующая ChatGPT и GPT-4 выдает галлюцинацию про четырехмерное пространство(!!), а наша система дает фактический и правильный ответ.
Кстати, собственный RAG на базе Fractal answer synthesis позволил нам снизить и стоимость запроса в систему в 2 раза относительно средней цены типичных LLM, равной порядка 0.5 центов — у нас она составляет 0.1 сента за 1k токенов на вход и 0.2 цента за 1k токенов на выход генерации.
Получить доступ
FractalGPT QA агент доступен всем, регистрация уже открыта.
Больше новостей в нашем чате по FractalGPT: https://t.me/fractal_gpt
Подробнее о мультиагентной системе.