- Notifications
You must be signed in to change notification settings - Fork5
Пример реализации вопрос-ответного бота по документации на базе YandexGPT и других сервисов Yandex Cloud.
License
yandex-cloud-examples/yc-yandexgpt-qa-bot-for-docs
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Языковая модель YandexGPT может использоваться для реализации сценариев ответа на вопросы по документации, набору регулирующих документов, базе знаний и т.д. Для того, чтобы модель опиралась на конкретный корпус документов, а не только на те данные, на которых она обучалась, рекомендуется использовать подход Retrieval-Augmented Generation.
- База знаний (набор документов) разбивается на фрагменты, которые переводятся в векторное представление (embedding) с помощью YandexGPT и сохраняются в векторную базу данных. Примерами таких баз данных являются OpenSearch, ChromaDB, LanceDB и т.д.
- Пользователь отправляет свой запрос к системе.
- Запрос переводится в векторное представление с помощью модели YandexGPT.
- В векторной базе данных происходит поиск фрагментов наиболее близких к запросу пользователя. В зависимости от размера фрагментов выбирается топ-n наиболее релевантных документов.
- Полученные документы, запрос пользователя и постановка задачи (промпт) передаются YandexGPT, которая генерирует финальный ответ, который возвращается пользователю.
В данном руководстве для реализации описанного сценария будут использоваться следующие сервисы Yandex Cloud.
- YandexGPT - большая языковая модель для построения embedding-ов по документам и ответов на вопросы.
- Yandex Managed Service for OpenSearch - Сервис для управления кластерами OpenSearch, который будет использоваться для хранения пар фрагментов документов и векторных представлений этих фрагментов.
- Yandex Object Storage - Объектное хранилище, в котором изначально хранятся файлы с базой знаний.
- Yandex DataSphere - Cервис для обучения ML-моделей и среда разработки на Python для взаимодействия с YandexGPT и OpenSearch.
Работа с векторной БД и языковой моделью YandexGPT будет осуществляться с помощью популярного фреймворка с открытым исходным кодомLangChain.
Подробные комментарии по работе с компонентами содержатся в файлах проекта, которые рекомендуется открыть вYandex DataSphere.
- Необходимо перейти в сервисOpenSearch и создать кластер поинструкции. Необходимо создать группу виртуальных хостов OpenSearch и группу виртуальных хостов Dashboards. Важно, чтобы кластер OpenSearch, Object Storage и DataSphere находились в одной подсети, например,default-ru-central1-a.
- Перейдите в сервисYandex Object Storage, создайте новый бакет и загрузите в него документы, по которым будет необходимо отвечать на вопросы.
- Перейдите в сервисYandex DataSphere и создайте в немсообщество ипроект, в котором можно будет запускать код на Python.
- Создайтеконнектор к Object Storage S3 в проекте DataSphere. Активируйте коннектор для работы с ним JupyterLab.
- В созданном проекте необходимо перейти во вкладку "Настройки" и указать:
Каталог по умолчанию: каталог, в котором созданы сервисы Yandex Managed Service for OpenSearch и YandexGPT.Сервисный аккаунт:сервисный аккаунт, который позволит обращаться к другим сервисам из проекта DataSphere. Важно, что сервисному аккаунту должны быть назначены ролиai.languageModels.user для доступа к модели YandexGPT,managed-opensearch.admin для работы с OpenSearch иvpc.user.Подсеть: укажите подсеть, в которой находятся сервисы OpenSearch и YandexGPT.
- Откройте проект в JupyterLab и склонируйте данный репозиторий с помощьюGit. При запуске рекомендуем использовать режим Dedicated.
- Откройте в проекте ноутбукYandexGPT_OpenSearch.ipynb и выполните все ячейки кода.
- Документы из объектного хранилища разбиваются на небольшие фрагменты размером
chunk_size. Размерchunk_sizeнужно выбирать исходя из нескольких показателей:- Допустимая длина контекста для эмбеддинг-модели. Yandex GPT Embeddings допускают 2048 токенов.
- Допустимый размер окна контекста большой языковой модели. Если мы хотим использовать в запросе top 3 результатов поиска, то 3*chunk_size+prompt_size+response_size должно не превышать длины контекста модели.
- Далее мы генерируем векторные эмбеддинги по фрагментам текста с помощью Yandex GPT Embedding API. Адаптер для работы с embeddings и моделью YandexGPT доступен в файлеYaGPT.py.
- Добавляем полученные вектора в OpenSearch.
- Тестируем извлечение релевантных фрагментов по запросу.
- Собираем цепочку для Retrieval-Augmented Generation и проверяем её работу.
About
Пример реализации вопрос-ответного бота по документации на базе YandexGPT и других сервисов Yandex Cloud.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.
