Используйте поиск и разговор в Google Vertex AI, чтобы создать чат-бота RAG.
Создайте чат-бота RAG с помощью поиска и общения в Google Vertex AI.
![Источник: Диаграмма автора](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*XCEYQvpqIiEj0rF3sU0W4Q.png)
Компания 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/](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/0*Nvl0esoP06oT00aK.jpeg)
В этой статье мы сосредоточимся на настройке чат-бота на базе крупных языковых моделей с использованием службы Vertex AI Search & Conversation от Google (в остальной части статьи мы будем называть ее Vertex AI Search).
Диаграмма решения
![Источник: Диаграмма автора](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*XCEYQvpqIiEj0rF3sU0W4Q.png)
Datastore (Хранилище данных)
- 5 бесплатных книг, чтобы освоить машинное обучение
- Проложение пути в совместном генерировании зрительных и языковых данных раскрытие силы генеративных вокенов с помощью MiniGPT-5
- Революционизация настройки языковых моделей достижение беспрецедентных результатов с помощью шумных вложений NEFTune.
В настоящее время Vertex AI Search поддерживает исходные данные в форматах html, pdf и csv.
![Источник: https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*CttP7mNwFGuAKEB25OVhbA.png)
Служба Vertex AI Search в настоящее время поддерживает исходные данные в форматах html, pdf и csv. Исходные данные собираются из поискового индекса Google (того же самого индекса, который используется для поиска Google). Это большое преимущество по сравнению с другими поставщиками, которые требуют отдельных механизмов для сбора информации с веб-сайтов.
Для неструктурированных данных (в настоящее время поддерживаются только pdf и html), файлы должны быть загружены в бакет Cloud Storage. Этот бакет хранения может находиться в любом доступном регионе.
⚠️ Хранилище данных в службе Vertex AI Search отличается от хранилища Cloud Storage. Оно схоже с так называемыми “векторными базами данных”, предлагаемыми другими поставщиками.
У каждого приложения на службе Vertex AI Search в настоящее время может быть свое собственное хранилище(а). В рамках одного приложения можно иметь несколько хранилищ данных.
![Источник: Снимок экрана автора из окружения GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*sLQq9m6pEmawtnEKsgIIlA.png)
В демонстрационных целях мы будем использовать образец студенческого справочника в формате 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](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*ou88SSq7rlpU5jhgNA9Teg.png)
Шаг 3 — Настройка приложения и хранилища данных:
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*zZHVwc5okMjq9cF_IOfAFA.png)
В консоли GCP найдите «Search and Conversation» и нажмите «Создать приложение». Выберите тип приложения Chat. Настройте приложение, указав название компании и агента. Примечание: агент доступен только в Глобальном регионе.
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*YGLoLYx9bwnOHXoRaIVPuA.png)
Затем создайте хранилище данных. Выберите «Cloud Storage» и выберите созданный в шаге 2 бакет.
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*fkHDgTe9DJrRoXTGJ0xtaw.png)
Затем вас попросят создать базу данных. Ещё раз, это на самом деле векторное хранилище данных, которое хранит вложения для семантического поиска и работы LLM.
Выберите «Cloud Storage». Затем выберите хранилище данных, которое мы создали на предыдущем шаге.
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*Mbk-03ubpE0EZ-C8cvVeiw.png)
После этого нажмите «Продолжить». Затем начнётся импорт вложений. Этот процесс займет от нескольких минут до часа, в зависимости от объема данных. Кроме того, у GCP есть клиентские библиотеки SDK с асинхронными клиентами, которые могут ускорить всю процедуру. В противном случае вы всегда можете использовать консоль GCP. По умолчанию она использует синхронные вызовы API.
Вы можете проверить прогресс импорта (вложения) в разделе активности.
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*xn5AqJ5ClWB5A01vicievA.png)
После завершения импорта перейдите на страницу «Предварительный просмотр» слева, она перекинет вас в консоль Dialogflow CX.
Шаг 4 — Dialogflow:
![Источник: Снимок экрана автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*_LLfi7hPWpWdoxgm3a99wQ.png)
На консоли Dialogflow нажмите «Стартовая страница». Откроется настройка хранилища данных справа. Вы можете выбрать несколько хранилищ данных (веб-сайт, PDF-файлы и т. д.) одновременно. В этом случае оставьте настройку для справочника студента, который мы создали на Шаге 3.
Найдите “Генератор” в настройках хранилища данных.
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*wB2Y43tHhG5qNxBwnCQmSA.png)
Добавьте следующую подсказку:
Вы виртуальный ассистент, работающий в Лучшем колледже. Вы будете давать общие советы студенту на основании справочника студента. Всегда отвечайте вежливо и конструктивно. Предыдущий разговор: $разговор \nЭто вопрос пользователя $последний-запрос-пользователя \nВот некоторые контекстуальные знания, которые вам нужно знать: $запрос.знание.ответы \nВаш ответ:
$разговор, $последний-запрос-пользователя, $запрос.знание.ответы – это параметры Dialogflow.
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*eJgf8uxwGl4vpGYtjV_wXw.png)
В поле «Входной параметр» введите $последний-запрос-пользователя. Это передаст вопрос пользователя генератору. В поле «Выходной параметр» введите $запрос.производственный.студентский-ассистент-ответ. Всегда не забывайте нажимать кнопку «Сохранить» в верхней части!
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*hDeW0BLfD4Ahzqt8zhRFiQ.png)
В поле «Говорит агент» не забудьте ввести $запрос.производственный.студентский-ассистент-ответ. Это обеспечит отображение вывода от генератора в чате агента.
Шаг 5 — Тестирование и интеграция:
Чтобы протестировать этого бота, вы можете либо кликнуть на симулятор «Тестового агента» в правом верхнем углу, либо использовать вкладку «Управление» слева для выбора интеграции. Я предпочитаю использовать «Мессенджер Dialogflow» для тестирования агента, так как это показывает мне окончательный формат ответа.
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*mHs16vxj9jJNb_vwNjGy4Q.png)
После того, как вы выберете «Мессенджер Dialogflow», выберите «включить невыигрышный API». Это только для тестирования. В реальном случае, в зависимости от ваших требований аутентификации, вы можете выбрать, хотите ли вы включить это.
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*9FVp0BebussBu9N5KtgpmA.png)
![Источник: скриншот автора из среды GCP](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*OQyJntmZEHa8YvJw-_BNBQ.png)
Теперь вы можете вводить свои вопросы. Ответы, сгенерированные RAG, будут основаны на PDF-справочнике студента. Он также содержит ссылку на страницу PDF-файла с нужной информацией в конце. Если вы на нее нажмете, вы перейдете на конкретную страницу PDF, содержащую эту информацию.