1. Введение
В этом практическом занятии вы создадите бэкенд и развернете фронтенд для «Cymbal Autos», онлайн-площадки по продаже автомобилей. Вы будете использовать BigQuery и модели Gemini на платформе Gemini Enterprise Agent Platform для анализа фотографий автомобилей, прогнозирования цен с помощью BigQuery ML , выявления мошеннических объявлений с помощью векторных представлений и расчета сводных оценок сделок. Наконец, вы отобразите эти данные на фронтенде Next.js, развернутом в Cloud Run .

Что вы будете делать
- Подключите BigQuery к неструктурированным образам облачного хранилища с помощью ObjectRef.
- Извлечение атрибутов транспортных средств из фотографий с помощью BigQuery и моделей Gemini.
- Прогнозируйте справедливые рыночные цены, обучив модель регрессии XGBoost с помощью BigQuery ML.
- Выявляйте потенциально мошеннические и заслуживающие доверия объявления, встраивая описания автомобилей и используя функцию
VECTOR_SEARCH - С помощью
AI.SCOREрассчитайте комплексный рейтинг сделки для каждого объявления, учитывая при этом информацию о состоянии товара из описания продавца. - Экспортируйте данные и разверните приложение из маркетплейса Next.js в Google Cloud Run.
Что вам понадобится
- Веб-браузер, например Chrome.
- Проект Google Cloud с включенной функцией выставления счетов.
- Базовые знания SQL, Python и Google Cloud.
- Достаточные права доступа к IAM для включения API, создания ресурсов и назначения разрешений (например, владельца проекта).
Данный практический семинар предназначен для разработчиков среднего уровня.
Стоимость ресурсов, созданных в рамках этого практического занятия, должна составлять менее 5 долларов.
2. Прежде чем начать
Создайте проект в Google Cloud.
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud .
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
Запустить Cloud Shell
Для загрузки кода, запуска скриптов настройки и развертывания приложения вы будете использовать Google Cloud Shell .
- В верхней части консоли Google Cloud нажмите кнопку «Активировать Cloud Shell» .

