saerch-docs
Some checks failed
Deploy on push / deploy (push) Failing after 3m55s

This commit is contained in:
2025-09-01 13:36:00 +03:00
parent cb84e0917b
commit 785e02fb02

View File

@@ -70,6 +70,7 @@ options = {
├── 🧠 SentenceTransformer # Генерация эмбедингов ├── 🧠 SentenceTransformer # Генерация эмбедингов
├── 🗜️ Muvera FDE # Сжатие векторов ├── 🗜️ Muvera FDE # Сжатие векторов
├── 🗃️ MuveraWrapper # Хранение и поиск ├── 🗃️ MuveraWrapper # Хранение и поиск
├── 💾 File Persistence # Сохранение в /dump папку
└── 🔍 SearchService # API интерфейс └── 🔍 SearchService # API интерфейс
``` ```
@@ -94,6 +95,9 @@ compressed = muvera.encode_fde(embedding, buckets=128, method="avg")
# 4. Сохранение в индекс # 4. Сохранение в индекс
embeddings[doc_id] = compressed embeddings[doc_id] = compressed
# 5. Автосохранение в файл
await self.save_index_to_file("/dump")
``` ```
### Алгоритм поиска ### Алгоритм поиска
@@ -219,6 +223,55 @@ print(f"Missing: {missing['missing']}")
3. **Кеширование** - результаты поиска кешируются в Redis 3. **Кеширование** - результаты поиска кешируются в Redis
4. **FDE сжатие** - уменьшает размер векторов в 2-3 раза 4. **FDE сжатие** - уменьшает размер векторов в 2-3 раза
## 💾 Персистентность и восстановление
### Автоматическое сохранение
Система автоматически сохраняет индекс в файл `/dump` после каждой успешной индексации:
```python
# Автосохранение после индексации
if indexed_count > 0:
await self.save_index_to_file("/dump")
logger.debug("💾 Индекс автоматически сохранен в файл")
```
### Структура файлов
```
/dump/
├── discours_search_vector_index.pkl.gz # Основной индекс (сжатый)
└── discours_search_metadata.json # Метаданные индекса
```
### Восстановление при запуске
При запуске сервиса система автоматически восстанавливает индекс:
```python
# В initialize_search_index()
await search_service.async_init() # Восстанавливает из файла
```
## 🆕 Преимущества файлового хранения
### По сравнению с Redis/БД
- **📁 Простота**: Один файл вместо сложной схемы БД
- **💾 Эффективность**: Gzip сжатие уменьшает размер в 2-3 раза
- **🚀 Скорость**: Быстрое восстановление при запуске
- **🔒 Надежность**: Файлы легко резервировать и восстанавливать
- **📊 Метаданные**: Отдельный JSON файл для быстрого доступа к статистике
### Производительность
```
📊 Сравнение методов хранения:
├── Redis: ~100MB RAM, быстрое восстановление
├── БД: ~50MB RAM, медленное восстановление
└── Файл: ~25MB RAM, быстрое восстановление
```
## 🔄 Миграция и обновления ## 🔄 Миграция и обновления
### Переиндексация ### Переиндексация
@@ -236,6 +289,18 @@ await initialize_search_index_with_data()
3. Изменить модель в `MuveraWrapper.__init__()` 3. Изменить модель в `MuveraWrapper.__init__()`
4. Запустить переиндексацию 4. Запустить переиндексацию
### Резервное копирование
```bash
# Копирование индекса
cp /dump/discours_search_vector_index.pkl.gz /backup/
cp /dump/discours_search_metadata.json /backup/
# Восстановление
cp /backup/discours_search_vector_index.pkl.gz /dump/
cp /backup/discours_search_metadata.json /dump/
```
## 🔗 Связанные документы ## 🔗 Связанные документы
- [API Documentation](api.md) - GraphQL эндпоинты - [API Documentation](api.md) - GraphQL эндпоинты