From 955f51842961f23683c3c25b37211b2351d67cb3 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 28 Jan 2026 21:09:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20healthcheck:=20=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BF=D1=83=D1=82=D1=8C=20?= =?UTF-8?q?=D0=B8=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B0=20API=20=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Improvements.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Improvements.md diff --git a/Improvements.md b/Improvements.md new file mode 100644 index 0000000..a853e42 --- /dev/null +++ b/Improvements.md @@ -0,0 +1,29 @@ +# Improvements / TODO по оптимизации Embedding-service + +## 1. Оптимизация вычислений в `VectorStore` + +- Заменить `np.sort(...)[-k:]` на `np.argpartition` + `np.take` для выбора top‑k: + - снизит асимптотику с O(n log n) до O(n) по числу примеров; + - особенно актуально при росте числа эмбеддингов до тысяч и выше. + +## 2. Работа с типами данных эмбеддингов + +- Рассмотреть хранение эмбеддингов в `VectorStore` в формате `float16`: + - веса модели остаются в `float32` (как сейчас); + - вектора примеров после нормализации можно приводить к `float16`; + - это даст ~2× экономию памяти на примерах при минимальной потере точности для косинусного сходства. + +## 3. Управление потоками Torch + +- Явно ограничить количество потоков для Torch: + - при инициализации добавить: + - `torch.set_num_threads(1–2)` + - `torch.set_num_interop_threads(1)` + - это снизит конкуренцию за CPU на серверах, где крутятся ещё боты. + +## 4. Батчирование запросов к модели + +- На будущее, если появится нагрузка: + - добавить внутри `RAGService` очередь запросов на эмбеддинги и воркер, который шлёт их в модель батчами (например, окно 5–20 мс); + - это уменьшит overhead от частых одиночных вызовов `encode`. +