Codelab: создайте чат-бота с рекомендациями фильмов с помощью Neo4j и Vertex AI
О практической работе
1. Обзор
В этой лаборатории вы создадите интеллектуального чат-бота для рекомендаций фильмов, используя комбинацию Neo4j, Vertex AI и Gemini. Чат-бот использует график знаний Neo4j в качестве основы для представления фильмов, актеров, режиссеров, продюсеров, жанров и т. д. Чтобы улучшить качество поиска, вы создадите векторные вложения из обзоров сюжетов фильмов с помощью модели Vertex AI text-embedding-004
.
Наконец, вы интегрируете Gemini для создания диалогового интерфейса, в котором пользователи смогут задавать вопросы на естественном языке, например: «Что мне посмотреть, если мне понравился «Интерстеллар»?» и получайте персонализированные предложения фильмов, основанные на семантическом сходстве и графическом контексте.
Используя кодовую лабораторию, вы будете применять пошаговый подход следующим образом:
- Создайте диаграмму знаний Neo4j с данными, связанными с фильмами.
- Обогащайте данные фильма, создавая встраивания текста в обзоры/сюжеты фильмов с помощью встраивания текста Vertex AI.
- Создайте интерфейс чат-бота Gradio на базе Gemini для семантического поиска и извлечения информации из Neo4j, который объединяет все воедино.
- При желании разверните его в Google Cloud Run как отдельное веб-приложение, как показано ниже:
Что вы узнаете
- Как построить график знаний о фильмах с помощью Cypher и Neo4j.
- Как использовать Vertex AI для создания семантических вложений текста.
- Как интегрировать Neo4j и Gemini для интеллектуального векторного поиска.
- Как создать и запустить пользовательский интерфейс диалогового чат-бота с помощью Gradio.
Что вам понадобится
- Веб-браузер Chrome
- Учетная запись Gmail
- Проект Google Cloud с включенной оплатой
- Бесплатная учетная запись Neo4j Aura DB.
- Базовое знание команд терминала и Python.
Эта лаборатория кода, предназначенная для разработчиков всех уровней (включая новичков), использует Python и Neo4j в своем примере приложения. Хотя базовое знакомство с Python и графовыми базами данных может быть полезным, для понимания концепций или дальнейшего развития не требуется никакого предварительного опыта.
2. Настройка Neo4j AuraDB
Neo4j — это ведущая база данных на основе графов, в которой данные хранятся в виде сети узлов (сущностей) и отношений (связей между сущностями), что делает ее идеальной для случаев использования, где понимание связей является ключевым моментом, например для рекомендаций, обнаружения мошенничества, графов знаний и многого другого. В отличие от реляционных или документальных баз данных, которые полагаются на жесткие таблицы или иерархические структуры, гибкая графовая модель Neo4j обеспечивает интуитивное и эффективное представление сложных взаимосвязанных данных.
Вместо организации данных в строках и таблицах, как в реляционных базах данных, Neo4j использует графовую модель , где информация представлена в виде узлов (сущностей) и отношений (связей между этими сущностями). Эта модель делает ее исключительно интуитивно понятной для работы с данными, которые по своей сути связаны, например, с людьми, местами, продуктами или, в нашем случае, фильмами, актерами и жанрами.
Например, в наборе данных фильма:
- Узел может представлять
Movie
,Actor
илиDirector
- Отношения могут быть
ACTED_IN
илиDIRECTED
Эта структура позволяет вам легко задавать такие вопросы, как:
- В каких фильмах снимался этот актер?
- Кто работал с Кристофером Ноланом?
- Какие похожие фильмы основаны на общих актерах или жанрах?
Neo4j поставляется с мощным языком запросов Cypher , разработанным специально для запросов к графам. Cypher позволяет выражать сложные закономерности и связи в краткой и читаемой форме.
Neo4j предлагает несколько вариантов развертывания в зависимости от ваших потребностей:
- Самоуправляемое : запускайте Neo4j в собственной инфраструктуре с помощью Neo4j Desktop или в виде образа Docker (локально или в собственном облаке).
- Облачное управление : разверните Neo4j на популярных облачных провайдерах, используя предложения рынка.
- Полностью управляемое : используйте Neo4j AuraDB , полностью управляемую облачную базу данных Neo4j, работающую по принципу «как услуга», которая обеспечивает предоставление, масштабирование, резервное копирование и безопасность за вас.
В этой кодовой лаборатории мы будем использовать Neo4j AuraDB Free , уровень AuraDB с нулевой стоимостью. Он предоставляет полностью управляемый экземпляр графовой базы данных с достаточным объемом памяти и функциями для прототипирования, обучения и создания небольших приложений — идеально подходит для нашей цели по созданию чат-бота для рекомендаций фильмов на базе GenAI.
Вы создадите бесплатный экземпляр AuraDB, подключите его к своему приложению, используя учетные данные подключения, и будете использовать его для хранения и запроса графика знаний о фильмах на протяжении всей лабораторной работы.
Почему графики?
В традиционных реляционных базах данных ответы на такие вопросы, как «Какие фильмы похожи на «Начало» по общему актерскому составу или жанру?» потребует сложных операций JOIN для нескольких таблиц. По мере роста глубины отношений производительность и читаемость ухудшаются.
Однако графовые базы данных, такие как Neo4j, созданы для эффективного отслеживания связей , что делает их естественными для систем рекомендаций, семантического поиска и интеллектуальных помощников. Они помогают уловить реальный контекст — например, сети сотрудничества, сюжетные линии или предпочтения зрителей — который может быть трудно представить с помощью традиционных моделей данных.
Объединив эти связанные данные с LLM, такими как Gemini , и векторными встраиваниями от Vertex AI , мы можем улучшить работу чат-бота, позволяя ему рассуждать, извлекать информацию и реагировать более персонализированным и релевантным способом.
Neo4j AuraDB Бесплатное создание
- Посетите https://console.neo4j.io.
- Войдите в свою учетную запись Google или электронную почту.
- Нажмите «Создать бесплатный экземпляр».
- Во время подготовки экземпляра появится всплывающее окно с учетными данными для подключения к вашей базе данных.
Обязательно скачайте и надежно сохраните из всплывающего окна следующие данные — они необходимы для подключения вашего приложения к Neo4j:
NEO4J_URI=neo4j+s://<your-instance-id>.databases.neo4j.io
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=<your-generated-password>
AURA_INSTANCEID=<your-instance-id>
AURA_INSTANCENAME=<your-instance-name>
Вы будете использовать эти значения для настройки файла .env в своем проекте для аутентификации с помощью Neo4j на следующем шаге.
Neo4j AuraDB Free хорошо подходит для разработки, экспериментирования и небольших приложений, таких как эта лаборатория кода. Он предлагает щедрые ограничения на использование, поддерживая до 200 000 узлов и 400 000 связей . Хотя он предоставляет все основные функции, необходимые для построения и запроса графа знаний, он не поддерживает расширенные конфигурации, такие как пользовательские плагины или увеличенное хранилище. Для производственных рабочих нагрузок или больших наборов данных вы можете перейти на план AuraDB более высокого уровня, который предлагает большую емкость, производительность и функции корпоративного уровня.
На этом раздел о настройке бэкэнда Neo4j AuraDB завершен. На следующем этапе мы создадим проект Google Cloud, клонируем репозиторий и настроим необходимые переменные среды, чтобы подготовить вашу среду разработки, прежде чем мы начнем с нашей лаборатории кода.
3. Прежде чем начать
Создать проект
- В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq. Нажмите «Активировать 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 services enable cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
При успешном выполнении команды вы должны увидеть сообщение, подобное показанному ниже:
Operation "operations/..." finished successfully.
Альтернатива команде gcloud — через консоль, выполнив поиск по каждому продукту или воспользовавшись этой ссылкой .
Если какой-либо API пропущен, вы всегда можете включить его в ходе реализации.
Обратитесь к документации по командам и использованию gcloud.
Клонировать репозиторий и настроить среду настройки
Следующим шагом будет клонирование примера репозитория, на который мы будем ссылаться в остальной части лаборатории кода. Предполагая, что вы находитесь в Cloud Shell, введите следующую команду из своего домашнего каталога:
git clone https://github.com/sidagarwal04/neo4j-vertexai-codelab.git
Чтобы запустить редактор, нажмите «Открыть редактор» на панели инструментов окна Cloud Shell. Нажмите на строку меню в верхнем левом углу и выберите «Файл» → «Открыть папку», как показано ниже:
Выберите папку neo4j-vertexai-codelab
, и вы увидите открытую папку со следующими файлами, как показано ниже:
Далее нам нужно настроить переменные среды, которые будут использоваться во всей лаборатории кода. Нажмите на файл example.env
, и вы увидите его содержимое, как показано ниже:
NEO4J_URI=
NEO4J_USER=
NEO4J_PASSWORD=
NEO4J_DATABASE=
PROJECT_ID=
LOCATION=
Теперь создайте новый файл с именем .env
в той же папке, что и файл example.env
, и скопируйте содержимое существующего файла example.env. Теперь обновите следующие переменные:
-
NEO4J_URI
,NEO4J_USER
,NEO4J_PASSWORD
иNEO4J_DATABASE
: - Заполните эти значения, используя учетные данные, предоставленные при создании экземпляра Neo4j AuraDB Free на предыдущем шаге.
-
NEO4J_DATABASE
обычно установлено значение neo4j для AuraDB Free. -
PROJECT_ID
иLOCATION
: - Если вы запускаете лабораторию кода из Google Cloud Shell, вы можете оставить эти поля пустыми, поскольку они будут автоматически выведены из конфигурации вашего активного проекта.
- Если вы работаете локально или за пределами Cloud Shell, обновите
PROJECT_ID
, указав идентификатор проекта Google Cloud, который вы создали ранее, и задайте дляLOCATION
регион, выбранный вами для этого проекта (например, us-central1).
После заполнения этих значений сохраните файл .env
. Эта конфигурация позволит вашему приложению подключаться как к службам Neo4j, так и к службам Vertex AI.
Последним шагом в настройке среды разработки является создание виртуальной среды Python и установка всех необходимых зависимостей, перечисленных в файле requirements.txt
. Эти зависимости включают библиотеки, необходимые для работы с Neo4j, Vertex AI, Gradio и другими.
Сначала создайте виртуальную среду с именем .venv, выполнив следующую команду:
python -m venv .venv
После создания среды нам нужно будет активировать созданную среду с помощью следующей команды
source .venv/bin/activate
Теперь вы должны увидеть (.venv) в начале приглашения терминала, что указывает на то, что среда активна. Например: (.venv) yourusername@cloudshell:
Теперь установите необходимые зависимости, выполнив:
pip install -r requirements.txt
Вот снимок ключевых зависимостей, перечисленных в файле:
gradio>=4.0.0
neo4j>=5.0.0
numpy>=1.20.0
python-dotenv>=1.0.0
google-cloud-aiplatform>=1.30.0
vertexai>=0.0.1
После успешной установки всех зависимостей ваша локальная среда Python будет полностью настроена для запуска сценариев и чат-бота в этой лаборатории кода.
Большой ! Теперь мы готовы перейти к следующему шагу — пониманию набора данных и подготовке его к созданию графов и семантическому обогащению.
4. Подготовьте набор данных фильмов
Наша первая задача — подготовить набор данных Movies, который мы будем использовать для построения графика знаний и работы нашего чат-бота с рекомендациями. Вместо того, чтобы начинать с нуля, мы будем использовать существующий открытый набор данных и развивать его.
Мы используем набор данных The Movies от Rounak Banik, известный общедоступный набор данных, доступный на Kaggle. Он включает метаданные для более чем 45 000 фильмов из TMDB, включая актерский состав, съемочную группу, ключевые слова, рейтинги и многое другое.
Чтобы создать надежный и эффективный чат-бот с рекомендациями фильмов, важно начать с чистых, последовательных и структурированных данных. Хотя набор данных фильмов от Kaggle представляет собой богатый ресурс с более чем 45 000 записями фильмов и подробными метаданными, включая жанры, актерский состав, съемочную группу и многое другое, он также содержит шум, несоответствия и вложенные структуры данных, которые не идеальны для графического моделирования или семантического внедрения.
Чтобы решить эту проблему, мы предварительно обработали и нормализовали набор данных , чтобы гарантировать, что он хорошо подходит для построения графа знаний Neo4j и создания высококачественных вложений. Этот процесс включал:
- Удаление дубликатов и неполных записей
- Стандартизация ключевых полей (например, названий жанров, имен людей)
- Сведение сложных вложенных структур (например, актеров и съемочной группы) в структурированные CSV-файлы.
- Выбор репрезентативной подгруппы из примерно 12 000 фильмов, чтобы оставаться в рамках бесплатных ограничений Neo4j AuraDB.
Высококачественные нормализованные данные помогают гарантировать:
- Качество данных : сводит к минимуму ошибки и несоответствия для более точных рекомендаций.
- Производительность запросов : оптимизированная структура повышает скорость поиска и уменьшает избыточность.
- Точность встраивания . Чистые входные данные приводят к более осмысленному и контекстуальному векторному встраиванию.
Вы можете получить доступ к очищенному и нормализованному набору данных в normalized_data/
этого репозитория GitHub. Этот набор данных также отображается в корзине Google Cloud Storage для облегчения доступа к нему в будущих скриптах Python.
Когда данные очищены и готовы, мы готовы загрузить их в Neo4j и начать строить график знаний о фильмах.
5. Создание диаграммы знаний о фильмах
Чтобы обеспечить работу нашего чат-бота с рекомендациями фильмов с поддержкой GenAI, нам необходимо структурировать наш набор данных о фильмах таким образом, чтобы охватить богатую сеть связей между фильмами, актерами, режиссерами, жанрами и другими метаданными. В этом разделе мы построим диаграмму знаний о фильмах в Neo4j, используя очищенный и нормализованный набор данных, который вы подготовили ранее.
Мы будем использовать возможность Neo4j LOAD CSV
для загрузки CSV-файлов, размещенных в общедоступной корзине Google Cloud Storage (GCS). Эти файлы представляют различные компоненты набора данных фильмов, такие как фильмы, жанры, актерский состав, съемочная группа, продюсерские компании и рейтинги пользователей.
Шаг 1. Создайте ограничения и индексы
Перед импортом данных рекомендуется создать ограничения и индексы для обеспечения целостности данных и оптимизации производительности запросов.
CREATE CONSTRAINT unique_tmdb_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.tmdbId IS UNIQUE;
CREATE CONSTRAINT unique_movie_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.movieId IS UNIQUE;
CREATE CONSTRAINT unique_prod_id IF NOT EXISTS FOR (p:ProductionCompany) REQUIRE p.company_id IS UNIQUE;
CREATE CONSTRAINT unique_genre_id IF NOT EXISTS FOR (g:Genre) REQUIRE g.genre_id IS UNIQUE;
CREATE CONSTRAINT unique_lang_id IF NOT EXISTS FOR (l:SpokenLanguage) REQUIRE l.language_code IS UNIQUE;
CREATE CONSTRAINT unique_country_id IF NOT EXISTS FOR (c:Country) REQUIRE c.country_code IS UNIQUE;
CREATE INDEX actor_id IF NOT EXISTS FOR (p:Person) ON (p.actor_id);
CREATE INDEX crew_id IF NOT EXISTS FOR (p:Person) ON (p.crew_id);
CREATE INDEX movieId IF NOT EXISTS FOR (m:Movie) ON (m.movieId);
CREATE INDEX user_id IF NOT EXISTS FOR (p:Person) ON (p.user_id);
Шаг 2. Импортируйте метаданные фильма и связи
Давайте посмотрим, как мы импортируем метаданные фильма с помощью команды LOAD CSV. В этом примере создаются узлы Movie с ключевыми атрибутами, такими как заголовок, обзор, язык и среда выполнения:
LOAD CSV WITH HEADERS FROM "https://storage.googleapis.com/neo4j-vertexai-codelab/normalized_movies.csv" AS row
WITH row, toInteger(row.tmdbId) AS tmdbId
WHERE tmdbId IS NOT NULL
WITH row, tmdbId
LIMIT 12000
MERGE (m:Movie {tmdbId: tmdbId})
ON CREATE SET m.title = coalesce(row.title, "None"),
m.original_title = coalesce(row.original_title, "None"),
m.adult = CASE
WHEN toInteger(row.adult) = 1 THEN 'Yes'
ELSE 'No'
END,
m.budget = toInteger(coalesce(row.budget, 0)),
m.original_language = coalesce(row.original_language, "None"),
m.revenue = toInteger(coalesce(row.revenue, 0)),
m.tagline = coalesce(row.tagline, "None"),
m.overview = coalesce(row.overview, "None"),
m.release_date = coalesce(row.release_date, "None"),
m.runtime = toFloat(coalesce(row.runtime, 0)),
m.belongs_to_collection = coalesce(row.belongs_to_collection, "None");
Подобные команды Cypher можно использовать для импорта связанных объектов, таких как жанры, продюсерские компании, языки, страны, актерский состав, съемочная группа и рейтинги.
Загрузите полный график через Python
Вместо того, чтобы вручную выполнять несколько запросов Cypher, мы рекомендуем использовать автоматизированный скрипт Python, представленный в этой лаборатории кода.
graph_build.py
загружает весь набор данных из GCS в ваш экземпляр Neo4j AuraDB, используя учетные данные из вашего файла .env
.
python граф_build.py
Скрипт последовательно загрузит все необходимые CSV-файлы, создаст узлы и связи, а также структурирует ваш полный граф знаний о фильмах.
Проверьте свой график
После загрузки вы можете проверить свой график, выполнив простые запросы Cypher, например:
MATCH (m:Movie) RETURN m LIMIT 5;
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie) RETURN a.name, m.title LIMIT 5;
Теперь вы должны увидеть свой график, заполненный фильмами, людьми, жанрами и многим другим — готовый к семантическому обогащению на следующем этапе!
6. Сгенерируйте и загрузите внедрения для выполнения поиска по сходству векторов
Чтобы включить семантический поиск в нашем чат-боте, нам нужно сгенерировать векторные вложения для обзоров фильмов. Эти встраивания преобразуют текстовые данные в числовые векторы, которые можно сравнивать на предмет сходства, что позволяет чат-боту извлекать соответствующие фильмы, даже если запрос не соответствует точному названию или описанию.
⚠️ Примечание по производительности
Создание вложений для тысяч описаний фильмов в реальном времени требует много времени и ресурсов. Чтобы сделать эту кодовую лабораторию эффективной и доступной, мы заранее рассчитали встраивания для всех примерно 12 000 обзоров фильмов с помощью Vertex AI.
text-embedding-004
модель и сохранил их в общедоступном файле CSV.
Вариант 1. Загрузка предварительно вычисленных вложений через Cypher
Чтобы быстро прикрепить вложения к соответствующим узлам Movie
в Neo4j, выполните следующую команду Cypher в браузере Neo4j:
LOAD CSV WITH HEADERS FROM 'https://storage.googleapis.com/neo4j-vertexai-codelab/movie_embeddings.csv' AS row
WITH row
MATCH (m:Movie {tmdbId: toInteger(row.tmdbId)})
SET m.embedding = apoc.convert.fromJsonList(row.embedding)
Эта команда считывает векторы внедрения из CSV и присоединяет их как свойство ( m.embedding
) к каждому узлу Movie
.
Вариант 2. Загрузка внедрений с помощью Python
Вы также можете загрузить внедрения программным способом, используя предоставленный скрипт Python. Этот подход полезен, если вы работаете в своей собственной среде или хотите автоматизировать процесс:
python load_embeddings.py
Этот скрипт считывает тот же CSV-файл из GCS и записывает встраивания в Neo4j с помощью драйвера Python Neo4j.
[Необязательно] Создайте встраивания самостоятельно (для изучения)
Если вам интересно понять, как генерируются встраивания, вы можете изучить логику самого generate_embeddings.py
. Он использует Vertex AI для встраивания текста обзора каждого фильма с использованием модели text-embedding-004
.
Чтобы попробовать это самостоятельно, откройте и запустите раздел кода для генерации встраивания. Если вы используете Cloud Shell , вы можете закомментировать следующую строку, поскольку Cloud Shell уже прошел аутентификацию через вашу активную учетную запись:
# os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./service-account.json"
⚠️ Выполнение полного процесса создания встраивания потребует квоты Vertex AI и может занять значительное время, особенно при наличии тысяч записей.
Как только встраивания будут загружены в Neo4j, ваш граф знаний о фильмах станет семантически ориентированным — готовым поддерживать мощный поиск на естественном языке с использованием векторного сходства!
7. Чат-бот «Рекомендации по фильмам»
Когда у вас есть график знаний и встроенные элементы, пришло время объединить все в диалоговый интерфейс — вашего чат-бота с рекомендациями по фильмам .
Чат-бот реализован с использованием Python и Gradio — облегченной среды для создания веб-интерфейсов. Основная логика находится в chatbot.py
, который подключается к вашему экземпляру Neo4j AuraDB и выполняет поиск векторного сходства при встраивании фильмов на основе подсказок на естественном языке.
Чат-бот использует Gemini для улучшения пользовательского опыта путем уточнения запросов и форматирования ответов. Результаты поиска возвращаются из Neo4j с использованием комбинации контекста графа и сходства векторов.
Запустите чат-бота локально
Чтобы запустить чат-бота, активируйте свою виртуальную среду (если это еще не сделано) и запустите:
python chatbot.py
Вы должны увидеть вывод, аналогичный следующему:
Old index dropped
Creating new vector index
Vector index created successfully
* Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
💡 Если вы видите предупреждения об устаревании, связанные с разрешением_flagging, вы можете пока их игнорировать — приложение все равно будет работать.
Взаимодействуйте с чат-ботом
После запуска откройте URL-адрес, отображаемый в вашем терминале, обычно: 👉 http://127.0.0.1:7860
Вас встретит простой интерфейс чата, где вы сможете вводить запросы на естественном языке, например:
- «Порекомендуйте мне научно-фантастические триллеры, такие как «Начало»»
- «Предложите романтический фильм с Томом Хэнксом»
- «Я хочу посмотреть приятную семейную драму»
Чат-бот обрабатывает запрос, выполняет семантический векторный поиск по обзорам фильмов и отображает список наиболее релевантных фильмов, включая их названия, обзоры и годы выпуска.
Каждая рекомендация отображается в виде карточки с аккуратно отформатированными результатами.
Теперь, когда ваш чат-бот работает локально, у вас есть полнофункциональная система рекомендаций фильмов на базе GenAI, которая сочетает в себе лучшие графы знаний , LLM (Gemini) и семантический поиск с использованием встраивания Vertex AI .
8. (Необязательно) Развертывание в Google Cloud Run
Если вы хотите сделать своего чат-бота «Рекомендации по фильмам» общедоступным в Интернете, вы можете развернуть его в Google Cloud Run — полностью управляемой бессерверной платформе, которая автоматически масштабирует ваше приложение.
Перед развертыванием убедитесь, что в вашем проекте присутствуют следующие файлы (они уже включены в этот репозиторий):
-
requirements.txt
— список всех зависимостей Python, необходимых для запуска приложения, включая Neo4j и Vertex AI. -
Dockerfile
— определяет среду контейнера, включая базовый образ, установку зависимостей и способ запуска приложения.
Шаг 1. Настройка переменных среды
В своем терминале установите следующие переменные среды (замените значения заполнителей фактическими настройками проекта):
# Set your Google Cloud project ID
export GCP_PROJECT='your-project-id' # Change this
# Set your preferred deployment region
export GCP_REGION='us-central1'
Шаг 2. Создайте реестр артефактов и постройте контейнер
# Artifact Registry repo and service name
export AR_REPO='your-repo-name' # Change this
export SERVICE_NAME='movies-chatbot' # Or any name you prefer
# Create the Artifact Registry repository
gcloud artifacts repositories create "$AR_REPO" \
--location="$GCP_REGION" \
--repository-format=Docker
# Authenticate Docker with Artifact Registry
gcloud auth configure-docker "$GCP_REGION-docker.pkg.dev"
# Build and submit the container image
gcloud builds submit \
--tag "$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME"
Эта команда упаковывает ваше приложение с помощью Dockerfile
и загружает образ контейнера в реестр Google Cloud Artifact.
Шаг 3. Развертывание в Cloud Run
Перед развертыванием убедитесь, что все необходимые переменные среды (например, учетные данные Neo4j, настройки проекта) указаны в вашем файле .env
.
Используйте следующий фрагмент для динамического преобразования файла .env
в формат, совместимый с флагом --set-env-vars
:
ENV_VARS=$(grep -v '^#' .env | sed 's/ *= */=/g' | xargs -I{} echo -n "{},")
ENV_VARS=${ENV_VARS%,}
Теперь разверните свое приложение:
gcloud run deploy "$SERVICE_NAME" \
--port=8080 \
--image="$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME" \
--allow-unauthenticated \
--region=$GCP_REGION \
--platform=managed \
--project=$GCP_PROJECT \
--set-env-vars="GCP_PROJECT=$GCP_PROJECT,GCP_REGION=$GCP_REGION,$ENV_VARS"
Доступ к чат-боту
После развертывания Cloud Run вернет URL-адрес общедоступной службы в следующем формате:
https://movies-chatbot-[UNIQUE_ID].${GCP_REGION}.run.app
Откройте URL-адрес в браузере, чтобы получить доступ к вашему чат-боту. Вы должны увидеть тот же пользовательский интерфейс Gradio, работающий в облаке, способный получать запросы и отвечать рекомендациями фильмов.
Примечания и советы
- Убедитесь, что ваш
Dockerfile
запускаетpip install -r requirements.txt
во время сборки. - Если вы не используете Cloud Shell , вам потребуется выполнить аутентификацию своей среды с помощью учетной записи службы с разрешениями Vertex AI и реестра артефактов.
- Вы можете отслеживать журналы развертывания и показатели в Google Cloud Console > Cloud Run .
Вы также можете посетить Cloud Run из консоли Google Cloud и увидеть список сервисов в Cloud Run. Сервис movies-chatbot
должен быть одним из перечисленных там сервисов (если не единственным).
Вы можете просмотреть подробную информацию о службе, такую как URL-адрес, конфигурации, журналы и многое другое, щелкнув имя конкретной службы (в нашем случае movies-chatbot
).
Благодаря этому ваш чат-бот по рекомендациям фильмов теперь развернут, масштабируем и доступен для совместного использования . 🎉
9. Очистить
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить работу» , чтобы удалить проект.
10. Поздравления
Вы успешно создали и развернули чат-бот для рекомендаций фильмов с поддержкой графов и GenAI, используя Neo4j , Vertex AI и Gemini . Объединив возможности выразительного моделирования Neo4j с семантической мощью встраивания Vertex AI и разговорным интеллектом Gemini, вы создали интуитивно понятную и интеллектуальную систему, которая понимает запросы на естественном языке и возвращает контекстно-релевантные рекомендации к фильмам.
В ходе этой лаборатории вы:
- Создал богатый, взаимосвязанный граф знаний на основе набора данных о реальных фильмах.
- Сгенерированы и интегрированы векторные представления для обеспечения семантического поиска сходства.
- Использование Gemini для обеспечения взаимодействия на естественном языке
- Создан простой, но мощный интерфейс чат-бота с помощью Gradio.
- При необходимости развернули приложение с помощью Google Cloud Run для масштабируемости и доступа.
Этот подход не ограничивается фильмами — ту же архитектуру можно распространить на книги, музыку, продукты, научные статьи или любую область, где отношения и семантика имеют значение . Поскольку мультимодальные модели GenAI, такие как Gemini, продолжают развиваться, вы сможете обогатить свои приложения более глубоким пониманием, персонализированным взаимодействием и многоформатными выходными данными.
Продолжайте исследовать, продолжать создавать — и не забывайте оставаться в курсе последних новостей от Neo4j , Vertex AI и Google Cloud , чтобы поднять ваши интеллектуальные приложения на новый уровень!