Files
rag-service/Improvements.md

1.8 KiB
Raw Blame History

Improvements / TODO по оптимизации Embedding-service

1. Оптимизация вычислений в VectorStore

  • Заменить np.sort(...)[-k:] на np.argpartition + np.take для выбора topk:
    • снизит асимптотику с O(n log n) до O(n) по числу примеров;
    • особенно актуально при росте числа эмбеддингов до тысяч и выше.

2. Работа с типами данных эмбеддингов

  • Рассмотреть хранение эмбеддингов в VectorStore в формате float16:
    • веса модели остаются в float32 (как сейчас);
    • вектора примеров после нормализации можно приводить к float16;
    • это даст ~2× экономию памяти на примерах при минимальной потере точности для косинусного сходства.

3. Управление потоками Torch

  • Явно ограничить количество потоков для Torch:
    • при инициализации добавить:
      • torch.set_num_threads(12)
      • torch.set_num_interop_threads(1)
    • это снизит конкуренцию за CPU на серверах, где крутятся ещё боты.

4. Батчирование запросов к модели

  • На будущее, если появится нагрузка:
    • добавить внутри RAGService очередь запросов на эмбеддинги и воркер, который шлёт их в модель батчами (например, окно 520 мс);
    • это уменьшит overhead от частых одиночных вызовов encode.