Comments 12
Интересно, что нужно по железу для запуска такого набора сервисов.
Я у себя дома запустил на 2 x 3090. Но это чисто поиграться. Для прода надо считать производительность и подбирать соответствующее железо и ПО (модельки в частности).
VLLM(id='/Qwen3-14B', base_url='http://192.168.0.108:8000/v1')
Вот если бы я регулярно не пользовался то же Qwen3 (25B FP4) на своем локальном сервере (GPU 16Gb), в частности, и для обработки чанков RAG, я бы поверил в столь благостную картинку, описанную автором.
Да. Для статьи можно подобрать пример (один удачный на где то с пяток мусорных).
Но не надо обольщаться. Так "красиво" как у автора в статье все одно не выйдет. В жизни оно так не будет. Что локальная LLM, что облачная LLM часто
Данные будут не такие красивые как в примере.
LLM будут игнорировать данные из RAG и создавать текст на основе того, на чем LLM обучали (особенно, если обучающих данных конкретной темы больше было)
Будут нести бред который не отличишь от правды, если сам большую часть ответа не знаешь.
Будут просто нести явный бред (локальные LLM чаще всего)
И даже не понятно, что хуже, не правильный ответ или бред в ответ. Бред можно отсечь, а не правильны ответ еще пойми, что он не правильный.
Но у автора же цель продать свои курсы. Так что вполне понятно, что рассказывает "красиво".
У меня через ollama запущена gpt-oss:20b, так же для RAG. С помощью промптов минимизировал враньё модели. Использую теги и ограничения. Как в системном промпте так и пользовательском. Промпт примерно звучит так
"Для ответа используй контекст расположенный внутри тега <doc></doc>, если информации не достаточно для ответа, ответь:"не нашел ничего""
Просматривая логи, чаще всего даёт правильные ответы. Сами промпты намного больше чем я указал в примере. Долго подбирались и много раз переписывал вводя ограничения на ответ, его формат и структуру. Так что можно улучшить количество правильных ответов. В статьях про раг почему то говорят про проверки, пррмпты, как улучшить и т.д.
Просто написать код и кидать доку в модель надеясь что она ответит по ней, так не выходит
gpt-oss:20b как я не пытался ее настроить, включая игру с температурой и прочим тонкими параметрами, склонна к не предсказуемым долгим задержкам (от 7-10 сек лично для себя считаю долгим) от начала выдачи токенов. С любым промтом. И с таким классически то же.
А так же, склонна к переходу в режим бреда и зацикливания на последней последовательности токенов.
И с русским у нее существенно хуже, чем с английским.
Мне она не понравилась. Возможно это на тех данных что лично мне нужно (тех документация). На примерах типа "вот кусок статьи про .. дай мне обзор" не гонял. Мне это не нужно было.
Qwen3-Code-25B, лично для меня, оказалась более подходящая. Отвечает быстро и короче чем gpt-oss и редко сбивается (типа попытки не ответить, а перевести на китайский). И видно что объем русских текстов для обучения был больше чем у gpt
Кстати, пробовал извратную схему
Перевести чанк на английский
промт на английском
перевести ответ на русский (ну или оставить так. В принципе и танк норм и понятно)
Все локальные сетки так работают существенно лучше на обычных данных.
Но, увы, не в моем случае с обилием частных аббревиатур в служебных доках.
Я остановился на чанке где то в районе 3Кб (GPU 16gb). Сильно больше - время отклика растет не линейно (объем вычислений растет). Меньше - обычно не помещается все нужное.
И вообще, если вот по таким "красивым" текстам как статье еще нормально, то по фактической технической документации из частных мало известных разделов (не было в данных обучения), LLM - чаще всего несет банальности, полностью или частично игнорируя данные.
Так что.
Пришел к тому, эти 3Кб лучше глазами пробежать для контроля, чем гадать "то что выдало LLM это так и есть или фигня".
И вообще, доверять ответам LLM можно только, если этот ответ тебе нужен не критично (на поболтать).
Впрочем, как и любой информации в Интернете доверять не стоит.
У меня и пример из статьи не сразу вышел. Например модель брала год не из функции а из своих знаний. Или выполняла писк чанков за один запрос, а не разбивала его на подзапросы. Решил это настройкой промта.
LLM будут игнорировать данные из RAG и создавать текст на основе того, на чем LLM обучали
Не будет, если прямо запретить в промпте
Инструкция:
1. Сначала проанализируй запрос и определяйте необходимые подзадачи.
2. Используйте поиск для нахождения релевантной информации.
3. Если необходимо найти информацию из разных периодов, то ищи их с помощью самостоятельных подзапросов.
4. Всегда используй функцию getcurrent_date, если необходимо определить текущую дату.
5. Отвечай на основе найденной информации, не придумывай факты. Если информации недостаточно, укажи это в от
вете.
Все таки не работаю, почему нельзя этот промпт дать самой LLM, а надо именно агенту.
Вернее, у тебя должен быть свой промежуточный сервер, который этот системный промпт передаст LLM вместе с вопросом
Пример реализации агентного RAG'а