Home
Softono

Yc Yandexgpt Qa Bot For Docs

Open source Apache-2.0 Jupyter Notebook
26
Stars
5
Forks
0
Issues
4
Watchers
1 year
Last Commit

 About Yc Yandexgpt Qa Bot For Docs

Пример реализации вопрос-ответного бота по документации на базе YandexGPT и других сервисов Yandex Cloud.

Platforms

Web Self-hosted Cloud

Languages

Jupyter Notebook

Links

Need Help Installing Yc Yandexgpt Qa Bot For Docs?

We provide expert installation service for this software. Our team will install, configure, and secure Yc Yandexgpt Qa Bot For Docs on your server. plans start at just $30.

Yc Yandexgpt Qa Bot For Docs

View on GitHub

Retrieval-Augmented Generation на базе сервисов Yandex Cloud

Языковая модель YandexGPT может использоваться для реализации сценариев ответа на вопросы по документации, набору регулирующих документов, базе знаний и т.д. Для того, чтобы модель опиралась на конкретный корпус документов, а не только на те данные, на которых она обучалась, рекомендуется использовать подход Retrieval-Augmented Generation.

Архитектура Retrieval-Augmented Generation

Как выглядит сценарий работы?:

  1. База знаний (набор документов) разбивается на фрагменты, которые переводятся в векторное представление (embedding) с помощью YandexGPT и сохраняются в векторную базу данных. Примерами таких баз данных являются OpenSearch, ChromaDB, LanceDB и т.д.
  2. Пользователь отправляет свой запрос к системе.
  3. Запрос переводится в векторное представление с помощью модели YandexGPT.
  4. В векторной базе данных происходит поиск фрагментов наиболее близких к запросу пользователя. В зависимости от размера фрагментов выбирается топ-n наиболее релевантных документов.
  5. Полученные документы, запрос пользователя и постановка задачи (промпт) передаются YandexGPT, которая генерирует финальный ответ, который возвращается пользователю.

В данном руководстве для реализации описанного сценария будут использоваться следующие сервисы Yandex Cloud.

  1. YandexGPT - большая языковая модель для построения embedding-ов по документам и ответов на вопросы.
  2. Yandex Managed Service for OpenSearch - Сервис для управления кластерами OpenSearch, который будет использоваться для хранения пар фрагментов документов и векторных представлений этих фрагментов.
  3. Yandex Object Storage - Объектное хранилище, в котором изначально хранятся файлы с базой знаний.
  4. Yandex DataSphere - Cервис для обучения ML-моделей и среда разработки на Python для взаимодействия с YandexGPT и OpenSearch.

Работа с векторной БД и языковой моделью YandexGPT будет осуществляться с помощью популярного фреймворка с открытым исходным кодом LangChain.

Подробные комментарии по работе с компонентами содержатся в файлах проекта, которые рекомендуется открыть в Yandex DataSphere.

Пошаговая инструкция

  1. Необходимо перейти в сервис OpenSearch и создать кластер по инструкции. Необходимо создать группу виртуальных хостов OpenSearch и группу виртуальных хостов Dashboards. Важно, чтобы кластер OpenSearch, Object Storage и DataSphere находились в одной подсети, например, default-ru-central1-a.
  2. Перейдите в сервис Yandex Object Storage, создайте новый бакет и загрузите в него документы, по которым будет необходимо отвечать на вопросы.
  3. Перейдите в сервис Yandex DataSphere и создайте в нем сообщество и проект, в котором можно будет запускать код на Python.
  4. Создайте коннектор к Object Storage S3 в проекте DataSphere. Активируйте коннектор для работы с ним JupyterLab.
  5. В созданном проекте необходимо перейти во вкладку "Настройки" и указать:
  • Каталог по умолчанию: каталог, в котором созданы сервисы Yandex Managed Service for OpenSearch и YandexGPT.
  • Сервисный аккаунт: сервисный аккаунт, который позволит обращаться к другим сервисам из проекта DataSphere. Важно, что сервисному аккаунту должны быть назначены роли ai.languageModels.user для доступа к модели YandexGPT, managed-opensearch.admin для работы с OpenSearch и vpc.user.
  • Подсеть: укажите подсеть, в которой находятся сервисы OpenSearch и YandexGPT.
  1. Откройте проект в JupyterLab и склонируйте данный репозиторий с помощью Git. При запуске рекомендуем использовать режим Dedicated.
  2. Откройте в проекте ноутбук YandexGPT_OpenSearch.ipynb и выполните все ячейки кода.

Основные шаги в ноутбуке YandexGPT_OpenSearch

  1. Документы из объектного хранилища разбиваются на небольшие фрагменты размером chunk_size. Размер chunk_size нужно выбирать исходя из нескольких показателей:
    • Допустимая длина контекста для эмбеддинг-модели. Yandex GPT Embeddings допускают 2048 токенов.
    • Допустимый размер окна контекста большой языковой модели. Если мы хотим использовать в запросе top 3 результатов поиска, то 3*chunk_size+prompt_size+response_size должно не превышать длины контекста модели.
  2. Далее мы генерируем векторные эмбеддинги по фрагментам текста с помощью Yandex GPT Embedding API. Адаптер для работы с embeddings и моделью YandexGPT доступен в файле YaGPT.py.
  3. Добавляем полученные вектора в OpenSearch.
  4. Тестируем извлечение релевантных фрагментов по запросу.
  5. Собираем цепочку для Retrieval-Augmented Generation и проверяем её работу.