Создание поисковой системы уровня Google с помощью Vertex AI

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.

2d055ded874603a6.png

Как работает приложение

  • Загрузите свои данные : пользователи могут загружать свои собственные данные, например PDF-файл, в качестве входных данных.
  • Задавайте вопросы в строке поиска . Пользователи могут задавать вопросы в строке поиска на основе загруженных данных.
  • Получение ответов : пользователи могут получать результаты поиска/кандидатов и проверять фактичность/обоснованность полученного ответа на основе релевантности запроса.

2. Настройка среды

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего проекта Google Cloud включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud. Чтобы получить к нему доступ, нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

1829c3759227c19b.png

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что для проекта установлен идентификатор вашего проекта, используя следующую команду:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
  1. Убедитесь, что включены следующие API:
  • Облачный бег
  • Вертексный ИИ
  • Облачное хранилище

Альтернативой использованию команды gcloud является переход через консоль по этой ссылке . Обратитесь к документации по командам и использованию gcloud.

3. Шаг 1. Создайте сегмент GCP

  • Перейдите в консоль и в строке поиска введите Cloud Storage.
  • Выберите облачное хранилище из предложенных результатов. 21d2bc910e71f7ec.png
  • Нажмите «Создать сегмент».

adf5c0382f6c3540.png

  • Укажите глобально уникальное имя для сегмента.
  • Нажмите «Продолжить».
  • В поле «Тип местоположения» выберите «Мультирегиональный».
  • В раскрывающемся списке обязательно выберите вариант us (multiple regions in United States)

731aad7d8497725.png

  • Нажмите «Создать сегмент».

f7ac409ed9c4af21.png

  • После создания сегмента загрузите alphabet-metadata.json из репозитория.

4. Шаг 2. Создайте хранилище данных Vertex AI.

  • В строке поиска на странице консоли введите «Vertex AI Agent Builder».
  • Выберите первый продукт «Agent Builder».

c4a67b92bb7900e3.png

  • На странице Agent Builder нажмите «Хранилища данных», как показано на левой панели навигации.

f86f67d344d398fb.png

  • Нажмите «Создать хранилище данных».

e64e771f33543f46.png

  • Выберите облачное хранилище в качестве хранилища данных.
  • Нажмите «Выбрать» под значком облачного хранилища.

3a8d22888e7eedc2.png

  • На вкладке под опцией «Папка» нажмите кнопку «Обзор».
  • Выберите сегмент, который вы создали на шаге 1.
  • В приведенных ниже параметрах обязательно выберите «Связанные неструктурированные документы (JSONL с метаданными)».
  • Нажмите Продолжить

13876b5d12dbe1fb.png

  • На странице конфигурации выберите «глобальный» в качестве местоположения вашего хранилища данных.
  • Укажите идентифицируемое имя для вашего хранилища данных.
  • Нажмите «Создать».

618b7a456fbffad4.png

Брауни:

  • Чуть выше кнопки «Создать» вы можете увидеть опцию обработки документа.
  • Вы можете поэкспериментировать с различными анализаторами, такими как цифровой, OCR или анализатор макета.
  • Вы также можете включить расширенное разбиение на фрагменты и указать свои собственные ограничения на размер фрагментов.

38471c1d3411610d.png

5. Шаг 3: Создайте агента

  • После создания хранилища данных щелкните приложение на панели навигации слева и выберите «Приложения».
  • Нажмите кнопку «Создать приложение».
  • Выберите тип приложения «Поиск» (вы также можете создавать агентов, диалоговых ботов, рекомендации и т. д.).

ae5294e33f63567c.png

  • Убедитесь, что вы выбрали «Общий» в разделе «Содержимое». Вы также можете выбрать «Медиа» или «Рекомендации» в зависимости от хранилища данных и типа данных и систем, которые вы хотите создать.
  • Обязательно включите функции Enterprise Edition и Advanced LLM.
  • Укажите название вашего приложения
  • Укажите название вашей компании

f8a41c9751f7a8d3.png

  • Обязательно выберите регион как «глобальный».
  • Нажмите «Продолжить» ed17b18e094ba59a.png
  • На следующем экране выберите хранилище данных, созданное на шаге 2.
  • Нажмите «Создать»

