Commit Graph

90 Commits

Author SHA1 Message Date
3c40bbde2b 0.9.29] - 2025-10-08
### 🎯 Search Quality Upgrade: ColBERT + Native MUVERA + FAISS

- **🚀 +175% Recall**: Интегрирован ColBERT через pylate с НАТИВНЫМ MUVERA multi-vector retrieval
- **🎯 TRUE MaxSim**: Настоящий token-level MaxSim scoring, а не упрощенный max pooling
- **🗜️ Native Multi-Vector FDE**: Каждый токен encode_fde отдельно → список FDE векторов
- **🚀 FAISS Acceleration**: Двухэтапный поиск O(log N) для масштабирования >10K документов
- **🎯 Dual Architecture**: Поддержка BiEncoder (быстрый) и ColBERT (качественный) через `SEARCH_MODEL_TYPE`
- ** Faster Indexing**: ColBERT индексация ~12s vs BiEncoder ~26s на бенчмарке
- **📊 Better Results**: Recall@10 улучшен с 0.16 до 0.44 (+175%)

### 🛠️ Technical Changes

- **requirements.txt**: Добавлены `pylate>=1.0.0` и `faiss-cpu>=1.7.4`
- **services/search.py**:
  - Добавлен `MuveraPylateWrapper` с **native MUVERA multi-vector** retrieval
  - 🎯 **TRUE MaxSim**: token-level scoring через списки FDE векторов
  - 🚀 **FAISS prefilter**: двухэтапный поиск (грубый → точный)
  - Обновлен `SearchService` для динамического выбора модели
  - Каждый токен → отдельный FDE вектор (не max pooling!)
- **settings.py**:
  - `SEARCH_MODEL_TYPE` - выбор модели (default: "colbert")
  - `SEARCH_USE_FAISS` - включить FAISS (default: true)
  - `SEARCH_FAISS_CANDIDATES` - количество кандидатов (default: 1000)

### 📚 Documentation

