RAG, два, три… (как пользоваться RAG в 1С). 1С.. 1С. rag.. 1С. rag. искусственный интеллект.

В библиотеке искусственного интеллекта для 1С появилась поддержка RAG (Retrieval Augmented Generation). Что такое библиотека искусственного интеллекта для 1С, что такое RAG и как этим пользоваться совместно

Библиотека искусственного интеллекта для 1С представляет собой коллекцию методов доступа к большим языковым моделям разных провайдеров через API. Несмотря на то, что у ведущих провайдеров сейчас все плюс-минус одинаково, а иногда прямо заявляется, что будет использоваться схема API от OpenAI, есть много существенных нюансов, отличающих одного провайдера от другого. Библиотека приводит все к “общему знаменателю” и сильно упрощает жизнь разработчикам 1С. Она распространяется бесплатно и вы можете использовать ее для создания своих коммерческих продуктов. Скачать можно здесь https://infostart.ru/1c/tools/2059795/ или здесь https://t.me/braingurd

Когда клиенты заводят разговор о RAG, довольно часто приходится слышать об “обучении нейросетей”. Дескать, давайте обучим нейросеть нашими данными с помощью RAG. Строго говоря, это неправильно. Обучение нейросетей, это отдельная сложная тема, а с RAG все несколько проще.

Представим, что мы хотим давать ответы на вопросы клиентов, задействовав для этого искусственный интеллект. Мы берем большую и умную нейросеть. Ее уже обучили всему, чему надо и она может поддерживать непринужденный разговор. Но вот конкретно про нас она не знает ничего, или почти ничего. Клиент приходит с простым вопросом: какой у вас график работы? Нам нужно сделать что-то, чтобы нейросеть смогла ответить на него. Для этого ее не надо обучать. Можно поступить проще. Добавить ответ в вопрос. Это и будет тем самым augment, т.е. расширением.

Вопрос клиента:

Какой у вас график работы?

Наше расширение:

Мы работаем по будням, с 9:00 до 18:00 

Что получает на вход нейросеть:

Мы работаем по будням, с 9:00 до 18:00 Какой у вас график работы? 

Понятно, что получив такой вопрос, нейросеть даст на него верный ответ. Разумеется, мы не станем ограничивать себя ответом на один-единственный вопрос. В наше расширение мы загрузим вообще все, что посчитаем нужным так или иначе сообщать клиенту: перечень товаров и услуг, порядок работы, инструкции и т.д.

Здесь и проявляется сила нейросети. Она без проблем найдет в этой массе информации именно то, что нужно для ответа на конкретный вопрос. Но есть одна техническая сложность. Размер этой самой “массы” сильно ограничен. 

Во-первых, есть размер контекста. У разных моделей он разный. У gpt-4o от OpenAI это 128К токенов. У Claude Sonnet 3.7 от Anthropic 200K. У Gemini 2.5 pro от Google 1 миллион токенов и обещают 2 вскорости. Миллион токенов, это достаточно много. Практически “Война и мир” (на английском языке около 700К токенов). Но существует мнение, что с увеличением контекста качество ответов падает. Так что, миллион токенов, это только в теории. На практике и 32К уже многовато. Потому еще, что во-вторых, есть плата за входящие токены. У gpt-4o сейчас 2.5$ за миллион токенов, у Sonnet 3.7 это 3$. Платить по 10 рублей за каждую реплику в диалоге с клиентом может оказаться накладным.

И вот тут возникает идея подмешивать в запрос пользователя не все-все-все, а только то, что имеет отношение к этому запросу. Как определить, что имеет отношение к запросу пользователя? И тут на помощь приходит нейросеть. Она умеет превращать текст в вектор (embedding). Вектор, это много чисел, например 512. А по сути, точка в 512-мерном пространстве. Теперь мы можем разделить наш большой текст, в котором все-все-все, на маленькие части. Для каждой части получим вектор или точку в 512-мерном пространстве. Далее, получив от пользователя запрос, мы и для него рассчитаем точку и определим к какой из ранее рассчитанных точек она ближе всего. Так мы получим ту самую часть большого текста, которую надо добавить в запрос.