bc77006e0025ae9e.png

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.

592103eb61c16738.png

  • Нажмите «Создать услугу».
  • На следующей странице убедитесь, что выбран вариант «Развернуть одну ревизию из существующего образа контейнера».
  • Ниже нажмите «Выбрать»
  • Теперь справа появится панель навигации.
  • Обязательно проверьте, выбран ли «Реестр артефактов» в качестве вкладки.
  • Обязательно проверьте правильность выбора проекта
  • Нажмите на стрелку, чтобы развернуть аккордеон на ссылке на образ развернутого контейнера.
  • Выберите тег контейнера и разверните его (всегда выбирайте самые последние развернутые — с правильными последними тегами, например v1, v2 и т. д.).
  • Нажмите на изображение контейнера, показанное под именем тега контейнера.

aac35d55d7dd874e.png

  • В области настройки
  • Укажите имя службы для вашего приложения Cloud Run (оно будет частью URL-адреса при развертывании приложения в Cloud Run).
  • Выберите соответствующий регион (в данном случае us-central1 или любой другой по вашему выбору)
  • Под аутентификацией
  • Убедитесь, что выбран параметр «Разрешить неаутентифицированные вызовы».
  • В разделе «Распределение ЦП и цены»
  • Выберите «ЦП выделяется только во время обработки запроса».
  • Измените автоматическое масштабирование службы на 1 (для производственных целей рекомендуется иметь минимальное количество запущенных экземпляров для обработки ежедневного трафика, вы даже можете оставить его 0, т.е. ноль).
  • Установите для параметра «Входящий контроль» значение «Все», чтобы разрешить трафику из Интернета доступ к вашему приложению.
  • Нажмите «Создать»
  • При этом будет развернут экземпляр Cloud Run, и его подготовка займет несколько минут.

b8b147265b8d457b.png

  • После развертывания вы сможете увидеть общедоступный URL-адрес, по которому вы можете получить доступ к своему веб-приложению.

1dfdb007c52581a1.png

8. Как все это работает

  • На главной странице приложения нажмите кнопку «Загрузить документ».
  • Загрузите свой PDF-файл
  • Как только загрузка будет завершена
  • Нажмите на панель поиска в верхней части веб-страницы.
  • Начните поиск запросов, связанных с загруженным вами документом.
  • После того, как вы введете запрос и нажмете «Поиск», он должен отобразить все соответствующие ответы из только что загруженного документа.
  • Вы можете поиграть, заглянув в внутренний код, и добавить дополнительные конфигурации, как показано ниже.
  • Добавление фрагментов
  • Добавление добывающих сегментов
  • Добавление ответов
  • Настройка результатов Top-k, чтобы помочь LLM обобщить ответ (что-то вроде обзора AI в поиске Google).
  • В качестве дополнения вы также можете добавлять теги метаданных при загрузке документа. Это поможет генерировать фасеты и фильтруемые категории.

9. Очистка

Чтобы избежать взимания платы с вашей учетной записи Google Cloud за ресурсы, используемые в этой лаборатории кода, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
  3. В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.
  4. Альтернативно вы можете перейти в Cloud Run на консоли, выбрать только что развернутую службу и удалить ее.

10. Поздравления

Поздравляем! Вы успешно создали быструю готовую систему RAG, используя новейшие модели Google, и обеспечиваете качественные результаты Google по вашим поисковым запросам. Эта кодовая лаборатория предназначена только для демонстрационных целей, для случаев производственного использования необходимо установить дополнительные меры безопасности и ограждения. Ссылка на полный репозиторий здесь. Используя Google Cloud и выполнив всего 5 шагов, мы можем создать комплексную систему RAG, которая сможет предоставить вам результаты качества Google прямо из коробки за несколько минут. По мере развития генеративного ИИ и больших языковых моделей создание таких RAG-систем также помогает нам избежать ловушек галлюцинаций и появления нецитируемой информации.

Хотя это только отправная точка, мы можем творить чудеса с помощью полностью настраиваемых API-интерфейсов DIY RAG, которые обеспечивают еще большую прозрачность, мощность и эффективность для эффективной обработки каждой части конвейерного процесса.