Используйте поиск и разговор в Google Vertex AI, чтобы создать чат-бота RAG.

Создайте чат-бота RAG с помощью поиска и общения в Google Vertex AI.

Источник: Диаграмма автора

Компания Google недавно выпустила свою управляемую службу RAG (Retrieval Augmented Generator), Vertex AI Search & Conversation, для использования в общедоступном режиме (GA — General Availability). Эта служба, ранее известная как Google Enterprise Search, дополняет уже процветающий рынок чат-ботов с использованием крупных языковых моделей (LLM — Large Language Model).

В этой статье мы предполагаем, что у вас есть некоторые знания о методологии RAG для создания чат-ботов на базе крупных языковых моделей. Диаграмма ниже, предоставленная компанией Langchain, хорошо введет вас в RAG:

Источник: https://python.langchain.com/docs/use_cases/question_answering/

В этой статье мы сосредоточимся на настройке чат-бота на базе крупных языковых моделей с использованием службы Vertex AI Search & Conversation от Google (в остальной части статьи мы будем называть ее Vertex AI Search).

Диаграмма решения

Источник: Диаграмма автора

Datastore (Хранилище данных)

В настоящее время Vertex AI Search поддерживает исходные данные в форматах html, pdf и csv.

Источник: https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store

Служба Vertex AI Search в настоящее время поддерживает исходные данные в форматах html, pdf и csv. Исходные данные собираются из поискового индекса Google (того же самого индекса, который используется для поиска Google). Это большое преимущество по сравнению с другими поставщиками, которые требуют отдельных механизмов для сбора информации с веб-сайтов.

Для неструктурированных данных (в настоящее время поддерживаются только pdf и html), файлы должны быть загружены в бакет Cloud Storage. Этот бакет хранения может находиться в любом доступном регионе.

⚠️ Хранилище данных в службе Vertex AI Search отличается от хранилища Cloud Storage. Оно схоже с так называемыми “векторными базами данных”, предлагаемыми другими поставщиками.

У каждого приложения на службе Vertex AI Search в настоящее время может быть свое собственное хранилище(а). В рамках одного приложения можно иметь несколько хранилищ данных.

Источник: Снимок экрана автора из окружения GCP

В демонстрационных целях мы будем использовать образец студенческого справочника в формате pdf, доступный в Интернете (https://www.bcci.edu.au/images/pdf/student-handbook.pdf). Обратите внимание: мы не связаны с этой организацией (это всего лишь образец pdf-файла, который мы нашли в Интернете…)

Шаг 1 – Подготовка файлов в формате pdf:

Разделите один справочник в формате pdf на несколько страниц с помощью Python. Это занимает всего несколько секунд.

from PyPDF2 import PdfWriter, PdfReaderinputpdf = PdfReader(open("student-handbook.pdf", "rb"))for i in range(len(inputpdf.pages)):    output = PdfWriter()    output.add_page(inputpdf.pages[i])    with open("./split_pdfs_student_handbook/document-page%s.pdf" % i, "wb") as outputStream:        output.write(outputStream)

Шаг 2 — Загрузка в бакет GCS:

Нам потребуется загрузить PDF-файлы в Google Cloud Storage. Вы можете сделать это через Google Console или использовать GCP SDK с любым выбранным вами языком.

Если требуется только один PDF-документ, для этой демонстрации достаточно будет использовать ‘clickops’.

Давайте поместим PDF-файлы в бакет Cloud Storage.

Источник: Снимок экрана автора из среды GCP

Шаг 3 — Настройка приложения и хранилища данных:

Источник: Снимок экрана автора из среды GCP

В консоли GCP найдите «Search and Conversation» и нажмите «Создать приложение». Выберите тип приложения Chat. Настройте приложение, указав название компании и агента. Примечание: агент доступен только в Глобальном регионе.

Источник: Снимок экрана автора из среды GCP

Затем создайте хранилище данных. Выберите «Cloud Storage» и выберите созданный в шаге 2 бакет.

Источник: Снимок экрана автора из среды GCP

Затем вас попросят создать базу данных. Ещё раз, это на самом деле векторное хранилище данных, которое хранит вложения для семантического поиска и работы LLM.

Выберите «Cloud Storage». Затем выберите хранилище данных, которое мы создали на предыдущем шаге.

Источник: Снимок экрана автора из среды GCP

После этого нажмите «Продолжить». Затем начнётся импорт вложений. Этот процесс займет от нескольких минут до часа, в зависимости от объема данных. Кроме того, у GCP есть клиентские библиотеки SDK с асинхронными клиентами, которые могут ускорить всю процедуру. В противном случае вы всегда можете использовать консоль GCP. По умолчанию она использует синхронные вызовы API.

Вы можете проверить прогресс импорта (вложения) в разделе активности.

Источник: Снимок экрана автора из среды GCP

После завершения импорта перейдите на страницу «Предварительный просмотр» слева, она перекинет вас в консоль Dialogflow CX.

Шаг 4 — Dialogflow:

Источник: Снимок экрана автора из среды GCP

На консоли Dialogflow нажмите «Стартовая страница». Откроется настройка хранилища данных справа. Вы можете выбрать несколько хранилищ данных (веб-сайт, PDF-файлы и т. д.) одновременно. В этом случае оставьте настройку для справочника студента, который мы создали на Шаге 3.

Найдите “Генератор” в настройках хранилища данных.

Источник: скриншот автора из среды GCP

Добавьте следующую подсказку:

Вы виртуальный ассистент, работающий в Лучшем колледже. Вы будете давать общие советы студенту на основании справочника студента. Всегда отвечайте вежливо и конструктивно. Предыдущий разговор: $разговор \nЭто вопрос пользователя $последний-запрос-пользователя \nВот некоторые контекстуальные знания, которые вам нужно знать: $запрос.знание.ответы \nВаш ответ:

$разговор, $последний-запрос-пользователя, $запрос.знание.ответы – это параметры Dialogflow.

Источник: скриншот автора из среды GCP

В поле «Входной параметр» введите $последний-запрос-пользователя. Это передаст вопрос пользователя генератору. В поле «Выходной параметр» введите $запрос.производственный.студентский-ассистент-ответ. Всегда не забывайте нажимать кнопку «Сохранить» в верхней части!

Источник: скриншот автора из среды GCP

В поле «Говорит агент» не забудьте ввести $запрос.производственный.студентский-ассистент-ответ. Это обеспечит отображение вывода от генератора в чате агента.

Шаг 5 — Тестирование и интеграция:

Чтобы протестировать этого бота, вы можете либо кликнуть на симулятор «Тестового агента» в правом верхнем углу, либо использовать вкладку «Управление» слева для выбора интеграции. Я предпочитаю использовать «Мессенджер Dialogflow» для тестирования агента, так как это показывает мне окончательный формат ответа.

Источник: скриншот автора из среды GCP

После того, как вы выберете «Мессенджер Dialogflow», выберите «включить невыигрышный API». Это только для тестирования. В реальном случае, в зависимости от ваших требований аутентификации, вы можете выбрать, хотите ли вы включить это.

Источник: скриншот автора из среды GCP
Источник: скриншот автора из среды GCP

Теперь вы можете вводить свои вопросы. Ответы, сгенерированные RAG, будут основаны на PDF-справочнике студента. Он также содержит ссылку на страницу PDF-файла с нужной информацией в конце. Если вы на нее нажмете, вы перейдете на конкретную страницу PDF, содержащую эту информацию.