Сопоставление лекарств с главным каталогом
Python • NLP • Qdrant • PostgreSQL
Система матчинга номенклатуры аптек с единым справочником лекарств. Автоматическая нормализация наименований и МНН, устойчивое сопоставление «как написано» (разные языки/формы записи/опечатки) с эталонной карточкой препарата.
Исходная ситуация
Задачи бизнеса
- • Свести ассортимент в единый справочник: нормализовать наименования, МНН, формы и дозировки
- • Убрать дубли и «расщеплённые» карточки, улучшить аналитику и поиск
- • Снизить ошибки подбора и возвраты за счёт корректной идентификации
- • Масштабировать приём новых поставщиков и ежедневные обновления
- • Подготовить базу для рекомендаций, цен и прогнозов на уровне унифицированных SKU
Исходные данные
- • Карточки поставщиков: названия, МНН, формы выпуска, дозировки, фасовка, производитель
- • Эталонный справочник: нормализованные названия, МНН, классификаторы
- • Дополнительные словари: синонимы действующих веществ, нормализация единиц и форм, стоп-слова
- • История цен, остатков и продаж для бизнес-приоритизации
Проблемы до внедрения
В разных источниках лекарства описаны по-разному: вариативная запись МНН, форм и дозировок, дубли, сокращения, транслит, опечатки. Ручная нормализация прайс-листов занимает 2–3 дня на 10 000 позиций, а несогласованность справочников приводит к:
- • Искажению аналитики: маржинальность и ABC-анализ некорректны из-за расщеплённых карточек
- • Ошибкам выбора: клиенты заказывают не тот препарат, возвраты растут на 15–20%
- • Потерям выручки: при отсутствии препарата система не предлагает аналог по МНН
- • Замедлению масштабирования: подключение нового поставщика требует недель ручной работы
Зачем это бизнесу?
Единый справочник лекарств обеспечивает точную аналитику, снижает операционные потери и создаёт основу для автоматизации.
Единая «истина» для аналитики и операций
Сопоставление даёт согласованные витрины по МНН и категориям, обеспечивая корректную маржинальность, оборачиваемость и ABC/XYZ-анализ без дублей.
Пример: все варианты записи «Парацетамол 500мг табл.» сопоставляются с одной эталонной карточкой, что даёт точную аналитику продаж и маржи.
Снижение операционных потерь на 60%
Меньше ошибок выбора и возвратов за счёт корректной идентификации препаратов. Ускорение приёма новых прайс-листов и интеграций с поставщиками.
Пример: система автоматически распознаёт «Амоксициллин 250мг капс.», «Amoxicillin 250mg capsules» и «Амоксіцилін 250мг» как один препарат, предотвращая дубли и ошибки подбора.
Фундамент для роста выручки
Упорядоченный каталог — основа для интеллектуальных рекомендаций замен, автозаказа по аналогам, ценовой аналитики и AI-ассистентов провизора.
Пример: на основе унифицированных SKU система автоматически предлагает замену при отсутствии препарата, анализирует ценовую эластичность по МНН и оптимизирует закупки аналогов.
Масштабируемость × 10
Автоматическое сопоставление позволяет быстро интегрировать новых поставщиков без ручной нормализации. Обработка 10 000+ позиций за минуты.
Пример: прайс-лист из 10 000 позиций обрабатывается и сопоставляется со справочником за 3–5 минут вместо 2–3 дней ручной работы категорийного менеджера.
Устойчивое сопоставление несмотря на вариации
Система корректно сопоставляет лекарства даже при различиях в языке записи (рус./англ./укр.), формах (табл./капс./амп.), опечатках и транслите. Гибридный поиск (BM25 + семантические эмбеддинги) обеспечивает 92% precision@5 и F1 = 0.89.
Использование Qdrant с filterable HNSW позволяет находить кандидаты среди миллионов препаратов за ≤ 50 мс с учётом фильтров по производителю, категории и форме выпуска.
Как это работает технически
Конвейер «нормализация → кандидаты → переранжирование → контроль качества» с гибридным поиском и машинным обучением для точного сопоставления.
Нормализация текста
Приведение строк к единому формату
Правила приведения строк: регулярные выражения, токенизация, лемматизация; унификация форм (табл./капс./амп.) и единиц (мг, мл), извлечение доз и объёмов; выделение МНН и «ядерного» имени.
Извлечение атрибутов
- • МНН (международное непатентованное название)
- • Форма выпуска (таблетки, капсулы, ампулы)
- • Дозировка и единицы измерения
- • Объём и фасовка
Унификация
- • Нормализация единиц (мг ↔ mg, мл ↔ ml)
- • Стандартизация форм (табл. ↔ таблетки)
- • Обработка транслита и опечаток
- • Удаление стоп-слов и артиклей
Поиск кандидатов (Hybrid Retrieval)
Комбинация символьных и семантических методов
Система использует гибридный подход для поиска кандидатов: символьные и лекс-ические сигналы для грубого отсечения и семантические эмбеддинги через Qdrant для высокой полноты.
Символьные методы
- • BM25/TF-IDF для лексического поиска
- • Jaccard similarity для множеств
- • Levenshtein distance для опечаток
- • Быстрое отсечение неподходящих вариантов
Семантический поиск (Qdrant)
- • HNSW-индекс для быстрого ANN-поиска
- • Filterable payload-индексы по атрибутам
- • Фильтрация по производителю и категории
- • Низкая латентность при росте данных
Feature Store
Текстовые сходства (title/МНН/форма/доза), структурные совпадения (единицы/фасовка), бренд-аффинити, penalize-правила (конфликт форм/доз), ценовые и упаковочные эвристики.
Результат: 15+ признаков для каждой пары препаратов
Reranking модель
LightGBM/LogReg с кастомным лоссом под F1/nDCG; пороги на auto-match и «серую зону» под ручное ревью. Модель обучается на размеченных парах с учётом бизнес-приоритетов.
Технология: Gradient Boosting для бинарной классификации пар
Правила и модерация
Guardrails (например, несовместимые формы не могут склеиваться), очередь спорных пар на модерацию; фидбек возвращается в обучение (active learning). Человек-в-контуре для валидации сложных случаев.
Результат: баланс между автоматизацией и контролем качества
Интерфейс модерации
Веб-интерфейс для проверки спорных сопоставлений, разметки пар и управления порогами. Search-as-you-type для быстрого поиска при работе оператора.
Результат: эффективная работа модераторов и постоянное улучшение модели
Технологический стек
Python
pandas, rapidfuzz, scikit-learn
LightGBM
Gradient Boosting для переранжирования
Qdrant
Векторный поиск, HNSW, фильтруемые индексы
PostgreSQL
Сырьё, маппинги, ревью
ClickHouse
Витрины аналитики (опционально)
Apache Airflow
Оркестрация пайплайнов
FastAPI
Службы сопоставления
Docker
Контейнеризация
Почему Qdrant?
Выделенная архитектура под векторный поиск (segment-based HNSW, mutable/immutable сегменты, фильтруемый индекс) обеспечивает низкую латентность при росте данных и сложной фильтрации. Это критично для обработки миллионов препаратов с фильтрацией по атрибутам в реальном времени.
Результаты проекта
Ключевые достижения после внедрения системы матчинга
Все карточки поставщиков сопоставлены с эталонным справочником по МНН, формам и дозировкам. 85% матчинга работает автоматически, без участия оператора. Основа для точной аналитики и автоматизации закупок.
Сокращение дублей на 73%
Устранение «расщеплённых» позиций и дублей в каталоге. Чистые витрины BI с корректной аналитикой по МНН и категориям. Консолидация карточек с вариативной записью.
Ускорение загрузки в 10 раз
Прайс-лист из 10 000+ позиций обрабатывается за минуты вместо дней ручной работы. Автоматическое сопоставление 85% препаратов без участия оператора.
Готовность к автоматизации
Основа для «умных» сценариев: поиск по МНН и синонимам, рекомендации по замене препаратов, автозаказ и динамическое ценообразование с учётом аналогов.
Контроль качества и мониторинг
Метрики качества
- • F1/precision/recall@k — основные метрики точности сопоставления
- • nDCG/MRR@k — оценка качества ранжирования кандидатов
- • Coverage — доля уникальных позиций, получивших валидную связь со справочником
- • Доля авто-матчинга — процент сопоставлений без ручного ревью
- • Свежесть индекса — контроль актуальности векторного индекса в Qdrant
Мониторинг и процедуры
- • Дашборды качества по категориям и брендам
- • Алерты на всплески ложноположительных сопоставлений
- • Периодическое переобучение модели на новых данных
- • Аудит спорных связей и журнал изменений
- • Golden-set для контроля регрессий и A/B-тестирование правил нормализации
Готовы внедрить систему матчинга?
Запустим промышленный контур сопоставления для аптечного каталога: нормализуем наименования и МНН, подключим Qdrant для быстрого семантического поиска кандидатов и выведем качественные связи со справочником — основа для точной аналитики, меньших возвратов и масштабируемых интеграций.
Что входит в проект
Стоимость зависит от объёма каталога, сложности нормализации и требований к интеграции
Почта: info@bi-ai.ru • Telegram: @bi_ai_team • Контакты