1. Прежде чем начать
Прежде чем продолжить эту лабораторную работу, следует обратить внимание на несколько вещей.
Предварительные условия
- Базовое понимание LLM
- Базовое понимание систем RAG
Что вы узнаете
- Как создать качественную поисковую систему Google, которая сможет ответить на ваши вопросы на основе загружаемых вами данных
- Как создать хранилище данных Vertex AI
- Как создать агенты Vertex AI
- Как использовать CloudRun для развертывания приложения
Что вам понадобится
- Учетная запись Google Cloud
- Проект Google Cloud
- IDE с терминалом
Введение
Поиск Google — это мощный инструмент, который использует массивный индекс веб-страниц и другого контента для предоставления релевантных результатов по запросам пользователей. Это стало возможным благодаря технологии под названием «Поисковая дополненная генерация» (RAG), которая является ключевой технологией в современном искусственном интеллекте.
RAG работает, сначала извлекая соответствующие отрывки из корпуса документов. Это делается с использованием различных методов, таких как сопоставление ключевых слов, семантическое сходство и машинное обучение. После извлечения соответствующих отрывков они используются для создания резюме или ответа на запрос пользователя.
Основное преимущество RAG заключается в том, что он позволяет языковым моделям избегать галлюцинаций. Галлюцинация — это термин, используемый для описания генерации текста, который не подтверждается доказательствами в корпусе документов. Это может произойти, когда языковые модели не способны различать релевантную и нерелевантную информацию.
RAG помогает избежать галлюцинаций, гарантируя, что сгенерированный текст всегда основан на доказательствах из корпуса документов. Это делает его более надежным и заслуживающим доверия источником информации.
RAG — это мощная технология, которая используется в различных приложениях, включая поисковые системы, чат-боты и системы ответов на вопросы. Вероятно, в ближайшие годы он будет играть все более важную роль в сфере ИИ.
Вот несколько примеров того, как RAG используется на практике:
- Многие поисковые системы используют RAG для создания результатов поиска, соответствующих запросу пользователя.
- Чат-боты используют RAG для генерации информативных и интересных ответов на вопросы пользователей.
- Системы ответов на вопросы используют RAG для генерации точных и полных ответов на вопросы пользователей.
RAG — это универсальный метод, который можно использовать для генерации текста в различных областях и приложениях. Это мощный инструмент, который помогает сделать ИИ более интеллектуальным и информативным.
В этой лаборатории кода мы создадим систему RAG, которая поможет ответить на ваши вопросы с помощью предоставленного корпуса, загруженного вами. Готовая платформа RAG под названием Vertex AI Search/Agent Builder помогает ускорить создание систем RAG, избегая, таким образом, ручных усилий по сбору документов, их синтаксическому анализу, фрагментированию, созданию вложений, расширению запросов, поиску и ранжированию кандидатов. В то время как готовая система RAG помогает вам быстро приступить к работе, Google Cloud также предоставляет отдельные API для каждого процесса для создания собственных систем RAG своими руками, которые помогают точно настроить ваши системы RAG в соответствии с требованиями вашего бизнеса.
Что ты построишь
К концу этой лабораторной работы у вас будет развернута работающая система RAG, которая поможет ответить на ваши вопросы, используя фактическую информацию, обоснованную и цитируемую с правильными ссылками.
Вы также лучше поймете, как использовать API-интерфейсы Vertex AI Search для создания архитектуры RAG в Google Cloud. В дополнение к этому вы также узнаете, как развернуть это приложение с архитектурой RAG (с внешним и внутренним интерфейсом) на CloudRun, который представляет собой бессерверную платформу для развертывания приложений в виде контейнеров в Google Cloud.
Как работает приложение
- Загрузите свои данные : пользователи могут загружать свои собственные данные, например PDF-файл, в качестве входных данных.
- Задавайте вопросы в строке поиска . Пользователи могут задавать вопросы в строке поиска на основе загруженных данных.
- Получение ответов : пользователи могут получать результаты поиска/кандидатов и проверять фактичность/обоснованность полученного ответа на основе релевантности запроса.
2. Настройка среды
- В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего проекта Google Cloud включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud. Чтобы получить к нему доступ, нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.
- После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что для проекта установлен идентификатор вашего проекта, используя следующую команду:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
- Убедитесь, что включены следующие API:
- Облачный бег
- Вертексный ИИ
- Облачное хранилище
Альтернативой использованию команды gcloud является переход через консоль по этой ссылке . Обратитесь к документации по командам и использованию gcloud.
3. Шаг 1. Создайте сегмент GCP
- Перейдите в консоль и в строке поиска введите Cloud Storage.
- Выберите облачное хранилище из предложенных результатов.
- Нажмите «Создать сегмент».
- Укажите глобально уникальное имя для сегмента.
- Нажмите «Продолжить».
- В поле «Тип местоположения» выберите «Мультирегиональный».
- В раскрывающемся списке обязательно выберите вариант
us (multiple regions in United States)
- Нажмите «Создать сегмент».
- После создания сегмента загрузите
alphabet-metadata.json
из репозитория.
4. Шаг 2. Создайте хранилище данных Vertex AI.
- В строке поиска на странице консоли введите «Vertex AI Agent Builder».
- Выберите первый продукт «Agent Builder».
- На странице Agent Builder нажмите «Хранилища данных», как показано на левой панели навигации.
- Нажмите «Создать хранилище данных».
- Выберите облачное хранилище в качестве хранилища данных.
- Нажмите «Выбрать» под значком облачного хранилища.
- На вкладке под опцией «Папка» нажмите кнопку «Обзор».
- Выберите сегмент, который вы создали на шаге 1.
- В приведенных ниже параметрах обязательно выберите «Связанные неструктурированные документы (JSONL с метаданными)».
- Нажмите Продолжить
- На странице конфигурации выберите «глобальный» в качестве местоположения вашего хранилища данных.
- Укажите идентифицируемое имя для вашего хранилища данных.
- Нажмите «Создать».
Брауни:
- Чуть выше кнопки «Создать» вы можете увидеть опцию обработки документа.
- Вы можете поэкспериментировать с различными анализаторами, такими как цифровой, OCR или анализатор макета.
- Вы также можете включить расширенное разбиение на фрагменты и указать свои собственные ограничения на размер фрагментов.
5. Шаг 3: Создайте агента
- После создания хранилища данных щелкните приложение на панели навигации слева и выберите «Приложения».
- Нажмите кнопку «Создать приложение».
- Выберите тип приложения «Поиск» (вы также можете создавать агентов, диалоговых ботов, рекомендации и т. д.).
- Убедитесь, что вы выбрали «Общий» в разделе «Содержимое». Вы также можете выбрать «Медиа» или «Рекомендации» в зависимости от хранилища данных и типа данных и систем, которые вы хотите создать.
- Обязательно включите функции Enterprise Edition и Advanced LLM.
- Укажите название вашего приложения
- Укажите название вашей компании
- Обязательно выберите регион как «глобальный».
- Нажмите «Продолжить»
- На следующем экране выберите хранилище данных, созданное на шаге 2.
- Нажмите «Создать»
6. Шаг 4. Докеризируйте свое приложение
- Откройте свой терминал в консоли Google Cloud.
- Клонируйте репозиторий <sample_repository_link>, используя следующую команду
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- Измените каталог и перейдите к клонированному репозиторию, используя следующую команду
cd vertex-ai-search-agent-builder-demo
- Структура папок
- Бэкэнд. Здесь будет реализована реализация API на основе Python, которая поможет создать спокойные конечные точки для взаимодействия с вашим интерфейсом.
- Интерфейс — он будет содержать приложение на основе реагирования и обслуживать пользовательский интерфейс. Он также будет содержать необходимые вызовы уровня приложения к бэкэнду через конечные точки отдыха.
- Dockerfile — этот файл будет содержать все необходимые команды для создания докер-контейнера.
- В корне каталога репозитория выполните следующую команду, которая поможет создать образ докера (примечание: обязательно используйте флаг
- - platform
при создании контейнеров докеров в Macbook, которые используют чипы Apple Silicon, такие как M1, M2 и т. д. Этот флаг не используется). необходимо, если вы собираете машину с Windows или если ваша архитектура ЦП основана на Intel)
docker build --platform linux/amd64 -t your-image-name .
- После успешной сборки контейнера Docker выполните следующую команду, чтобы пометить контейнер правильными тегами и убедиться, что вы предоставили версию своего образа. Помните, что может существовать несколько версий приложения и, следовательно, несколько версий в виде тегов в контейнерах Docker. С точки зрения DevOps рекомендуется всегда обеспечивать использование последней стабильной версии.
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Как только тегирование образа Docker-контейнера будет успешным, давайте теперь отправим изображение в реестр артефактов Google (GAR). GAR — это полностью управляемая платформа от Google, которая помогает управлять вашими докер-контейнерами и контролировать их версии. Запустите следующую команду, которая отправит указанный выше контейнер с тегами в GAR. Для получения дополнительной информации перейдите по следующей ссылке [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling ]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. Шаг 5. Разверните приложение в Cloud Run.
- Сверните свой терминал. В строке поиска консоли Google Cloud найдите Cloud Run.
- Нажмите на предложенный продукт Cloud Run.
- Нажмите «Создать услугу».
- На следующей странице убедитесь, что выбран вариант «Развернуть одну ревизию из существующего образа контейнера».
- Ниже нажмите «Выбрать»
- Теперь справа появится панель навигации.
- Обязательно проверьте, выбран ли «Реестр артефактов» в качестве вкладки.
- Обязательно проверьте правильность выбора проекта
- Нажмите на стрелку, чтобы развернуть аккордеон на ссылке на образ развернутого контейнера.
- Выберите тег контейнера и разверните его (всегда выбирайте самые последние развернутые — с правильными последними тегами, например v1, v2 и т. д.).
- Нажмите на изображение контейнера, показанное под именем тега контейнера.
- В области настройки
- Укажите имя службы для вашего приложения Cloud Run (оно будет частью URL-адреса при развертывании приложения в Cloud Run).
- Выберите соответствующий регион (в данном случае us-central1 или любой другой по вашему выбору)
- Под аутентификацией
- Убедитесь, что выбран параметр «Разрешить неаутентифицированные вызовы».
- В разделе «Распределение ЦП и цены»
- Выберите «ЦП выделяется только во время обработки запроса».
- Измените автоматическое масштабирование службы на 1 (для производственных целей рекомендуется иметь минимальное количество запущенных экземпляров для обработки ежедневного трафика, вы даже можете оставить его 0, т.е. ноль).
- Установите для параметра «Входящий контроль» значение «Все», чтобы разрешить трафику из Интернета доступ к вашему приложению.
- Нажмите «Создать»
- При этом будет развернут экземпляр Cloud Run, и его подготовка займет несколько минут.
- После развертывания вы сможете увидеть общедоступный URL-адрес, по которому вы можете получить доступ к своему веб-приложению.
8. Как все это работает
- На главной странице приложения нажмите кнопку «Загрузить документ».
- Загрузите свой PDF-файл
- Как только загрузка будет завершена
- Нажмите на панель поиска в верхней части веб-страницы.
- Начните поиск запросов, связанных с загруженным вами документом.
- После того, как вы введете запрос и нажмете «Поиск», он должен отобразить все соответствующие ответы из только что загруженного документа.
- Вы можете поиграть, заглянув в внутренний код, и добавить дополнительные конфигурации, как показано ниже.
- Добавление фрагментов
- Добавление добывающих сегментов
- Добавление ответов
- Настройка результатов Top-k, чтобы помочь LLM обобщить ответ (что-то вроде обзора AI в поиске Google).
- В качестве дополнения вы также можете добавлять теги метаданных при загрузке документа. Это поможет генерировать фасеты и фильтруемые категории.
9. Очистка
Чтобы избежать взимания платы с вашей учетной записи Google Cloud за ресурсы, используемые в этой лаборатории кода, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.
- Альтернативно вы можете перейти в Cloud Run на консоли, выбрать только что развернутую службу и удалить ее.
10. Поздравления
Поздравляем! Вы успешно создали быструю готовую систему RAG, используя новейшие модели Google, и обеспечиваете качественные результаты Google по вашим поисковым запросам. Эта кодовая лаборатория предназначена только для демонстрационных целей, для случаев производственного использования необходимо установить дополнительные меры безопасности и ограждения. Ссылка на полный репозиторий здесь. Используя Google Cloud и выполнив всего 5 шагов, мы можем создать комплексную систему RAG, которая сможет предоставить вам результаты качества Google прямо из коробки за несколько минут. По мере развития генеративного ИИ и больших языковых моделей создание таких RAG-систем также помогает нам избежать ловушек галлюцинаций и появления нецитируемой информации.
Хотя это только отправная точка, мы можем творить чудеса с помощью полностью настраиваемых API-интерфейсов DIY RAG, которые обеспечивают еще большую прозрачность, мощность и эффективность для эффективной обработки каждой части конвейерного процесса.