🐛 Частые ошибки

← К оглавлению урока

⚡ Топ-3 ошибки

  • Запрос без таймаута → код виснет
  • Бесконечный/безусловный повтор (даже 403)
  • Сравнение строк вместо векторов / разные размерности в FAISS

1. Запрос без таймаута

Симптом: при перегрузке сервера программа «висит» и ничего не делает.

Задавайте таймаут на клиенте (HttpOptions(timeout=...)) и обрабатывайте ошибку.

2. Бесконечный или безусловный повтор

Повтор «вечно» при ошибке только усиливает нагрузку и блокировку. Всегда ограничивайте число попыток (stop_after_attempt(3)) и используйте растущую задержку. Ошибку 403 (неверный ключ) повторять бессмысленно — её нужно исправлять.

3. Игнорирование rate limit

Слать запросы пачкой без пауз → ошибка 429 и временная блокировка. Добавляйте задержки (time.sleep) и держитесь ниже лимита.

4. Сравнение строк вместо эмбеддингов

Сравнение текста как строк (==, in, TF-IDF по символам) не понимает смысл: «латте» и «капучино» окажутся «непохожими». Для смысла нужны эмбеддинги.

5. Разная размерность векторов в FAISS

В индекс нужно класть векторы одной длины (одна и та же модель эмбеддингов). Запрос тоже должен иметь форму (1, dimension) — отсюда .reshape(1, -1). Иначе index.search упадёт с ошибкой размерности.

6. Тип данных для FAISS

FAISS ожидает float32. Если эмбеддинги в float64, приведите: arr.astype("float32").

⚠️ Тексты ошибок и требования к типам зависят от версий FAISS/SDK.