matching / TEST_README.md
Calcifer0323's picture
Add comprehensive mass indexing and matching test
2b3c222
# Большой тест массовой индексации и матчинга
Этот тест проверяет производительность и корректность сервиса эмбеддингов для матчинга недвижимости.
## Что делает тест
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;
```
Этот тест симулирует такой матчинг локально для проверки качества эмбеддингов.