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`
This commit is contained in:
68
CHANGELOG.md
68
CHANGELOG.md
@@ -1,5 +1,73 @@
|
||||
# Changelog
|
||||
|
||||
## [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`
|
||||
|
||||
## [0.9.28] - 2025-09-28
|
||||
|
||||
### 🍪 CRITICAL Cross-Origin Auth
|
||||
|
||||
Reference in New Issue
Block a user