Конечно, трудно себе представить 512-мерное пространство, но работает это прекрасно. А еще более прекрасно то, что в Response API от OpenAI (как и в скоропостижно устаревшем Assistant API) вся эта сложная работа с векторной базой скрыта “под капотом”. Вы создаете векторную базу одной простой командой, загружаете туда файл или файлы (это не важно, все равно все будет порезано на кусочки неким оптимальным способом). И все готово к работе. Все что нам нужно для того, чтобы заработало “подмешивание”, это указать id векторной базы в специально выделенной для этого опции.

 

В библиотеке искусственного интеллекта для 1С, начиная с версии 19, появились функции: СоздатьВекторнуюБазу(), ЗагрузитьФайл(), РазместитьФайл()

RAG, два, три… (как пользоваться RAG в 1С) - 1

В результате мы получаем подготовленную векторную базу с неким id. Этот id мы передаем в опции “vector_store_id” и получаем RAG.

Вы можете самостоятельно поэкспериментировать с этим, пользуясь обработкой БИИ_Пример, которая входит в состав библиотеки.

RAG, два, три… (как пользоваться RAG в 1С) - 2
Скрытый текст

Жили-были старик со старухой. Однажды просит старик:

— Испеки, старуха, колобок.

— Из чего испечь-то? Муки нет.

— Эх, старуха! По коробу поскреби, по сусеку помети; авось муки и наберется.

Старуха по коробу поскребла, по сусеку помела, и набралось муки две пригоршни. Замесила на сметане, пожарила в масле и положила на окошечко остудить.

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

Катится колобок по дороге, а навстречу ему заяц:

— Колобок, колобок! Я тебя съем!

— Не ешь меня, косой зайчик! Я тебе песенку спою, — сказал колобок и запел:

Я по коробу скребен,
По сусеку метен,
На сметане мешон
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
От тебя, зайца, не хитро уйти!

И покатился себе дальше; только заяц его и видел!..

Катится колобок, а навстречу ему волк:

— Колобок, колобок! Я тебя съем!

— Не ешь меня, серый волк! Я тебе песенку спою!

Я по коробу скребен,
По сусеку метен,
На сметане мешон
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
От тебя, волка, не хитро уйти!

И покатился себе дальше; только волк его и видел!..

Катится колобок, а навстречу ему динозавр:

— Колобок, колобок! Я тебя съем.

— Где тебе, хвостатому, съесть меня!

Я по коробу скребен,
По сусеку метен,
На сметане мешон
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
Я от волка ушел,
От тебя, динозавр, не хитро уйти!

И опять укатился; только динозавр его и видел!..

Катится, катится колобок, а навстречу ему лиса:

— Здравствуй, колобок! Какой ты хорошенький!

А колобок запел:

Я по коробу скребен,
По сусеку метен,
На сметане мешон
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
Я от волка ушел,
От динозавра ушел,
От тебя, лиса, и подавно уйду!

— Какая славная песенка! — сказала лиса. — Но ведь я, колобок, стара стала, плохо слышу; сядь-ка на мою мордочку да пропой еще разок погромче.

Колобок вскочил лисе на мордочку и запел ту же песню.

— Спасибо, колобок! Славная песенка, еще бы послушала! Сядь-ка на мой язычок да пропой в последний разок, — сказала лиса и высунула свой язык.

Колобок прыг ей на язык, а лиса — ам его! — и скушала.

Как видите, RAG относительно простая вещь. А с библиотекой искусственного интеллекта для 1С это становится просто, как раз-два-три.

Автор: exwill

Источник

Рейтинг@Mail.ru
Rambler's Top100