ЛЕКЦІЯ 17

MLOps: моделі та бази даних

Основи баз даних

VTFK • 2025

Що вже вивчили

Лекція 16: Типи JOIN

  • INNER, LEFT, RIGHT JOIN
  • SELF JOIN для ієрархій
  • Аналіз даних с JOIN

План лекції

  • Що таке MLOps
  • Дані → модель → передбачення
  • Інтеграція БД з ML
  • Майбутнє AI у даних

Фокус: як БД і ML працюють разом

ML цикл життя

MLOps

Machine Learning Operations

Практики які об'єднують розробку ML моделей з операціями (вибір даних, мониторинг, масштабування).

Аналогія: Як конвеєр: дані → обробка → модель → передбачення

ML цикл: Дані → Модель → Передбачення

Інтеграція з БД

%%{init: {"theme": "neutral", "mermaid": {"version": "11.12.2"}}}%% flowchart LR DB[(БД
користувачи,
замовлення)] Extract[Вибір даних
SELECT] Clean[Очистка
NULL, дублікати] Feature[Feature Engineering
нові колонки] Train[Тренування
моделі] Model[Модель ML] Predict[Передбачення] Store[(Зберігання
результатів)] DB --> Extract Extract --> Clean Clean --> Feature Feature --> Train Train --> Model Model --> Predict Predict --> Store

Роль БД у ML

Приклад: Рекомендаційна система

Від БД до передбачення

# Крок 1: Вибрати дані з БД
query = """
  SELECT user_id, item_id, rating
  FROM ratings
  WHERE created_at > DATE_SUB(NOW(), INTERVAL 1 YEAR)
"""
df = pd.read_sql(query, conn)

# Крок 2: Підготувати
df = df.fillna(0)  # NULL → 0

# Крок 3: Тренувати модель
model = CollaborativeFiltering()
model.fit(df)

# Крок 4: Передбачити для користувача
recommendations = model.predict(user_id=123, n=5)

# Крок 5: Зберегти результати
save_to_db(recommendations)

SQL для ML: вибір даних

Feature engineering через SQL

Створюємо ознаки у БД

-- Готуємо дані прямо у SQL
SELECT 
  user_id,
  (total_spent / order_count) AS avg_order_value,
  DATEDIFF(NOW(), last_order_date) AS days_since_purchase,
  CASE 
    WHEN total_spent > 1000 THEN 'VIP'
    WHEN total_spent > 500 THEN 'Regular'
    ELSE 'New'
  END AS customer_segment
FROM users
WHERE active = true;

Вектори та Embedding DBs

Зберігання векторів у БД

PostgreSQL + pgvector

-- Таблиця для зберігання ембеддингів
CREATE TABLE documents (
  id BIGSERIAL PRIMARY KEY,
  title VARCHAR(255),
  content TEXT,
  embedding vector(384)  -- 384-вимірний вектор
);

-- Пошук найближчих текстів
SELECT title
FROM documents
ORDER BY embedding <-> query_embedding
LIMIT 5;

Міні-вікторина

Для чого ML моделі потребують БД?

  • Тільки для зберігання результатів
  • Для вибору даних тренування і real-time предиктів
  • ML не потребує БД
✅ Правильна відповідь: Для вибору даних тренування і real-time предиктів
💡 Пояснення:

БД критична для тренування (历史 дані) та інференції (нові дані).

Помилка: ML без обробки даних

⚠️ ЗАСТЕРЕЖЕННЯ

«грязні» дані = поганий модель

❌ Неправильно

# НЕПРАВИЛЬНО: прямо у модель
data = db.query('SELECT * FROM users')
model.fit(data)  # дані можуть мати NULL, дублікати

NULL та дублікати спотворюють результати

✓ Правильно

# ПРАВИЛЬНО: очистити спочатку
data = db.query('SELECT * FROM users')
data = data.fillna(0).drop_duplicates()
model.fit(data)

Data preparation критична

Еволюція ML + DB

Від окремих до інтегрованих

2010

Hadoop/MapReduce

BigData вперше

2015

TensorFlow

ML framework

2020

Vector DBs

MongoDB, Postgres

2025

AI-Native DB

ML вбудована

Best practices ML + DB

Міні ТЗ: простий ML pipeline

Комплетний pipeline приклад

End-to-end ML workflow

import pandas as pd
from sklearn.linear_model import LinearRegression

# Крок 1: Вибір
query = "SELECT user_id, age, spending FROM users WHERE active=true"
df = pd.read_sql(query, db_conn)

# Крок 2: Очистка
df = df.dropna()

# Крок 3: Тренування
X = df[['age']]
y = df['spending']
model = LinearRegression()
model.fit(X, y)

# Крок 4: Предикт
new_age = 30
predicted_spending = model.predict([[new_age]])

# Крок 5: Зберігання
db_conn.execute(
  'INSERT INTO predictions VALUES (?, ?)',
  (new_age, predicted_spending)
)

Підсумки

  • ML потребує даних з БД
  • Очистка та підготовка критичні
  • Вектори все більше використовуються

Далі — GROUP BY та аналіз даних

Домашнє завдання

Наступна лекція:

Лекція 18: GROUP BY & Window Functions

📚 Корисні ресурси:

📚 Корисні ресурси:

Дякую за увагу! 💾

← Повернутися до списку лекцій