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