Представьте, что вы запускаете продвинутые рабочие процессы машинного обучения — от прогнозирования и классификации до генерации многомерных эмбеддингов — не покидая привычный pandas DataFrame. С новым аксессором .bigquery из BigQuery DataFrames (BigFrames) эта идея стала реальностью. Вы можете беспрепятственно вызывать корпоративные AI-функции BigQuery прямо внутри pandas, масштабируя ваши пайплайны обработки данных и машинного обучения в облачной инфраструктуре.
Возьмем в качестве примера линейную регрессию. Традиционно пользователю pandas, которому необходимо запустить регрессию, приходилось извлекать данные локально, вручную отбирать признаки и обучать собственную модель scikit-learn следующим образом:
Теперь с помощью аксессора .bigquery вы можете полностью обойти локальный процесс обучения и использовать мощный ai.predict() непосредственно на ваших данных в BigQuery:
Как видите, ai.predict() способен решать задачи регрессии непосредственно над двумя датафреймами pandas с помощью одного вызова функции, что значительно упрощает весь процесс ML.
Как работает аксессор BigQuery
Под капотом аксессор .bigquery использует библиотеку BigQuery DataFrames, чтобы прозрачно переносить ваши вычисления в Google Cloud. Когда вы вызываете AI-метод, такой как .ai.predict(), он не вычисляет регрессию локально. Вместо этого он транслирует операцию pandas в Google Standard SQL, выполняет соответствующую базовую модель (например, TabFM) нативно в инфраструктуре BigQuery и плавно возвращает результат в виде стандартного pandas DataFrame. Это позволяет вам легко обрабатывать локальные наборы данных с помощью мощных возможностей, уникальных для BigQuery.
В следующих разделах подробно описаны дополнительные примеры исполняемого кода. Вы также можете найти их все в этом notebook.
Настройка окружения
Перед выполнением примеров кода из этой публикации убедитесь, что у вас есть проект Google Cloud со следующими назначенными ролями (подробнее см. в разрешениях для AI-функций):
- Запуск заданий запросов: BigQuery Job User (roles/bigquery.jobUser)
Запуск заданий запросов: BigQuery Job User (roles/bigquery.jobUser)
- Доступ к базовой модели в Gemini Enterprise Agent Platform: Agent Platform User (roles/aiplatform.user)
Доступ к базовой модели в Gemini Enterprise Agent Platform: Agent Platform User (roles/aiplatform.user)
Затем установите pandas и bigframes в вашей среде Jupyter. Чтобы включить AI-аксессоры, просто импортируйте библиотеку bigframes и укажите идентификатор вашего проекта Google Cloud. Это гарантирует, что все последующие вызовы AI-функций будут направляться через ваш авторизованный проект:
После настройки вы сможете вызывать AI-функции BigQuery непосредственно для стандартных объектов pandas.
Функции для pandas Series
AI-функции, привязанные к pandas `Series`, принимают на вход одноколоночные последовательности.
Пример: AI.EMBED
Генерация векторных эмбеддингов — фундаментальный шаг во многих современных конвейерах NLP и семантического поиска. С помощью функции `ai.embed()` вы можете вычислить эмбеддинги для целого столбца текста с помощью одного простого выражения.
Под капотом BigFrames преобразует pandas Series для обработки в BigQuery и приводит результат обратно к нативному объекту pandas Series. С точки зрения разработчика весь рабочий процесс полностью остается в рамках pandas.
Обратите внимание, что результат этой операции — нативный pandas `Series`, содержащий полученный список эмбеддингов. BigFrames берет на себя временные преобразования BigQuery, выполнение модели и окончательное форматирование данных, гарантируя, что вам никогда не придется покидать привычный интерфейс pandas.
Пример: AI.SIMILARITY
Когда вам нужно рассчитать семантическую близость, функция `ai.similarity()` вычисляет значения косинусного сходства между элементами вашей серии и целевым значением. Этим целевым значением может быть как скалярный строковый литерал, так и другая серия. Вот как вы можете сравнить pandas `Series` со скалярной строкой для поиска схожих понятий:
Точно так же вы можете выполнять попарные сравнения между двумя отдельными объектами pandas `Series`, чтобы находить семантические корреляции между различными наборами данных:
В обоих случаях возвращаемый объект представляет собой стандартный pandas `Series` со значениями сходства с плавающей точкой, что делает его сразу совместимым со стандартными методами pandas, такими как фильтрация или сортировка.
Функции для pandas DataFrame
AI-функции для DataFrame работают с многоколоночными структурированными таблицами или обрабатывают сложные промпты, включающие несколько источников входных данных.
Пример: AI.FORECAST
Прогнозирование временных рядов обычно требует большого количества шаблонного кода для форматирования временных меток, группировки сущностей и обучения модели. Функция `ai.forecast()` выполняет прогнозирование временных рядов по сгруппированным структурированным данным с использованием простых высокоуровневых параметров. Чтобы продемонстрировать это, сначала подготовьте исходный тестовый DataFrame, представляющий исторические данные о продажах:
Подготовив данные, вы можете вызвать `ai.forecast()` непосредственно для DataFrame. Здесь вы указываете целевую метрику, столбец временных меток, ключ группировки и горизонт прогнозирования в три дня:
Возвращенный DataFrame содержит полные прогнозные значения наряду со статистическими параметрами, такими как доверительные уровни и интервалы прогноза. Внутри этот вызов запускает модель TimesFM, которая выполняет анализ трендов и возвращает аккуратно структурированные результаты обратно в вашу локальную среду в виде pandas DataFrame. Вы также можете выбрать версию модели с помощью аргумента model. Например, передайте model="TimesFM 3.0", чтобы использовать новейшую модель TimesFM (сейчас в статусе Preview в BigQuery), которая занимает 1-е место в бенчмарках прогнозирования GIFT-Eval, FEV-Bench и TIME.
Пример: AI.IF
Фильтрация строк по условию на естественном языке — одна из наиболее распространенных задач генеративного ИИ. Функция `ai.if_()` вычисляет промпт, составленный из строковых литералов и столбцов DataFrame, и возвращает True или False для каждой строки:
Поскольку `ai.if_()` возвращает булеву Series, вы можете использовать ее напрямую в качестве маски фильтрации pandas, например `df[df.bigquery.ai.if_(prompt)]`. По умолчанию `ai.if_()` работает в оптимизированном режиме (optimization_mode="minimize_cost"): локальная дистиллированная модель обрабатывает большую часть строк, и только оставшиеся отправляются в Gemini, что снижает затраты и задержку на больших объемах данных. Чтобы отправлять каждую строку в LLM, установите `optimization_mode` в значение `"maximize_quality"`.
Начало работы
AI-функции, предоставляемые аксессором bigquery, открывают доступ к передовым инструментам машинного обучения прямо внутри ваших нативных структур данных, позволяя решать сложные AI-задачи, не покидая привычную экосистему Python.
В настоящее время поддерживаются следующие AI-функции (подробности см. в documentation):
Pandas Series
- embed(): генерирует векторные эмбеддинги для одного столбца.
embed(): генерирует векторные эмбеддинги для одного столбца.
- generate_embedding(): генерирует векторные эмбеддинги для таблицы.
generate_embedding(): генерирует векторные эмбеддинги для таблицы.
- generate_table(): выполняет задачи обработки естественного языка и генерирует структурированные выходные данные.
generate_table(): выполняет задачи обработки естественного языка и генерирует структурированные выходные данные.
- generate_text(): выполняет задачи обработки естественного языка и генерирует текст в свободной форме.
generate_text(): выполняет задачи обработки естественного языка и генерирует текст в свободной форме.
- similarity(): вычисляет семантическую близость (косинусное сходство) между записями.
similarity(): вычисляет семантическую близость (косинусное сходство) между записями.
Pandas DataFrame
- classify(): выполняет классификацию в условиях нулевого обучения (zero-shot classification).
classify(): выполняет классификацию в условиях нулевого обучения (zero-shot classification).
- forecast(): выполняет прогнозирование временных рядов для сгруппированных данных с использованием TimesFM, включая новую модель TimesFM 3.0.
forecast(): выполняет прогнозирование временных рядов для сгруппированных данных с использованием TimesFM, включая новую модель TimesFM 3.0.
- generate(): оценивает динамические промпты по нескольким столбцам для генерации текстовых ответов.
generate(): оценивает динамические промпты по нескольким столбцам для генерации текстовых ответов.
- generate_bool(): оценивает условия на естественном языке и возвращает логические значения (True/False).
generate_bool(): оценивает условия на естественном языке и возвращает логические значения (True/False).
- generate_double(): оценивает промпт и возвращает числа с плавающей точкой.
generate_double(): оценивает промпт и возвращает числа с плавающей точкой.
- generate_int(): оценивает промпт и возвращает целые числа.
generate_int(): оценивает промпт и возвращает целые числа.
- if_(): фильтрует строки по условию на естественном языке, используя оптимизированный режим по умолчанию для снижения затрат и задержек.
if_(): фильтрует строки по условию на естественном языке, используя оптимизированный режим по умолчанию для снижения затрат и задержек.
- predict(): выполняет прогнозное моделирование, такое как регрессия, с использованием TabFM.
predict(): выполняет прогнозное моделирование, такое как регрессия, с использованием TabFM.
- score(): оценивает входные данные на основе описанной вами системы оценки.
score(): оценивает входные данные на основе описанной вами системы оценки.
Независимо от того, хотите ли вы создавать эмбеддинги или запускать полноценное прогнозирование временных рядов, функции BigQuery AI в pandas делают масштабирование машинного обучения простым и удобным. Попробуйте их в деле, и пусть ваши данные выполняют всю сложную работу!
- Анализ данных









