AIMLBackend

Реализация аналитики на основе векторной схожести для проекта с ограниченным бюджетом

·MAGMA

Введение в проблему

При создании leaderboard'а для проекта DumbQuestion.ai возникла задача отслеживания наиболее часто задаваемых вопросов. Казалось бы, что это простая задача, но люди редко задают один и тот же вопрос одинаково. Было интересно узнать, как творчески пользователи формулируют свои вопросы, и было решено создать leaderboard наиболее часто задаваемых "глупых" вопросов.

Техническая проблема

Люди задают один и тот же вопрос по-разному. Например, "Что такое 2+2?" и "Можешь ли ты сложить два плюс два для меня?" по сути одинаковы. Простой счетчик строк даст шум, а не сигнал. Нужно было найти способ определить семантическую схожесть, а не просто сравнивать строки. Это известная проблема в мире машинного обучения, но типичные решения имеют компромиссы: тяжелые модели, дорогие API или значительную задержку в критическом пути.

Решение: Векторная схожесть на ограниченном бюджете

Каждый вопрос проходит через модель вложения и сравнивается с базой данных Qdrant. Бесплатный тарифный план Qdrant очень щедрый для проекта с ограниченным бюджетом, но самохостинг тривиально прост, если это необходимо. Логика сравнения проста:

  • Генерировать вложение для входящего вопроса
  • Сравнивать с существующими вложениями, используя косинусную схожесть
  • Если схожесть превышает порог, увеличивать счетчик вопроса
  • Если вопрос новый, добавлять его в базу данных
  • Первый экземпляр вопроса становится официальной версией для отображения

Ключевое архитектурное решение

Ни одна из этих операций не выполняется в основном приложении. Это позволяет сохранить основное приложение эффективным и не нагружать его дополнительными вычислениями. Векторная схожесть обеспечивает понимание контекста вопросов, а не просто сравнение строк. Это решение позволяет создать leaderboard, который действительно понимает, о чем спрашивают пользователи.

← Вернуться к блогу
Аналитика по векторной схожести при малом бюджете — MAGMA