Spaces:
Sleeping
Sleeping
File size: 3,756 Bytes
2b3c222 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# Большой тест массовой индексации и матчинга
Этот тест проверяет производительность и корректность сервиса эмбеддингов для матчинга недвижимости.
## Что делает тест
1. **Генерация данных**: Создает 1000 лидов и 1000 свойств с разнообразными характеристиками (районы, цены, комнаты, площади)
2. **Массовая индексация**: Отправляет данные на сервис через `/batch` endpoint в батчах по 50 элементов
3. **Симуляция матчинга**: Для каждого лида находит топ-5 похожих свойств по косинусному сходству эмбеддингов
4. **Анализ результатов**: Измеряет время выполнения, статистику сходства, проверяет корректность
## Запуск теста
### 1. Установка зависимостей
```bash
pip install -r requirements.txt
```
### 2. Настройка URL сервиса
В файле `test_mass_indexing.py` проверьте и измените при необходимости:
```python
API_BASE_URL = "https://calcifer0323-matching.hf.space" # Или ваш URL
```
### 3. Запуск
```bash
python test_mass_indexing.py
```
## Параметры теста
- `NUM_LEADS = 1000` - количество лидов
- `NUM_PROPERTIES = 1000` - количество свойств
- `BATCH_SIZE = 50` - размер батча для отправки
- `TOP_K = 5` - количество топ-матчей для каждого лида
## Вывод теста
Тест покажет:
- Время выполнения индексации и матчинга
- Процент успешных запросов
- Статистику сходства (среднее, мин/макс, стандартное отклонение)
- Примеры топ-матчей для первых лидов
## Результаты
Результаты сохраняются в `test_results.json` с полной статистикой и примерами матчей.
## Ожидаемые результаты
При корректной работе:
- Высокий процент успешных эмбеддингов (>95%)
- Время индексации: ~5-15 минут (зависит от сервиса)
- Среднее косинусное сходство: 0.3-0.7 (зависит от качества модели и данных)
- Матчи должны быть логичными (одинаковые районы, похожие цены/комнаты)
## Troubleshooting
- **Ошибка подключения**: Проверьте URL сервиса и доступность
- **Rate limiting**: Сервис имеет лимиты, тест может быть заблокирован
- **Timeout**: Увеличьте `ENCODE_TIMEOUT_SECONDS` в сервисе или уменьшите `BATCH_SIZE`
- **OOM**: Уменьшите `NUM_LEADS` и `NUM_PROPERTIES` для тестирования
## Интеграция с реальным матчингом
В production матчинг происходит в PostgreSQL с pgvector:
```sql
SELECT property_id, 1 - (embedding <=> $lead_embedding) as similarity
FROM properties
ORDER BY embedding <=> $lead_embedding
LIMIT 10;
```
Этот тест симулирует такой матчинг локально для проверки качества эмбеддингов.
|