Spaces:
Sleeping
Sleeping
| # Большой тест массовой индексации и матчинга | |
| Этот тест проверяет производительность и корректность сервиса эмбеддингов для матчинга недвижимости. | |
| ## Что делает тест | |
| 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; | |
| ``` | |
| Этот тест симулирует такой матчинг локально для проверки качества эмбеддингов. | |