1. Прежде чем начать
Прежде чем продолжить выполнение этого практического задания, следует учесть несколько моментов.
Предварительные требования
- Базовое понимание программ магистратуры в области права.
- Базовое понимание систем RAG
Что вы узнаете
- Как создать поисковую систему, обеспечивающую результаты, сопоставимые с результатами Google, которая сможет отвечать на ваши вопросы на основе загруженных вами данных.
- Как создать хранилище данных Vertex AI
- Как создать агентов Vertex AI
- Как использовать CloudRun для развертывания приложения
Что вам понадобится
- Учетная запись Google Cloud
- Проект Google Cloud
- Среда разработки с терминалом
Введение
Поиск Google — это мощный инструмент, использующий огромный индекс веб-страниц и другого контента для предоставления релевантных результатов на запросы пользователей. Это стало возможным благодаря технологии, называемой Retrieval Augmented Generation (RAG), которая является ключевой технологией в современном искусственном интеллекте.
RAG работает следующим образом: сначала извлекаются релевантные фрагменты текста из корпуса документов. Это делается с помощью различных методов, таких как сопоставление ключевых слов, семантическое сходство и машинное обучение. После извлечения релевантных фрагментов они используются для генерации резюме или ответа на запрос пользователя.
Главное преимущество RAG заключается в том, что он позволяет языковым моделям избегать галлюцинаций. Галлюцинация — это термин, используемый для описания генерации текста, который не подтверждается данными в корпусе документов. Это может происходить, когда языковые модели не способны различать релевантную и нерелевантную информацию.
RAG помогает избежать галлюцинаций, гарантируя, что сгенерированный текст всегда основан на данных из корпуса документов. Это делает его более надежным и заслуживающим доверия источником информации.
RAG — это мощная технология, используемая в самых разных приложениях, включая поисковые системы, чат-боты и системы ответов на вопросы. Вероятно, в ближайшие годы она будет играть все более важную роль в искусственном интеллекте.
Вот несколько примеров того, как RAG используется на практике:
- Многие поисковые системы используют алгоритм RAG для генерации результатов поиска, релевантных запросу пользователя.
- Чат-боты используют RAG для генерации информативных и увлекательных ответов на вопросы пользователей.
- Системы ответов на вопросы используют алгоритм RAG для генерации точных и исчерпывающих ответов на вопросы пользователей.
RAG — это универсальная технология, которую можно использовать для генерации текста в самых разных областях и приложениях. Это мощный инструмент, который помогает сделать искусственный интеллект более интеллектуальным и информативным.
В этом практическом занятии мы создадим систему RAG, которая поможет ответить на ваши вопросы, используя предоставленный вами корпус данных. Готовая платформа RAG под названием Vertex AI Search/Agent Builder позволяет ускорить создание систем RAG, избавляя вас от необходимости вручную собирать документы, анализировать, сегментировать, генерировать эмбеддинги, расширять запросы, искать и ранжировать кандидатов. В то время как готовая система RAG позволяет быстро начать работу, Google Cloud также предоставляет отдельные API для каждого процесса, чтобы вы могли создавать собственные системы RAG, которые помогут вам точно настроить их в соответствии с вашими бизнес-требованиями.
Что вы построите
К концу этого практического занятия у вас будет развернута работающая система RAG, которая сможет помочь ответить на ваши вопросы, предоставляя достоверную информацию, подкрепленную ссылками и обоснованную соответствующими источниками.
Вы также лучше поймете, как использовать API поиска Vertex AI для построения этой архитектуры RAG в Google Cloud. Кроме того, вы узнаете, как развернуть это приложение с архитектурой RAG (с фронтендом и бэкендом) на CloudRun, бессерверной платформе для развертывания приложений в виде контейнеров в Google Cloud.

Как работает приложение
- Загрузите свои данные : Пользователи могут загружать собственный массив данных, например, PDF-файл, в качестве входных данных.
- Задавайте запросы в строке поиска : Пользователи могут задавать вопросы в строке поиска на основе загруженного массива данных.
- Получение ответов : Пользователи могут получить результаты поиска/кандидаты и проверить достоверность/обоснованность полученного ответа в зависимости от релевантности запроса.
2. Настройка среды
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект 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 включены:
- Cloud Run
- Vertex AI
- Облачное хранилище
Альтернативой использованию команды gcloud является работа через консоль по этой ссылке . Для получения информации о командах и использовании gcloud обратитесь к документации .
3. Шаг 1: Создайте корзину GCP.
- Зайдите в консоль и в строке поиска введите «Облачное хранилище».
- Выберите облачное хранилище из предложенных результатов.

- Нажмите «Создать корзину».

- Присвойте контейнеру уникальное глобальное имя.
- Нажмите «Продолжить»
- В поле «Тип местоположения» выберите «Многорегиональный».
- В выпадающем списке обязательно выберите опцию
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: Создайте Docker-контейнер для вашего приложения.
- Откройте терминал в консоли Google Cloud.
- Клонируйте репозиторий <sample_repository_link> с помощью следующей команды.
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- Перейдите в каталог и откройте клонированный репозиторий, используя следующую команду.
cd vertex-ai-search-agent-builder-demo
- Структура папок
- Backend — это реализация API на Python, которая поможет создать RESTful-конечные точки для взаимодействия с вашим фронтендом.
- Фронтенд — это интерфейсная часть приложения, работающая на React и отвечающая за пользовательский интерфейс. Он также будет содержать необходимые вызовы к бэкенду на уровне приложения через REST-эндпоинты.
- Dockerfile — этот файл содержит все необходимые команды для создания контейнера Docker.
- В корневом каталоге репозитория выполните следующую команду, которая поможет создать образ Docker (примечание: обязательно используйте флаг
- - platformпри создании контейнеров Docker на 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 Artifact Registry (GAR). GAR — это полностью управляемая платформа от Google, которая помогает управлять контейнерами Docker и контролировать их версии. Выполните следующую команду, чтобы загрузить помеченный выше контейнер в 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 обобщить ответ (что-то вроде обзора ИИ в поиске Google).
- В качестве дополнения вы также можете добавлять метаданные при загрузке документа. Это поможет создавать фасеты и фильтруемые категории.
9. Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этом практическом задании, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.
- В качестве альтернативы вы можете перейти в Cloud Run в консоли, выбрать только что развернутую службу и удалить ее.
10. Поздравляем!
Поздравляем! Вы успешно создали быструю готовую систему RAG, используя передовые модели Google, для получения результатов поисковых запросов качества Google. Этот пример предназначен только для демонстрации; для использования в производственных условиях необходимо настроить дополнительные меры безопасности и ограничения. Ссылка на полный репозиторий находится здесь. Используя Google Cloud и всего за 5 шагов, мы можем создать комплексную систему RAG, которая за несколько минут обеспечит вам результаты качества Google. По мере развития генеративного ИИ и больших языковых моделей, создание таких систем RAG также помогает нам избежать ловушек, связанных с иллюзией и появлением нецитируемой информации.
Хотя это всего лишь отправная точка, мы можем творить чудеса с помощью полностью настраиваемых API RAG, которые позволяют вам добиться еще большей прозрачности, мощности и эффективности для эффективного управления каждым этапом процесса конвейера.