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;
```

Этот тест симулирует такой матчинг локально для проверки качества эмбеддингов.