- **docs/search-system.md**: Полностью обновлена документация
  - Сравнение BiEncoder vs ColBERT с бенчмарками
  - 🚀 **Секция про FAISS**: когда включать, архитектура, производительность
  - Руководство по выбору модели для разных сценариев
  - 🎯 **Детальное описание native MUVERA multi-vector**: каждый токен → FDE
  - TRUE MaxSim scoring алгоритм с примерами кода
  - Двухэтапный поиск: FAISS prefilter → MaxSim rerank
  - 🤖 Предупреждение о проблеме дистилляционных моделей (pylate#142)

### ⚙️ Configuration

```bash
# Включить ColBERT (рекомендуется для production)
SEARCH_MODEL_TYPE=colbert

# 🚀 FAISS acceleration (обязательно для >10K документов)
SEARCH_USE_FAISS=true              # default: true
SEARCH_FAISS_CANDIDATES=1000       # default: 1000

# Fallback к BiEncoder (быстрее, но -62% recall)
SEARCH_MODEL_TYPE=biencoder
```

### 🎯 Impact

-  **Качество поиска**: +175% recall на бенчмарке NanoFiQA2018
-  **TRUE ColBERT**: Native multi-vector без упрощений (max pooling)
-  **MUVERA правильно**: Используется по назначению для multi-vector retrieval
-  **Масштабируемость**: FAISS prefilter → O(log N) вместо O(N)
-  **Готовность к росту**: Архитектура выдержит >50K документов
-  **Индексация**: Быстрее на ~54% (12s vs 26s)
- ⚠️ **Latency**: С FAISS остается приемлемой даже на больших индексах
-  **Backward Compatible**: BiEncoder + отключение FAISS через env

### 🔗 References

- GitHub PR: https://github.com/sionic-ai/muvera-py/pull/1
- pylate issue: https://github.com/lightonai/pylate/issues/142
- Model: `answerdotai/answerai-colbert-small-v1`
2025-10-09 01:15:19 +03:00
24a1f181b9 dockerbuild-fix
Some checks failed
Deploy on push / deploy (push) Failing after 13s
2025-09-16 12:43:46 +03:00
02e57922d5 dockerfix-5 2025-09-10 12:07:20 +03:00
5e8c5a1af7 dockerfix-4 2025-09-10 12:03:46 +03:00
d8a34957e0 dockerfix-3-versions-bump 2025-09-10 11:59:09 +03:00
75c78dacad dockerfix 2025-09-10 11:00:46 +03:00
b70901f8f7 ## [0.9.19] - 2025-09-01
Some checks failed
Deploy on push / deploy (push) Failing after 5m57s
### 🚀 ML Models Runtime Preloading
- **🔧 models loading**: Перенесена предзагрузка ML моделей из Docker build в runtime startup
  - Убрана предзагрузка из `Dockerfile` - модели теперь загружаются после монтирования `/dump` папки
  - Добавлена async функция `preload_models()` в `services/search.py` для фоновой загрузки
  - Интеграция предзагрузки в `lifespan` функцию `main.py`
  - Использование `asyncio.run_in_executor()` для неблокирующей загрузки моделей
  - Исправлена проблема с недоступностью `/dump` папки во время сборки Docker образа
2025-09-01 16:38:23 +03:00
4489d25913 ## [0.9.18] - 2025-01-09
Some checks failed
Deploy on push / deploy (push) Failing after 1m34s
### 🔍 Search System Redis Storage
- **💾 Redis-based vector index storage**: Переключились обратно на Redis для хранения векторного индекса
  - Заменили файловое хранение в `/dump` на Redis ключи для надежности
  - Исправлена проблема с правами доступа на `/dump` папку на сервере
  - Векторный индекс теперь сохраняется по ключам `search_index:{name}:data` и `search_index:{name}:metadata`
- **🛠️ Improved reliability**: Убрали зависимость от файловой системы для критичных данных
- ** Better performance**: Redis обеспечивает более быстрый доступ к индексу
- **🔧 Technical changes**:
  - Заменили `save_index_to_file()` на `save_index_to_redis()`
  - Заменили `load_index_from_file()` на `load_index_from_redis()`
  - Обновили автосохранение для использования Redis вместо файлов
  - Удалили неиспользуемые импорты (`gzip`, `pathlib`, `cast`)
2025-09-01 15:09:36 +03:00
663942c41e feat: migrate to uv package manager
- Add pyproject.toml with project configuration
- Update requirements.txt and requirements.dev.txt with versions
- Add .uv configuration file
- Update .gitignore for uv
- Update README with uv instructions
- Configure hatchling build system
- Add mypy configuration
- Test uv sync and pytest integration
2025-08-12 13:12:39 +03:00
7118f7c523 redeploy 2025-08-01 12:02:03 +03:00
8788112cf7 nsolid-fix 2025-08-01 12:00:09 +03:00
841273837a nolimit-sigil+nsolid
Some checks failed
Deploy on push / deploy (push) Failing after 5s
2025-08-01 11:58:51 +03:00
3327976586 Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
6d734af5ce depfix-dockernode5 2025-05-26 10:47:33 +03:00
8489320ab1 depfix-dockernode4 2025-05-26 10:04:22 +03:00
ee79091e35 depfix-dockernode3 2025-05-26 09:51:15 +03:00
92ba4c1c03 depfix-dockernode2 2025-05-26 09:48:33 +03:00
16c34ac792 depfix-dockernode 2025-05-26 09:40:15 +03:00
d18e99ee4c depfix-dockernode 2025-05-26 09:39:59 +03:00
Stepan Vladovskiy
7df9361daa debug: Dockerfile with build-essential
Some checks failed
Deploy on push / deploy (push) Failing after 1m36s
2025-05-18 22:43:20 +00:00
dbbfd42e08 redeploy
All checks were successful
Deploy on push / deploy (push) Successful in 57s
2025-03-20 12:35:55 +03:00
47e12b4452 fx2
Some checks failed
Deploy on push / deploy (push) Failing after 16s
2025-03-20 12:33:27 +03:00
ca01181f37 jsonfix
All checks were successful
Deploy on push / deploy (push) Successful in 44s
2025-03-20 12:24:30 +03:00
0aff77eda6 portfix
All checks were successful
Deploy on push / deploy (push) Successful in 49s
2025-03-20 12:13:14 +03:00
a4a3c35f4d lesscode
All checks were successful
Deploy on push / deploy (push) Successful in 46s
2025-03-20 12:04:47 +03:00
25b61c6b29 simple-dockerfile
All checks were successful
Deploy on push / deploy (push) Successful in 1m41s
2025-02-10 19:10:13 +03:00
a84d8a0c7e 0.4.9-c
All checks were successful
Deploy on push / deploy (push) Successful in 7s
2025-02-10 18:04:08 +03:00
5c40ab3d00 312
Some checks failed
Deploy on push / deploy (push) Failing after 9s
2024-10-13 00:49:06 +03:00
9911a9410d ..
Some checks failed
Deploy on push / deploy (push) Failing after 7s
2024-04-10 16:09:03 +03:00
Stepan Vladovskiy
f4c43f7c00 feat: events worker_connections in global nginx.conf
Some checks failed
Deploy on push / deploy (push) Failing after 20s
2024-04-07 14:25:56 -03:00
Stepan Vladovskiy
7c19291ba9 feat: nginx worker events config in Dockerfile
Some checks failed
Deploy on push / deploy (push) Failing after 9s
2024-04-07 13:45:59 -03:00
f52c13e082 staging-deploy-test
Some checks failed
Deploy on push / deploy (push) Failing after 6s
2024-02-29 07:56:23 +03:00
f596a9bf2c update-author_cache 2024-02-25 21:27:07 +03:00
9ea10ba5c1 dockerfile-revert
All checks were successful
Deploy on push / deploy (push) Successful in 1m46s
2024-02-25 19:32:36 +03:00
695c5efbc8 dockerfile-update-4
Some checks failed
Deploy on push / deploy (push) Failing after 2m39s
2024-02-25 19:29:32 +03:00
feea5845a8 dockerfile-update-3
Some checks failed
Deploy on push / deploy (push) Failing after 28s
2024-02-25 19:27:41 +03:00
3b5a6973ef dockerfile-fix
Some checks failed
Deploy on push / deploy (push) Failing after 8s
2024-02-25 19:08:20 +03:00
1e922e3161 create-all-fix
Some checks failed
Deploy on push / deploy (push) Failing after 35s
2024-02-25 18:36:08 +03:00
b01bf77d8e fix-pjs
Some checks failed
Deploy to core / deploy (push) Failing after 1m18s
2024-02-19 11:13:05 +03:00
5772db6a36 query-time-log
Some checks failed
Deploy to core / deploy (push) Failing after 10s
2024-02-19 11:10:12 +03:00
aa55e952aa dockerfile fix 2024-02-19 09:56:23 +03:00
47ecf4bd1a dockerfile-fix
All checks were successful
Deploy to core / deploy (push) Successful in 1m52s
2024-02-17 13:25:24 +03:00
93d536bdba dockerfile-fix
Some checks failed
Deploy to core / deploy (push) Failing after 30s
2024-02-17 13:21:52 +03:00
8a0da7381b Merge branch 'feature/core' of https://dev.discours.io/discours.io/core into feature/core 2024-01-28 10:01:28 +03:00
e2f2976572 portfix 2024-01-25 22:55:00 +03:00
4a5f1d634a granian+precommit 2024-01-25 22:41:27 +03:00
3ab5d53439 curl-fix
Some checks failed
deploy / deploy (push) Failing after 22s
2023-11-23 00:19:15 +03:00
bf241a8fbd merged-isolated-core
Some checks failed
deploy / deploy (push) Failing after 1m46s
2023-10-23 17:47:11 +03:00
0eed70c102 port=8080 2023-10-10 01:09:15 +03:00
150449a0cf port=80 2023-10-06 05:33:51 +03:00