- После подключения к Cloud Shell выполните аутентификацию сессии, чтобы убедиться, что ваше приложение может получить доступ к API Google Cloud. Следуйте инструкциям для авторизации Cloud Shell:
gcloud auth application-default login
- Укажите идентификатор вашего проекта Google Cloud и уникальное имя для вашего сегмента Google Cloud Storage (где вы будете хранить необработанные данные):
export PROJECT_ID=$(gcloud config get-value project)
export USER_BUCKET="cymbal-autos-${PROJECT_ID}"
gcloud config set project $PROJECT_ID
Вы должны увидеть сообщение, похожее на приведенное ниже:
Your active configuration is: [cloudshell-####] Updated property [core/project]
Включить API
Выполните эту команду в Cloud Shell, чтобы включить все необходимые API для этого практического занятия:
gcloud services enable \
aiplatform.googleapis.com \
artifactregistry.googleapis.com \
bigquery.googleapis.com \
bigqueryconnection.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
После успешного выполнения вы должны увидеть сообщение, похожее на показанное ниже:
Operation "operations/..." finished successfully.
3. Получите код и данные для настройки.
Сначала загрузите демонстрационные ресурсы и настройте переменные среды.
- В Cloud Shell клонируйте репозиторий
devrel-demosи перейдите в каталог проекта:
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos/data-analytics/cymbal-autos-multimodal
- Запустите скрипт, чтобы скопировать данные в вашу среду. Этот скрипт синхронизирует локальные наборы данных репозитория с вашим личным хранилищем Cloud Storage и получает изображения транспортных средств из общедоступного хранилища:
chmod +x scripts/setup/*.sh
./scripts/setup/00_copy_data.sh
После этого вы должны увидеть сообщение, похожее на следующее:
Average throughput: 87.8MiB/s Data copy complete!
- Далее настройте подключение к облачным ресурсам BigQuery. Для анализа неструктурированных изображений в облачном хранилище и прямого вызова моделей Agent Platform из ваших SQL-запросов BigQuery должен делегировать разрешения IAM базовой учетной записи службы. Этот скрипт создает защищенное соединение и предоставляет ему необходимые роли пользователя Vertex AI и потребителя использования службы (на распространение изменений уходит около минуты):
./scripts/setup/01_setup_api_connection.sh
Вы должны увидеть сообщение, похожее на следующее:
Environment setup complete! Your BigQuery connection is ready.
- Наконец, создайте исходный набор данных BigQuery и загрузите необработанные табличные данные. Это создаст ваш набор данных
model_devи заполнит начальные таблицы, заложив основу перед написанием каких-либо запросов машинного обучения:
./scripts/setup/02_load_to_bq.sh
Вы должны увидеть сообщение, похожее на следующее:
================================================================= BigQuery load complete! =================================================================
4. Извлечение мультимодальных изображений
Перед оценкой автомобилей вам потребуется извлечь структурированные данные (например, цвет, тип кузова или визуальные повреждения) из сотен необработанных фотографий. Используя функции ObjectRef и модели Gemini, размещенные на платформе Agent Platform, вы можете генерировать эти характеристики без перемещения файлов или написания сложных конвейеров обработки данных. Это извлечение напрямую влияет на значок ✨ «Визуальное состояние» во фронтенд-приложении.
- Откройте BigQuery Studio в новой вкладке браузера.
- Нажмите кнопку «+ Создать новый запрос» . В ходе этого практического занятия вы будете использовать редактор SQL для взаимодействия с SQL-кодом.
- Перед созданием инструментов машинного обучения для извлечения данных, вы можете быстро просмотреть исходные изображения. Выполните следующий запрос, чтобы увидеть массив URI изображений, хранящихся в Google Cloud Storage для каждого объявления:
SELECT auction_id, item_name, description, images
FROM `model_dev.vehicle_metadata` LIMIT 5;
- Теперь в редакторе SQL-запросов BigQuery Studio вставьте следующий SQL-код, чтобы создать новую таблицу со столбцом
image_ref. Нажмите « Выполнить» .
CREATE OR REPLACE TABLE `model_dev.vehicle_multimodal` AS
SELECT
*,
ARRAY(
SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'us.conn'))
FROM UNNEST(images) AS uri
) AS image_ref
FROM `model_dev.vehicle_metadata`;
- Взгляните на новый столбец ObjectRef в таблице
image_ref, который вы только что создали. В новой таблице теперь есть столбец ObjectRef, имеющий права на выполнение операций над самими изображениями. Выполните следующий запрос, чтобы просмотреть его:
SELECT auction_id, item_name, description, image_ref
FROM `model_dev.vehicle_multimodal` LIMIT 5;
- Теперь вы будете использовать
AI.GENERATEиAI.CLASSIFYдля анализа изображений.AI.GENERATEизвлекает оценку состояния и краткое описание повреждений в одном предложении, запрашивая информацию у Gemini, аAI.CLASSIFYстрого классифицирует тип кузова и цвет автомобиля.
Выполните следующий запрос, чтобы извлечь эти данные в отдельную таблицу признаков. Ожидаемое время выполнения — около 3 минут.
CREATE OR REPLACE TABLE `model_dev.vehicle_vision_features` AS
WITH generated_data AS (
SELECT
auction_id,
AI.GENERATE(
prompt => ('Rate the condition of this car on a scale from 0-100. Output a 1 sentence description of any glaring red flags', image_ref),
output_schema => 'condition INT64, description_summary STRING'
).* EXCEPT(full_response,status)
FROM
`model_dev.vehicle_multimodal`
),
-- Object-centric Classifications
classified_data AS (
SELECT
auction_id,
AI.CLASSIFY(
('What type of automobile is this?', image_ref[0]),
categories => ['Truck', 'Sedan', 'SUV']) AS body_style,
AI.CLASSIFY(
('Color of the exterior of the automobile', image_ref[0]),
categories => ['Black', 'White', 'Silver', 'Gray', 'Red', 'Blue', 'Brown', 'Green', 'Beige', 'Gold']) AS color,
AI.CLASSIFY(
('Color of the interior of the automobile', image_ref[0]),
categories => ['Black', 'Gray', 'Beige', 'Tan', 'Brown', 'White', 'Red']) AS interior
FROM `model_dev.vehicle_multimodal`
)
-- Join the AI insights back together into the final feature table
SELECT
g.auction_id,
g.condition,
g.description_summary,
c.body_style,
c.color,
c.interior
FROM generated_data g
JOIN classified_data c ON g.auction_id = c.auction_id;
- Чтобы просмотреть сгенерированные объекты самостоятельно, выполните следующий запрос или просто посмотрите на скриншот ниже:
SELECT auction_id, condition, description_summary, body_style, color, interior FROM `model_dev.vehicle_vision_features` LIMIT 5;

Краткое содержание раздела: Вы получили доступ к исходным изображениям напрямую из BigQuery и использовали модели Gemini для извлечения структурированных визуальных признаков без перемещения каких-либо файлов.
5. Прогнозирование цен с помощью XGBoost
Для расчета того, является ли автомобиль действительно выгодной покупкой, необходима надежная базовая оценка его рыночной стоимости. Вместо того чтобы извлекать данные в локальные скрипты или блокноты для обучения модели, вы можете обучить модель XGBoost непосредственно в BigQuery, используя стандартный SQL. Это прогнозирование цены лежит в основе логики 📈 расчета рыночной стоимости на стороне клиента.
- Вернитесь на вкладку BigQuery Studio .
- Для начала взгляните на обучающий набор данных. В отличие от активных объявлений о продаже автомобилей, таблица
synthetic_carsсодержит 100 000 исторических данных о продажах, которые будут использованы для обучения модели. Выполните этот простой запрос, чтобы взглянуть на данные:
SELECT
*
FROM
`model_dev.synthetic_cars`
LIMIT 10;
- Теперь выполните следующий SQL-запрос для обучения модели регрессии XGBoost. Эта модель изучает, как такие атрибуты, как пробег, год выпуска, марка и визуальное состояние, влияют на цену, на основе 100 000 исторических записей:
CREATE OR REPLACE MODEL `model_dev.car_price_model`
OPTIONS(
MODEL_TYPE = 'BOOSTED_TREE_REGRESSOR',
INPUT_LABEL_COLS = ['selling_price'],
MAX_ITERATIONS = 15,
TREE_METHOD = 'HIST'
) AS
SELECT
* EXCEPT(vin, sale_date, market_value, seller)
FROM
`model_dev.synthetic_cars`;
- Прежде чем прогнозировать цены на автомобили, выставленные на продажу в режиме реального времени, необходимо собрать все необходимые входные данные в одном месте. Выполните следующий SQL-запрос, чтобы объединить структурированные метаданные автомобиля с данными, полученными с помощью компьютерного моделирования:
CREATE OR REPLACE TABLE `model_dev.vehicle_prediction_features` AS
SELECT
meta.auction_id,
meta.model_year,
meta.make,
meta.model,
meta.mileage,
meta.transmission_type,
meta.state,
COALESCE(vision.body_style, 'Unknown') AS body_style,
COALESCE(vision.condition, 50) AS condition,
COALESCE(meta.color, vision.color, 'Unknown') AS color,
COALESCE(vision.interior, 'Unknown') AS interior
FROM `model_dev.vehicle_metadata` meta
LEFT JOIN `model_dev.vehicle_vision_features` vision
ON meta.auction_id = vision.auction_id;
- Наконец, спрогнозируйте справедливую рыночную стоимость каждого текущего объявления о продаже автомобиля. Выполните следующий запрос, чтобы передать агрегированные признаки в вашу недавно обученную модель, и сохраните числовые результаты в защищенную таблицу прогнозов:
CREATE OR REPLACE TABLE `model_dev.vehicle_price_predictions` AS
SELECT
auction_id,
ROUND(predicted_selling_price, 2) AS predicted_market_value
FROM ML.PREDICT(
MODEL `model_dev.car_price_model`,
(SELECT * FROM `model_dev.vehicle_prediction_features`)
);
- Теперь проверьте результаты работы модели. Выполните этот простой запрос, чтобы предварительно просмотреть прогнозируемые рыночные цены для актуальных объявлений о продаже автомобилей:
SELECT * FROM `model_dev.vehicle_price_predictions` LIMIT 5;

Краткое содержание раздела: Вы обучили модель регрессии XGBoost, используя 100 000 примеров транзакций, и выполнили пакетный вывод для прогнозирования справедливой рыночной стоимости каждого активного объявления о продаже автомобиля в наборе данных.
6. Семантические встраивания и определение подлинности
В этом разделе вы выполните два различных процесса встраивания, чтобы обеспечить работу интеллектуальных функций на автомобильном рынке:
- Мультимодальный поиск изображений: Преобразование необработанных фотографий транспортных средств в векторное пространство, позволяющее пользователям осуществлять поиск с использованием естественного языка (например, «надежный рабочий грузовик»).
- Встраивание текста и поиск по сходству: Преобразуйте текстовые описания автомобилей в векторные представления, чтобы сравнить активные объявления с известными профилями потенциальных мошенников или энтузиастов, используя
VECTOR_SEARCH. Это вычисляет 🔍 Показатель подлинности , который покупатели видят в приложении.
- Во-первых, необходимо сгенерировать мультимодальные эмбеддинги для объявлений о продаже автомобилей. С помощью модели
gemini-embedding-2-previewвы можете вводить как изображения, так и текст в один и тот же эмбеддинг. Хотя эта модель полностью способна обрабатывать несколько модальностей одновременно, в данном конкретном случае мы встраиваем только изображения автомобилей. Это обеспечивает работу панели «семантического поиска» для фронтенд-приложения, позволяя покупателям использовать естественный язык (например, «надежный пикап») и быстро находить подходящие объявления. Выполните этот запрос для генерации мультимодальных векторов с помощьюAI.EMBED:
CREATE OR REPLACE TABLE `model_dev.vehicle_images_embedded` AS
SELECT
auction_id,
AI.EMBED(
STRUCT(image_ref),
endpoint => 'gemini-embedding-2-preview').result AS multimodal_embedding
FROM `model_dev.vehicle_multimodal`
WHERE ARRAY_LENGTH(image_ref) > 0;
- Далее вы изучите данные профиля риска, загруженные ранее. Обратите внимание, что они содержат как известные типы мошенничества, так и примеры законных объявлений от энтузиастов. Выполните этот запрос, чтобы просмотреть базовые профили:
SELECT profile_id, profile_type, description
FROM `model_dev.seller_risk_profiles`;
- Теперь вам нужно преобразовать эти исходные описания рисков в векторные представления. Вы можете использовать специализированную модель векторного представления текста (
text-embedding-005) для строгой оценки только что просмотренного текста. Вставьте следующий SQL-запрос и нажмите «Выполнить», чтобы встроить базовые профили:
CREATE OR REPLACE TABLE `model_dev.seller_risk_profiles_embedded` AS
SELECT
profile_id,
description AS content,
profile_type,
AI.EMBED(description, endpoint => 'text-embedding-005').result AS text_embedding
FROM `model_dev.seller_risk_profiles`;
- Далее сгенерируйте сопоставимые векторные представления для фактического текущего автопарка. Выполните этот запрос, чтобы преобразовать исходное HTML-описание каждого транспортного средства в векторное пространство, чтобы их можно было сравнить с базовыми профилями:
CREATE OR REPLACE TABLE `model_dev.vehicle_descriptions_embedded` AS
SELECT
auction_id,
description AS content,
AI.EMBED(description, endpoint => 'text-embedding-005').result AS text_embedding
FROM `model_dev.vehicle_metadata`
WHERE description IS NOT NULL;
- Наконец, выполните векторный поиск, чтобы вычислить семантическое расстояние между действующими объявлениями и базовыми профилями. Выполните следующий SQL-запрос для сопоставления. Меньшее математическое расстояние означает, что объявление очень похоже на известную группу мошеннических схем, в то время как большее расстояние указывает на законное описание.
CREATE OR REPLACE TABLE `model_dev.vehicle_authenticity_scores` AS
SELECT
scam_search.query.auction_id,
CAST(
GREATEST(0.0, LEAST(100.0, ROUND((MIN(scam_search.distance) - 0.33) / 0.12 * 100.0)))
AS INT64
) AS authenticity_score
FROM VECTOR_SEARCH(
TABLE `model_dev.seller_risk_profiles_embedded`,
'text_embedding',
(
SELECT text_embedding, auction_id
FROM `model_dev.vehicle_descriptions_embedded`
),
top_k => 15,
distance_type => 'COSINE'
) AS scam_search
WHERE scam_search.base.profile_type = 'scam'
GROUP BY 1;
Содержимое этой таблицы может выглядеть следующим образом:

Краткое содержание раздела: Вы создали мультимодальные эмбеддинги для поисковой строки на фронтенде и использовали векторный поиск непосредственно в BigQuery для сравнения необработанных HTML-текстовых объявлений с известными профилями мошеннических схем.
7. Генеративная оценка сделок
Теперь у вас есть структурированные наборы данных, сгенерированные с помощью множества различных методов машинного обучения, которые полностью скоординированы в BigQuery: извлечение изображений, модель XGBoost для прогнозирования справедливой рыночной стоимости и векторные представления для поиска.
Заключительный этап — объединение этих сигналов ИИ в единое представление, которое станет окончательным показателем оценки сделки для фронтенд-приложения.
- Сначала объедините исходные метаданные с извлеченными с помощью ИИ визуальными признаками, результатами прогнозирования цен и оценками семантической достоверности. Выполните следующий SQL-запрос:
CREATE OR REPLACE TABLE `model_dev.vehicle_features_enhanced` AS
SELECT
meta.auction_id,
meta.item_name,
meta.model_year,
meta.make,
meta.model,
meta.mileage,
meta.current_bid,
meta.listing_url,
meta.transmission_type,
meta.description,
meta.state,
COALESCE(vision.body_style, 'Unknown') AS body_style,
COALESCE(vision.condition, 50) AS condition,
COALESCE(meta.color, vision.color, 'Unknown') AS color,
COALESCE(vision.interior, 'Unknown') AS interior,
COALESCE(scam.authenticity_score, 100) AS authenticity_score,
vision.description_summary,
prices.predicted_market_value
FROM `model_dev.vehicle_metadata` meta
LEFT JOIN `model_dev.vehicle_vision_features` vision
ON meta.auction_id = vision.auction_id
LEFT JOIN `model_dev.vehicle_price_predictions` prices
ON meta.auction_id = prices.auction_id
LEFT JOIN `model_dev.vehicle_authenticity_scores` scam
ON meta.auction_id = scam.auction_id;
- Далее, рассчитайте оценку сделки от 0 до 100, объединив четыре различных сигнала, полученных с помощью искусственного интеллекта. Эта формула учитывает соотношение цены, качества и риска, чтобы выявить лучшие предложения:
- Ценовой рейтинг (40%): Сопоставляет экономию с рыночной стоимостью.
- Оценка зрения (30%): Результаты предыдущего анализа фотографий.
- Оценка подлинности (15%): оценка риска мошенничества.
- Оценка состояния (15%): определяется в режиме реального времени на основе описания продавца с помощью
AI.SCORE.
CREATE OR REPLACE TABLE `model_dev.marketplace_listings` AS
WITH score_elements AS (
SELECT
*,
-- 1. SELLER DESCRIPTION SCORE (use AI.SCORE on seller description)
AI.SCORE(
FORMAT("Rate the vehicle condition (0-100) based ONLY on this text: '%s'", description)
) AS description_score,
-- 2. PRICE SCORE
-- Higher impact for underpricing, lower impact for overpricing.
CAST(LEAST(100.0, GREATEST(0.0,
75.0 + (
IF((predicted_market_value - current_bid) > 0,
((predicted_market_value - current_bid) / NULLIF(predicted_market_value, 0)) * 250.0,
((predicted_market_value - current_bid) / NULLIF(predicted_market_value, 0)) * 40.0
)
)
)) AS INT64) AS price_score
FROM `model_dev.vehicle_features_enhanced`
),
final_calcs AS (
SELECT
*,
-- 3. Combine scores: Price (40%), Condition (30%), Description (15%), Authenticity (15%)
ROUND(
(
(price_score * 0.40) +
(CAST(condition AS INT64) * 0.30) +
(COALESCE(description_score, 50) * 0.15) +
(CAST(authenticity_score AS INT64) * 0.15)
)
-- Authenticity penalty for scores below 50.
* (IF(CAST(authenticity_score AS INT64) < 50, 0.20, 1.05))
) AS raw_score
FROM score_elements
)
SELECT
* EXCEPT(raw_score),
-- 4. Set floor values: low authenticity scores drop to 10; others floor at 35.
CAST(GREATEST(
(IF(CAST(authenticity_score AS INT64) < 50, 10, 35)),
LEAST(100, raw_score)
) AS INT64) AS deal_score
FROM final_calcs;
Для обеспечения высококачественных рекомендаций запрос использует два специфических логических уровня:
- Проверка подлинности : если объявление помечено как «Высокий риск» (оценка < 50), общий рейтинг сделки автоматически снижается на 80%, чтобы предотвратить продвижение подозрительных объявлений.
- Оптимизация «Скрытая жемчужина» : формула использует кусочно-линейную логику, чтобы агрессивно поощрять экономию, оставаясь при этом более снисходительной к наценкам, гарантируя, что даже переоцененный автомобиль в идеальном состоянии может получить оценку «Удовлетворительно».
Полученная таблица model_dev.marketplace_listings содержит такие поля, как deal_score , а также price_score и authenticity_score .
- Чтобы самостоятельно просмотреть рейтинги сделок, выполните следующий запрос или просто посмотрите на скриншот ниже:
SELECT item_name, model_year, authenticity_score, predicted_market_value, price_score, deal_score FROM `model_dev.marketplace_listings`

Краткое содержание раздела: Вы объединили прогнозируемое ценообразование, визуальные характеристики и оценки подлинности с описанием продавца, чтобы рассчитать единый рейтинг сделки для каждого объявления.
8. Разверните фронтенд-приложение
Теперь пришло время запустить фронтенд-приложение. Это позволит вам, наконец, осуществлять поиск по каталогу автомобилей и взаимодействовать с созданными с помощью ИИ аналитическими данными, такими как оценка сделки (Deal Score).
Экспорт результатов оценки ИИ во фронтенд
Фронтенд на React использует локальные JSON-данные для быстрой первоначальной загрузки страниц. Для работы маркетплейса извлеките итоговые оценки сделок из BigQuery и внедрите их обратно в проект Next.js.
- Убедитесь, что ваша среда готова. Если сеанс Cloud Shell завершился по истечении времени ожидания или вы перешли в другую папку, выполните следующую команду, чтобы вернуться в корневой каталог проекта и восстановить переменные среды:
cd ~/devrel-demos/data-analytics/cymbal-autos-multimodal && \
export PROJECT_ID=$(gcloud config get-value project) && \
export USER_BUCKET="cymbal-autos-${PROJECT_ID}"
- Запустите предоставленный скрипт на Python, чтобы запросить итоговое представление BigQuery и объединить новые оценки сделок с базовым хранилищем данных приложения:
python3 scripts/setup/08_export_frontend_data.py
Вы получите подтверждающее сообщение следующего содержания:
💾 Updated local file: app/src/data/cars.json
Разверните приложение в облаке.
После успешного обогащения данных вы можете развернуть фронтенд-приложение Next.js в общедоступном интернете с помощью Cloud Run. Оно имеет современный интерфейс с рейтингами предложений, интерактивными каруселями изображений и динамической гибридной семантической поисковой строкой, которая выполняет запросы к BigQuery в режиме реального времени.
- В Cloud Shell перейдите в каталог
app/вашего клонированного репозитория. Это крайне важно — оставаясь в корневом каталоге, вы завершите сборку с ошибкой.
cd app
- Разверните приложение в виде бессерверного контейнера с помощью Cloud Run. Команда передает
PROJECT_IDв качестве переменной окружения, чтобы API Next.js знал, к какому проекту BigQuery следует обращаться:
gcloud run deploy cymbal-autos-frontend \
--source . \
--region us-west1 \
--allow-unauthenticated \
--min-instances 1 \
--set-env-vars PROJECT_ID=$PROJECT_ID \
--project $PROJECT_ID
- После завершения развертывания терминал выведет на экран защищенный URL-адрес сервиса. Он будет выглядеть примерно так:
Service URL: https://cymbal-autos-frontend-[YOUR-PROJECT-NUMBER].us-west1.run.app/
9. Изучите приложение Cymbal Autos.
После того, как ваш фронтенд-контейнер был загружен в Cloud Run, пришло время протестировать приложение.
- Перейдите на сайт: откройте защищенный URL-адрес сервиса, возвращенный Cloud Run.

- Выполните семантический поиск: попробуйте поискать абстрактное понятие, например, «Надежный рабочий грузовик, который может перевозить грузы и ездить по бездорожью» . Приложение Next.js преобразует ваш исходный текст в многомодальное векторное представление и запускает
VECTOR_SEARCHв реальном времени в BigQuery, сопоставляя вашу идею с автомобильной экосистемой.

Примечание: объявления отсортированы по семантическому сходству.
- Просмотрите результаты: BigQuery вычислил точное математическое расстояние между вашей абстрактной идеей и характеристиками автомобиля, чтобы вернуть наиболее близкие семантические совпадения.

- Внимательно изучите детали: Щелкните по любому автомобилю, чтобы открыть его полное описание.
- Проверьте сигнал ИИ: пролистайте подробности, чтобы увидеть исходные результаты машинного обучения, полученные вами ранее в лаборатории:
- 📈 Справедливая рыночная стоимость: базовая цена, прогнозируемая вашей моделью XGBoost.
- ✨ Визуальное состояние: Степень физических повреждений, рассчитанная моделями Gemini.
- 🔍 Показатель подлинности: Этот векторный показатель подлинности позволяет отличить добросовестных продавцов от потенциальных мошенников.

10. Уборка
Чтобы избежать постоянных расходов на ресурсы, используемые в этом практическом занятии, с вашего аккаунта Google Cloud, вы можете удалить весь проект Google Cloud, созданный для этого занятия, или выполнить следующий автоматический скрипт завершения работы.
- В терминале Cloud Shell вернитесь в корневой каталог:
cd ..
- Запустите приведенный ниже скрипт очистки. Он очистит ваш сегмент Google Cloud Storage, удалит набор данных
model_devBigQuery, удалит подключение к BigQuery и удалит службу Cloud Run.
chmod +x scripts/cleanup/teardown.sh
./scripts/cleanup/teardown.sh
11. Поздравляем!
Поздравляем! Вы успешно создали интеллектуальную торговую площадку для автомобилей. Вы использовали BigQuery для объединения анализа неструктурированных данных, прогнозного моделирования и интеграции ИИ в единое рабочее пространство.
Что вы узнали
- Как подключить BigQuery к неструктурированным образам Cloud Storage с помощью ObjectRef
- Как извлечь атрибуты автомобиля из фотографий с помощью BigQuery и моделей Gemini, таких как функции
AI.GENERATEиAI.CLASSIFY - Как прогнозировать цены на автомобили с помощью машинного обучения BigQuery
- Как выявить потенциально мошеннические объявления, встраивая описания автомобилей и используя функцию
VECTOR_SEARCH - Как использовать
AI.SCOREдля оперативной оценки неструктурированных данных и включения результатов в комплексную оценку сделок. - Как экспортировать данные и развернуть приложение из маркетплейса Next.js в Cloud Run
Следующие шаги
- Ознакомьтесь с полным спектром функций генеративного искусственного интеллекта, доступных в BigQuery.
- Узнайте больше о создании прогнозных моделей с помощью GoogleSQL.