Канал про разработку продуктов на базе LLM/ChatGPT. Выжимка важных новостей и разборы кейсов.
Все думают, что OpenAI выкатит свой поиск на домене search.openai.com
Они зарегистрировали домен с сертификатом, возможно там выставят наружу сервис аналогичный Perplexity.
А между тем, на домене https://search.chatgpt.com уже не только подключен сертификат, но и стоит CloudFlare ;)
Ваш, @llm_under_hood 🤗
PS: Про поиск хорошо расписано у Игоря в Сиолошной
Microsoft Phi-3 Mini Instruct действительно недокрутили
В бенчмарке этой модели я писал:
модель потенциально очень хороша для своего размера! 🚀 Главное только поправить ее ответы и instruction following.
LangChain - это достаточно сложная и вредная библиотека.
Thoughtworks, даром что медленные мамонты, наконец проснулись и обнаружили это.
В предыдущем выпуске Radar мы уже упоминали о некоторых из появившихся критических замечаний в адрес LangChain. С тех пор мы стали относиться к нему еще более настороженно. Хотя фреймворк предлагает мощный набор функций для создания приложений с большими языковыми моделями (LLM), мы обнаружили, что он сложен в использовании и чрезмерно усложнен. LangChain рано завоевал популярность и внимание в этом пространстве, что сделало его стандартным для многих разработчиков. Однако, поскольку LangChain пытается развиваться и идти в ногу с быстрым темпом изменений, разработчикам становится все труднее ориентироваться в этих изменениях концепций и паттернов. Мы также обнаружили, что дизайн API непоследователен и многословен. Поэтому он часто скрывает то, что на самом деле происходит под капотом, затрудняя разработчикам понимание и контроль того, как LLM и различные паттерны вокруг них на самом деле работают. Мы переводим LangChain в кольцо Hold, чтобы отразить это. Во многих случаях мы обнаружили, что достаточно реализации с минимальным использованием специализированных фреймворков. В зависимости от вашего случая использования, вы можете рассмотреть и другие фреймворки, такие как Semantic Kernel, Haystack или LiteLLM.
#вы_спросили Какие есть примеры Knowledge Maps?
Knowledge Map - это такая предобработка данных, которая упрощает работу c ними для LLM и делает прозрачным для людей.
Отличительные особенности:
- Эксперты могут проинспектировать качество предобработки и внести коррективы
- При галлюцинациях на выходе можно отладить процесс, найти причину ошибки и попытаться ее исправить
- Можно использовать методологию создания domain models из DDD
Технические реализации Knowledge Maps могут различаться от проекта к проекту. Даже в рамках одного проекта по мере его развития.
Примеры Knowledge Maps в проектах (для каждого кейса - краткая структура Knowledge Map в текущей версии)
Микро-ассистент, для ответа на вопросы про ликвидность на основе отчетов компаний (описание): табличка с тремя колонками - название компании, год, ликвидность.
Marketing Content Generator (кейс): дерево папок с файлами о компании, маркетинге, внутренних процессах и продуктах. Плюс процесс на 5-6 шагов (промптов), который описывает LLM, как со всем этим работать и проводить человека по нему.
Кейс с ChatGPT про 10.000 € в месяц (кейс): внутренний словарик специфичной терминологии, особенностей перевода и форматирования, по словарю на язык. Словарь подставляется в промпт в зависимости от нахождения слов в тексте
Умный поиск по документам в компании (кейс): в самом начале интерфейс для структурного FTS поиска по всем документам со шпаргалкой про особенности компании. Впоследствии развивается в классификатор запросов, который подгружает дополнительные подсказки, промпты и конкретные документы в зависимости от типа вопроса. Большая часть подсказок и индексов к этому моменту хранится в таблицах, которые отражают процессы в компании. Edge cases по-прежнему отрабатываются при помощи структурного FTS поиска с query expansion + feedback loop.
Нишевые B2B генераторы лидов (кейс): в исходниках все выкаченные документы про потенциальных клиентов (годовые отчеты, посты, новости, видео итп), формализованное описание каждого документа/компании с указаниями на источники, FTS интерфейс и пошаговое описание процесса поиска возможных лидов (Wizard). Процесс повторяет то, как работают с лидами эксперты. Ассистент проходит с пользователем по этим шагам, извлекая информацию и обрабатывая ее. Человек проверяет выводы, корректирует выкладки.
Платформа для автоматизации бизнес-процессов в компании (кейс). Тут Knowledge Map уже разрастается до описания процессов компании, описания интеграций с внутренними системами компаний, описание внутреннего DSL для доступа к LLM, а также библиотекой примеров. Каждый пример - это выполняемый скрипт, который какой-то сотрудник сделал для автоматизации внутреннего процесса и выкатил для использования. Эта библиотека используется при развитии DSL дальше (чтобы не сломать скрипты), а также в качестве входа для помощника по автоматизации. Это wizard, который на базе описания проблемы и похожих кейсов пытается сразу написать готовый скрипт для автоматизации.
Ваш, @llm_under_hood 🤗
LLM Benchmark Updates.
Выкладку Llama 3 70B на Hugging Face пофиксили, теперь модель не спотыкается на формате. Про проблему писал раньше. Но качеству LLama 3 70B это не очень помогло. Модель пока на уровне Anthropic Claude v2 в продуктовых бенчмарках.
Хотя, если задуматься, год назад казалось немыслимым, чтобы в открытом доступе лежала LLM уровня Claude 2.
В бенчмарках, где модель выдает CSV файлы, я перестал так сильно придираться к формату вывода и все строчки, которые не CSV - игнорируются, а не караются. Это отражает изменения в промптах ряда продуктов.
Это улучшило очки в Integrate у некоторых моделей, но на TOP-10 это никак не повлияло. Там модели и так слушаются хорошо.
Самые большие ожидания у меня к тюнам Meta Llama 3 8B Instruct. У модели очень хороший Reason, а уж instruction following можно всегда подтянуть.
Ваш, @llm_under_hood 🤗
#вы_спросили про суммаризацию больших таблиц для LLM
Представьте, у меня есть 5 таблиц в базе данных, и мне нужна модель LLM, чтобы она суммировала информацию из всех этих таблиц и предоставляла ответы каждый раз, когда пользователь задает вопрос. Я уже пробовал подход на основе инструкций, но запрос получается слишком большой (и ответы не такие, как ожидалось). Не могли бы вы предложить что-то по этому поводу?
А теперь напиши такой SQL/Pandas запрос, который выберет необходимую для ответа информацию из таблицы. Я прогоню его, а потом скормлю результат тебе же для интерпретации.
Бенчмарки Llama 3 на продуктовых задачах
Начнем с хорошего. Llama 3 - 8B совершила гигантский скачок по сравнению с прошлой версией. Она обогнала Claude 3 Sonnet, Cohere Command R и даже Mistral 8x22B. Еще и разные языки неплохо понимает!
Тем обиднее плохие очки модели в категории Integrate, чисто из-за невнимательности. Так и хочется сказать модели "читай инструкции внимательно! Вон ChatGPT смог же больше 90 очков набрать!"
Кстати, если кто эту модель запускает локально, не забываем читать внимательно про их instruct format и eos_tokens - они поменялись с прошлой версии.
А вот Llama 3 - 70B ведет себя у меня отвратительно. Во-первых, в куче ответов почему-то начинает ответ с assistent\n\n
. Но даже если закрыть глаза на это, качество ответов ниже плинтуса. Иногда модель попросту срывает в белиберду прямо в ответе.
Возможно, проблема в запуске модели в режиме b8 на 2х A100 80GB. Надо будет потом попробовать с vLLM упихать в один GPU.
Дружно радуемся прогрессу Llama-3-8B! 🎉
Ваш, @llm_under_hood 🤗
Упс. Места на четвертый поток вебинара в этот раз разлетелись особенно быстро. Вчера мы разослали уведомление о начале продаж всем, кто записался в waitlist. Сегодня опубликовали анонс в канале, а час назад группа набралась полностью.
Как выяснилось, спрос на информацию о создании систем на базе Knowledge Maps - несколько больше, чем ожидалось. Больше всего он интересует тех, кому важно строить AI ассистентов без галлюцинаций, с возможностью заглянуть под капот и улучшить качество.
При этом группы я стараюсь делать относительно небольшие, чтобы у нас была возможность обсудить кейсы участников и поработать в Q&A. Но это масштабируется плохо, а горло начинает протестовать уже после 2-х часов вебинара)
Поэтому я в будущем собираюсь переработать материал вебинара так, чтобы он лучше масштабировался, и все желающие могли купить запись. Лекционную, повторяющуюся из раза в раз часть - записать на английском языке и дополнить ответами на часто задаваемые вопросы.
Если вы не успели на четыре потока - ничего страшного. В записи будет аналогичный контент, и вы её сможете посмотреть без спешки в удобное для себя время.
Что касается живого разбора ваших кейсов - здесь мы тоже что-нибудь придумаем. Возможно, это будет дополнительная опция для тех, кто купил и посмотрел вебинар.
Когда? Переработка материалов и запись займут какое-то время. Ориентировочно Май-Июнь. Напишу в канале.
Ваш, @llm_under_hood 🤗
Новый инструмент для дообучения LLM от авторов PyTorch - TorchTune 🚀
Разнообразных моделей сейчас становится все больше. А Sam Altman и вовсе обещает нам скачки в возможностях LLM и персонализацию (Youtube: Which Companies Will Be Steamrolled by OpenAI?)
Авторы PyTorch не отстают от трендов. Они хотят сделать простую и доступную библиотеку для дообучения и запуска своих моделей. Это пока альфа версия, но смотреть уже можно сейчас.
Announcement | Github | Tutorials
TorchTune сделана на базе PyTorch и из коробки поддерживает LLama2 7B/13B, Mistral 7B и Gemma 2B. 70B и MoE на очереди.
Авторы постарались сделать один раз и нормально реализацию таких вещей, как:
- интеграцию с Hugging Face
- логгирование и метрики для отслеживания процесса обучения
- квантизация
- оценки полученных моделей на популярных бенчмарках
- запуск моделей локально
- совместимость чекпоинтов обучения c популярными методами запуска моделей
При реализации всего этого, они пытались оптимизировать потребление памяти так, чтобы большая часть скриптов и рецептов влезала в GPU с 24GB VRAM.
С PyTorch у ребят получилось очень хорошо. Посмотрим, что будет с TorchTune.
Ваш, @llm_under_hood 🤗
#вы_спросили про Latency и Knowledge Mapping
В потоках вебинаров и в нашем чате задают классные вопросы, ответами на которые хочется делиться со всеми. Поэтому некоторые вещи я буду постить сюда с тэгом #вы_спросили.
А как понизить latency?
Упомянутые подходы подразумевали 1-2-3+ промежуточных шага, кажется, не очень подходит для real-time ассистентов
🚀 Новая модель в топе продуктового LLM бенчмарка!
OpenAI выпустили обновление GPT-4 Turbo (gpt-4-turbo-2024-04-09), которое оказалось в топе LLM бенчмарка. Отрыв - значительный.
Похоже, что в OpenAI исправили косяк со внимательностью модели к описаниям задач. Из-за этого улучшилась оценка в Integrate.
Sama когда-то сказал, что prompt engineering со временем вымрет. Похоже, что он держит свое слово 🍻
Еще в бенчмарке есть похорошевшая мультимодальная Gemini Pro 1.5 от Google. Если бы не провал в области Reason, то Pro 1.5 перегнала бы Opus и соревновалась с GPT-4 Turbo.
Напомню, что бенчмарк построен на основе промптов и задач из реальных продуктов с LLM под капотом. Это проекты клиентов Trustbit, и инсайты в рамках AI Research.
Ваш, @llm_under_hood 🤗
---
Предыдущие LLM бенчмарки в канале:
- бенчмарки февраля 2024
- март (Haiku)
- Март (Claude 3)
- Cohere Command-R и Сommand-R+
Описание работы, категорий и примеры кейсов есть в лабах.
#клиентспросил
После первого хайпа OpenAI появилось много сервисов, которые так или иначе упрощали некоторые аспекты работы, например, с анализом pdf файлов. Через некоторое время вышла новая версия chatgpt, которая убила эти стартапы. Вот не получится ли также с knowledge map? Да, векторный RAG сейчас работает мягко скажем не идеально, но ребята из OpenAI думаю это тоже прекрасно понимают, и скорей всего работают над этой задачей.
Возвращаясь к нашей теме по созданию курсов. Да, мы можем описать последовательно работу методиста и выстроить на нем внутреннюю логику запросов и работы с документами. Но это большая прям работа. Я вот сейчас думаю, не выйдет ли так, что мы сейчас упоремся и сделаем все это, а условным летом OpenAI выпустит новую версию, где предоставит идеальный инструмент для работы с контекстом, правильной кластеризации информации и последующего ретривинга нужных данных
Бенчмарк Command-R+
Модель от Cohere ведет себя весьма неплохо, но до GPT-4 и Claude 3 Opus недотягивает на продуктовых задачах.
При этом и стоит она несколько дешевле.
Ваш, @llm_under_hood 🤗
---
Предыдущие LLM бенчмарки в канале:
- бенчмарки февраля 2024
- FAQ по декабрьскому бенчмарку
- март (Haiku)
- Март (Claude 3)
- Cohere Command-R
Enterprise RAG Challenge: ориентировочно конец Апреля-Май
Помните я писал про предложение дружески померяться силами своих RAG-ов?
Challenge точно состоится, ведь только за первые сутки интерес проявило 14 человек/команд. И это не говоря о компаниях, которым интересно посмотреть на показатели разных систем с потребительской точки зрения.
Участвовать можно будет как публично, с раскрытием имени системы и ее компонентов (например, ChatGPT vs решение внутри контура), так и анонимно (такое тоже просят некоторые вендоры). Leaderboard будет публичный, и каждый сможет сортировать и фильтровать его по важным для себя критериям.
В комментариях просят разнообразных задач, начиная с понимания сложных таблиц и заканчивая картинками. Но начнем мы с малого - как RAG системы могут отвечать на вопросы по документам. Причем вопросы будут браться только те, на которые есть точный ответ.
Документы для первых раундов уже известны заранее - это публичные годовые отчеты международных компаний в виде PDF. Пример есть тут (архив 100 MiB)
Чтобы провести первый раунд соревнования, мне надо сесть и поработать с экспертами из компаний-потребителей - собрать вопросы для RAG-систем, а потом генерализовать их.
Список вопросов будет опубликован публично до начала соревнования в виде “Есть ли у компании A предприятия в стране B?”, “А кто сейчас президент компании C?” или “У какой компании больше всего сотрудников, и сколько?” итп
Конкретные вопросы уже будут нагенерированы прямо во время соревнования силой великого рандома. Код генерации тоже будет открыт (но заранее узнать конкретные вопросы это не поможет никому, даже мне. Потом расскажу, почему это так 😆)
В общем, главный следующий шаг тут - выделить один день на подготовку вопросов с экспертами из разных компаний. Оптимистичная оценка - до 20го апреля смогу это сделать.
Буду держать вас в курсе.
Ваш, @llm_under_hood 🤗
#case LLM Ассистент для продаж - разбор нового кейса
Давно я не разбирал тут кейсов с продуктов с LLM под капотом. Распишу свежий вчерашний инсайт.
Клиент - это компания, которая продает специфичные электронные компоненты на международных рынках. В своей нише она отжевала значительную долю рынка. И они делают классную вещь - очень внимательно отслеживают любые движения конкурентов на рынке:
- А сколько они товара продали? А по какой цене?
- А какие новые аналогичные продукты выпускают?
- А почему мы не получаем столько же прибыли, сколько они в каком-то сегменте?
И тому подобное. Зная ответы на подобные вопросы можно очень тонко играть с выпуском новых компонентов, их продвижением и ценообразованием. Это они и делают, довольно успешно максимизируя прибыль.
А в основе всего - достаточно простая таблица, не более 200000 строк. Это список всего товарного ассортимента компании клиента и их конкурентов в одном Excel файле. Помимо самих продуктов там еще и ключевые характеристики, по которым покупатели сравнивают и выбирают эти электронные компоненты: размеры, пины, питание, допуски итп.
И вот как раз составление этой таблицы и поддержание ее в актуальном состоянии - это головная боль. Надо ходить ручками по сайтам конкурентов и аггрегаторов, собирать оттуда файлы с техническими спецификациями и сводить в одну таблицу. А ведь каждая компания еще и выпускает по 20-30 новых компонентов в месяц или обновляет данные на существующие. Надо отслеживать и это.
Чтобы разгрузить людей, разрабатывается ассистент для продаж с LLM под капотом. Его первичная задача - автоматически собирать всю информацию о новых товарах конкурентов и сводить ее в одну таблицу. А информация хранится в разнообразных PDF data sheets, внутри которых даже не просто таблицы, а графики допусков.
Если получится достаточно хорошо решить первую проблему с отслеживанием продуктов конкурентов, то дальше на очереди будут более простые компоненты ассистента - движок сопоставлений продуктов, генератор ключевых слов и текстов для кампаний, сервис поиска сопоставлений для дистрибьюторов итп
А что под капотом?
(1) достаточно простой web crawler
(2) Пара алгоритмов извлечения табличных данных из PDF, с GPT-4 для причесывания всего
(3) Немножечко GPT4-Vision для извлечения некоторых редкостных edge cases из графиков
Ну и естественно, что никаких векторных баз данных или LangChain/LLamaIndex тут и даром не надо)
Ваш, @llm_under_hood 🤗
---
Еще кейсы:
- Кейс с ChatGPT про 10.000 € в месяц
- Ассистент маркетолога с LLM под капотом
- Нишевый lead generator для B2B продаж
А когда в RAG-ах применимы GraphDB?
Я не один раз говорил, что графовые базы данных работают плохо в RAG-aх. Просто потому, что не видел случаев, когда они работают хорошо 🤪
Мне сейчас рассказали кейс, где они могут встать идеально. А если есть один кейс, то может быть и еще куча.
Кейс такой - в куче компаний есть горы старого кода. Обычно он оседает в районе дорогущих мейнфреймов. На этом коде держится весь бизнес, а бизнес имеет свойство развиваться и меняться. Естественно, что надо как-то старый код менять. Есть целая экосистема инструментов, которые помогают анализировать зависимости и оценивать риски переписывания кода.
Сейчас туда очень активно начинают привинчивать AI.
И вот для таких проектов лучше всего могут подойти графовые базы данных. Зависимости в коде между классами, методами, переменными (и прочими запчастями) моделируются лучше всего именно графами и деревьями.
Плюс туда можно докидывать зависимости вроде версий кода, деплойментов и сервисов.
И если дать LLM-ке вопрос вроде "Слушай, а какие системы могут поломаться, если я в этом коде выкину вот этот класс?", то ей будет сильно проще написать Cypher query, чем многоходовую рекурсивную портянку для SQL.
Ваш, @llm_under_hood 🤗
Реализация продвинутого поиска (AI Search) на документах компании
Помните я писал про первые шаги при реализации умного поиска по документам?
Мы начали со сбора документов и примерных вопросов, а закончили - сбором feedback о сделанном прототипе. А что там дальше?
А дальше там - агенты-специалисты. История развивается так.
Клиенты дают все больше вопросов, и роутер промптов в AI ассистенте становится слишком запутанным. Там и про цены и про маркетинг, про рабочие часы и про планирование отпусков.
Причем не совсем понятно, как разделять и классифицировать запросы по категориям. Они начинают бодаться и приводить к галлюцинациям. И вообще путаница.
Если ничего не понятно - смотрим на то, как оно работает на практике у клиента. Берем блокнотик, находим специалиста и задаем вопросы.
- А как мне планировать отпуск на лето?
Хм, я не знаю, сейчас спрошу у Нины. Сек
- А можно мне выжимку последнего маркетингового отчета?
- Сейчас. Лаура должна знать, где он лежит
LLM Бенчмарк Microsoft Phi 3 Mini 4K instruct 😣
В чатике несколько раз просили протестировать новую Microsoft Phi 3. К сожалению, результаты плохие (в моих продуктовых бенчмарках). Модель инструкций совсем не слушается. Подробнее можно прочитать, например, на HuggingFace discussion
Но, как это нынче модно с выкладкой моделей, Microsoft тоже накосячили с chat template.
Возможно проблемы из-за конфигов. Подожду пару деньков, пока не сделают нормальную выкладку.
Пока эту модельку пропускаем. И заодно ждем выкладки старших моделей этой линейки.
Но модель потенциально очень хороша для своего размера! 🚀 Главное только поправить ее ответы и instruction following.
Ваш, @llm_under_hood 🤗
Прогресс LLM-ок одной картинкой.
Ваш, @llm_under_hood 🤗
В полку RWKV моделей прибыло - 🦅 EagleX v2.
Я про проект RWKV уже писал раньше. Ребята дерзают и хотят создать новую архитектуру LLMок, чтобы сгладить основные недостатки классических трансформеров (требовательность к железу и ограниченный контекст).
Они выпустили новую версию RWKV-v5 Eagle v2
, которая обучена на 2.25T Tokens. Мультиязычная, работает примерно на уровне Mistral 7B v0.1 и Llama 2 7B. В области English Perplexity - даже лучше.
Эта модель - самая энергоэффективная среди 7B моделей. 5x эффективнее на 1k tokens и 100x эффективнее на 20k tokens. Подробнее написано тут.
Announcement | Hugging Face | Gradio demo | Recursal AI | Fine-tune
Понятно, что модели еще далеко до State of the Art, но скорость прогресса в RWKV меня очень радует. У recurrent LLM моделей теоретически неограниченный контекст на входе и выходе (и встроенная суммаризация).
Ваш, @llm_under_hood 🤗
PS: Кстати, в нашем чатике уже обсуждают обучение RWKV моделей с нуля.
State of the Art не обязательно означает качество
Чуть выше я писал про первые бенчмарки новых Llama 3 моделей на задачах из продуктов с LLM под капотом.
Llama 3 8B повела себя очень хорошо, а ее старшая 70B версия страшно глючила при запуске из HF Transformers по инструкции от Meta.
В ретроспективе можно было даже не искать ошибки в своем коде, а просто оценить число жалоб на промпт tokeniser в обсуждениях Llama-3 моделей на Hugging Face- 8B и 70B 🤣
В общем, пару деньков эти модели можно не трогать. Пусть эти ковбои из Meta перепроверят и дополируют свои конфиги.
Но 8B уже точно лучшая в своем классе, и это до всяких тюнов.
Ваш, @llm_under_hood 🤗
LLM Бенчмарк Mistral 8x22 - заметный скачок качества 🎉
Mistral AI начали фиксить свою проблему с болтливостью второго поколения своих моделей!
Недавно вышедшая модель Mistral 8x22 есть в открытом доступе. Теперь она на наших продуктовых LLM бенчмарках работает лучше, чем закрытый Mistral Large.
Более того, она настолько хорошо стала следовать инструкциям, что побила рекорд ChatGPT-4 Turbo (v2024-04-09) в категории integrate. Стоит при этом раз в 10 меньше, чем Mistral Large.
Что за категория Integrate? Это работа с API-шками, таблицами, функциями и внешними системами. Детальнее описано в лабах.
Хочется надеяться, что этот скачок качества распространится на все модели этого нового поколения.
Ваш, @llm_under_hood 🤗
Вебинар “Проектируем и внедряем AI-ассистенты с LLM под капотом”: 25 апреля в 11:00 GMT+3 (московское время)
В следующий четверг я проведу четвертый поток вебинара про проектирование AI-ассистентов.
Я расскажу о принципах построения и внедрения адаптируемых AI-ассистентов на примере небольшого end-to-end кейса. Мы поговорим о том, как проектировать подобные системы, собирать для них данные, контролировать качество, выстраивать работу с пользователями.
Вебинар будет полезен как инженерам (мы ненадолго заглянем в код), так и продактам, фаундерам и сейлсам - станет понятно, где лежит ценность в проектировании таких ассистентов, каковы их возможности и ограничения.
Вы сможете принести свои кейсы для обсуждения и задать вопросы.
Содержание вебинара то же, что и для предыдущих трех потоков. Отличаются только кейсы, которые приносят участники. Про Knowledge Map как раз на этом вебинаре я и рассказываю.
Длительность - 2 часа. Язык - русский. Стоимость участия в вебинаре - 80 евро (нужна будет карточка для оплаты через Stripe, российские карты не сработают).
Как оплатить?
Понадобится карта, работающая за пределами России. Оплатить можно вот здесь.
Там же есть ответы на частые вопросы:
- Можно ли оплатить участие другого человека?
- Будет ли запись? Можно ли ее купить отдельно?
- Как принести свой кейс для разбора на вебинаре?
После оплаты вам придет email с деталями и персональной ссылкой в чат потока.
До встречи на следующей неделе!
Ваш, @llm_under_hood 🤗
Первые шаги при реализации умного поиска (AI Search) по документам компании.
Клиент - международная компания, обычный небольшой enterprise с историей в пару десятков лет, клиентами в дюжине стран и численностью сотрудников до 5000.
Им хочется хороший и удобный поиск по всей внутренней документации, в идеале выдающий точные ответы. RAG без галлюцинаций, иными словами.
(см другие вариации этого кейса)
1. Identify scope and get statistics
Сначала я собрал у них 20 примерных запросов, ответы на которые хочется видеть. На каждый запрос - правильный ответ и место в системе документооборота, где он лежит.
2. Get data
Потом я выгрузил релевантную часть документации в файловую систему. В сумме ~8GB и 45344 документов. Причем выгружал я сам скрейпингом, предварительно согласовав с IT. Так оказалось проще и быстрее всего. Enterprise 🤣
Все документы сжаты в gzip и хранятся в content-addressable storage (CAS), ради дедупликации и простоты работы (выглядит, как содержимое .git/objects
в ваших проектах). Там дикая смесь файлов, начиная от XLSX c PDF до MSG и PUB.
3. Basic data extraction
На следующем шаге мы прогоняем все документы через unstructured и сохраняем полученные фрагменты текста обратно в CAS. Потом эти фрагменты мы загрузим в БД с полнотекстовым поиском.
В ней будет две таблицы, первая - список всех документов и их иерархия, вторая - все фрагменты для каждого документа (общим счетом 6690323 штук). На вторую таблицу включаем full-text search.
Базу данных раздует при этом до 15GB. Скриншот с примером поиска в ручном режиме - в комментариях.
4. Knowledge map
На третьем шаге уже приделываем классификатор на базе GPT4. Он будет анализировать каждый запрос с учетом Knowledge Map, который описывает поисковые ограничения для разных типов запросов.
В него мы положим всю ту информацию, которую собрали на первом шаге. Например: “Информация по срокам поставки лежит в папке X, бери файлы не старше 2х недель” или “Про внутрикорпоративные соревнования смотри в папке Y, бери файлы не старше года. Если ищут определенный отдел - выбирай по заголовкам внутри файла в двухбуквенном формате” итп
5. Edge cases + GUI
На четвертов шаге прописываем вариант поиска для “не знаем, как искать” и приделываем GUI для демонстрации возможностей клиенту. В подобных кейсах я люблю использовать BulmaCSS для красоты и HTMX для динамичности c минимумом училий. Спихиваем написание GUI на ChatGPT.
6. Gather feedback
Много ли можно сделать с подобным поиском? На самом деле он уже будет работать лучше существующего текстового поиска, т.к. GPT будет сильно сокращать список документов в выборке по эвристикам из knowledge map.
Но качество в этой итерации и не имеет значения. Главное показать клиенту как можно быстро и, главное, прозрачно улучшить качество поиска. Во время демки мы поковыряем вместе Knowledge Map и попробуем вместе “научить” систему находить новые типы документов.
Ну а дальше клиент попросит загрузить остальные 80% данных, подключить сторонние системы и вообще поглубже интегрировать ассистента во внутренние процессы.
Ваш, @llm_under_hood 🤗
Что такое Knowledge Maps?
Если кратко - это просто нормальная предобработка сырых документов в AI системах с RAG/LLM под капотом. В отличие от векторных подходов она требует анализа данных, но внимательность окупается простотой итогового решения, прозрачностью и возможностью контролировать качество.
В принципе, в подходе Knowledge Mapping нет ничего особенного. Но о нём я рассказываю по 2-3 часа на вебинарах, а времени все равно не хватает 🤣
Особенно это интересно компаниям, которым не хочется допускать галлюцинации и странные неожиданности в ответах систем. Или если хочется иметь четкое понимание того, как впоследствии развивать и улучшать AI систему.
На сайте Trustbit мои коллеги опубликовали обзорную статью про Knowledge Maps и построение систем на их основе (English | Deutsch). Разбор написан для бизнеса, но технических неточностей там нет, я вычитывал.
Ваш, @llm_under_hood 🤗
PS: И нет, Knowledge Map - это не Knowledge Graph.
Интересную LLM откопали коллеги из Код один.
Это RWKV Language Model, которую пилят еще с прошлого года
Можно поиграть с ней на Hugging Face:
- v6 - 1.6B + Vision 🤯
- v5 - 7B
v6 задавали вопросы на башкирском, она отвечала внятно. И это редкость, ибо поддержка нишевых языков начала появляться только недавно в GPT-3/4
Я прогнал пару тестов из своего бенчмарка. v5 у меня отвечала неплохо, v6 - совсем слабо.
Но фишка не в этом:
- Эта модель менее требовательна к ресурсам, чем модели аналогичного уровня - демка запущена на T4 и летает шустро.
- Модель внезапно неплохо общается на разных языках.
- Модель не использует классический attention. Это вообще не трансформер, а рекуррентная нейронная сетка, и она может генерировать бесконечный поток сознания.
В общем, совсем не понятно, почему оно работает. Кто хочет разобраться получше - gonzo писал про эту модель еще летом прошлого года. Недавно вышла новая версия этой модели.
Имхо, это еще один звоночек в пользу грядущего устаревания трансформеров (ибо квадратичное время генерации - это так себе) и улучшения юнит-экономики использования LLM.
Это очень классный проект - они пилят что-то новое и отличное от всех остальных. А не просто очередной толстый MoE. Хочется пожелать им всяческих успехов и открытий дальше.
Home page | Картинка v6 | API Server (не только NVidia) | Model Card v6 | Как оно работает
Ваш, @llm_under_hood 🤗
Как сделать так, чтобы Mistral 7B всегда отвечал на русском?
Для этого достаточно немного питона и вежливости) И это применимо к любой локальной LLM, не только Мистралю.
from transformers import AutoModelForCausalLM, AutoTokenizer, LogitsProcessor
import torch
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2",torch_dtype=torch.float16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2")
# MAGIC HAPPENS HERE
messages = [
{"role": "user", "content": "Write me a mayonnaise recipe. Please answer in Russian"},
]
tokens = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
generated_ids = model.generate(
tokens, max_new_tokens=1000, do_sample=True, num_beams=5,
renormalize_logits=True, logits_processor=[Guidance()])
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
<s> [INST] Write me a mayonnaise recipe. Please answer in Russian [/INST] Я рад помочь тебе приготовить майонез! Здесь простой рецепт для традиционного майонеза: 1 яйцо (50г), 2 столовых ложки лимонного сока, 1/2 чайной ложки соли, 1/2 чайной ложки сахара, 1/2 чайной ложки муки, 250мл растительного масла (сойбек, рапсейд или любого другого непривкусного масла). 1. Поместите яйцо, лимонный сок, соль и сахар в большую посуду. 2. Вмешайте эти ингредиенты вручную, используя ложку, до тех пор, пока соль и сахар полностью растворятся. 3. Поместите чайную ложку муки в маленькую посуду, добавьте несколько капель масла и смешайте. 4. Постепенно добавьте масло в большую посуду с яйцом, постоянно мешая, используя ложку, до тех пор, пока майонез не загустит. 5. Продолжайте добавлять масло до тех пор, пока оно полностью поглотится. 6. Майонез готов! Сохраните его в холодильнике до использования. Пожалуйста, обратите внимание, что яйца могут представлять определенную опасность для здоровья из-за риска заражения сальмонеллой. Поэтому рекомендуется использовать только свежее яйцо и хранить готовый майонез в холодильнике.</s>
import regex
ru_alphabet = regex.compile(r'[А-Яа-яЁё]+')
punctuation = regex.compile(r'^\P{L}+$')
drop_mask = torch.zeros(1, tokenizer.vocab_size, dtype=torch.bool, device="cuda:0")
for k, v in tokenizer.get_vocab().items():
s = k.lstrip('▁')
if ru_alphabet.match(s) or punctuation.match(k):
continue
drop_mask[0][v]=True
drop_mask[0][tokenizer.eos_token_id]=False
class Guidance(LogitsProcessor):
def __call__(self, input_ids, scores):
return scores.masked_fill(drop_mask, float('-inf'))
Gemini Experimental доступна на Google Vertex AI
Подозреваю, что так назвали Gemini Pro 1.5 в преддверии грядущего Google Cloud Next. Говорят, у нее 1M контекста (но там контекст - это символы, а не tokens), а итоговая стоимость будет сравнима с ChatGPT-4.
Предварительно выглядит неплохо. Но API пока там не доступно, поэтому бенчмарки подождут.
Ваш, @llm_under_hood 🤗
Тем временем, места на третий поток вебинара “Проектируем и внедряем AI-ассистенты с LLM под капотом” закончились. Группы я делаю небольшими, чтобы мы с участниками вебинара могли эффективнее обсудить кейсы и разобрать вопросы.
Если хотите принять участие в четвертом потоке живого вебинара, можете оставить свой емейл вот здесь - когда наберется группа, пришлю вам оповещение о начале продажи в первую очередь. Содержание всех потоков практически одинаковое, отличаться будут только обсуждаемые кейсы - у всех участников они свои.
Это будет последний поток в таком формате. После него я собираюсь записать весь вебинар на продажу в виде лекционной части. Она будет с примерами, но уже без живых обсуждений и, скорее всего, на английском языке.
Ваш, @llm_under_hood 🤗