Урок 04. Обработка запросов и таймаутов. Эмбеддинги и векторы

📁 Блок: Основы AI/LLM ⏱️ Время изучения: ~70 мин 🎯 Сложность: Средняя
#embeddings #vectors #llm-api #faiss #semantic-search

⚡ Кратко: надёжные запросы и эмбеддинги

Реальные API ненадёжны: сервер тормозит, бывают лимиты (rate limits), разрывы сети. Код должен это переживать.

  • Задержки между запросами — не упереться в лимит (Gemini 2.0 Flash в лекции: 2000 запр./мин).
  • Таймаут — чтобы запрос не «висел» вечно (например, 10 с).
  • Повтор с ростом задержки при ошибках 429/500/403 — библиотека tenacity (2 → 4 → 8 с).
  • Эмбеддинг — числовой вектор текста; близкие по смыслу тексты → близкие векторы.
  • Семантический поиск — поиск по смыслу, а не по словам (FAISS / Pinecone / Weaviate).
# retry.py — повтор запроса с экспоненциальной задержкой
from tenacity import retry, stop_after_attempt, wait_exponential

@retry(stop=stop_after_attempt(3),
       wait=wait_exponential(multiplier=1, min=2, max=10))
def ask(prompt):
    return client.models.generate_content(
        model="gemini-2.0-flash", contents=[prompt]).text

📖 О чём этот урок

Урок 03 научил отправлять первый запрос к LLM. Но в реальной жизни API ненадёжны: сервер перегружен, есть лимиты на число запросов, сеть рвётся. Сначала научимся писать устойчивый к сбоям код (таймауты, лимиты, повторы). Затем перейдём к эмбеддингам — числовому представлению смысла текста — и построим семантический поиск, который находит похожие тексты, даже если в них нет совпадающих слов.

Что изучим

  • Проблемы при работе с API: перегрузка, rate limits, нестабильная сеть
  • Задержки между запросами и установка таймаута
  • Ошибки API (500 / 403 / 429) и автоповтор запроса с tenacity
  • Эмбеддинги: что это, зачем, как близость векторов = близость смысла
  • Семантический поиск и векторные базы данных (FAISS, Pinecone, Weaviate)
  • Best practices (вне лекции): косинусная близость и нормализация, батчи эмбеддингов

📚 Что повторить перед изучением

🎯 Что изучать дальше