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. Установка зависимостей

pip install -r requirements.txt

2. Настройка URL сервиса

В файле test_mass_indexing.py проверьте и измените при необходимости:

API_BASE_URL = "https://calcifer0323-matching.hf.space"  # Или ваш URL

3. Запуск

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:

SELECT property_id, 1 - (embedding <=> $lead_embedding) as similarity
FROM properties
ORDER BY embedding <=> $lead_embedding
LIMIT 10;

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