Files
rag-service/Improvements.md

30 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.