Обработка естественного языка

NLP System Design

Стартап запустил поиск по базе юридических документов. Precision 60%, 3 секунды на запрос, один раз в неделю сервис падает. Конкурент с той же задачей: precision 91%, 300ms, uptime 99.9%. Разница - не в модели. Модели почти идентичны. Разница в архитектуре pipeline: гибридный поиск, reranking, async processing, monitoring. System design - это умноженный intelligence.

  • **Яндекс Поиск**: hybrid retrieval (BM25 + dense), BERT-based reranking, real-time indексирование. 150M запросов/день. Latency P99 < 500ms. Тысячи inженеров работают над NLP компонентами.
  • **Wildberries поиск**: semantic search по 50M товаров на русском. Товары с плохими описаниями находятся через semantic similarity к запросу. Конверсия поиска - ключевая метрика.
  • **Банки content moderation**: отзывы и сообщения через NLP pipeline. Банк ВТБ, Тинькофф - real-time модерация чатов поддержки. Обнаружение мошенничества через anomaly detection в тексте транзакций.

Предварительные знания

  • Embeddings, bi-encoders и approximate nearest neighbor search
  • Retrieval-Augmented Generation: retrieval, reranking, grounding
  • Классификация текста - для intent routing и уровней content moderation
  • Базовое системное мышление: перцентили latency (p50/p99), throughput, кэширование, fallback
  • RAG: Retrieval-Augmented Generation
  • Sentence и document embeddings
  • Классификация текста

От feature engineering к LLM-as-a-service

Production NLP менял форму трижды за пять лет. В середине 2010-х типичный пайплайн представлял собой цепочку задаче-специфичных стадий: токенизатор, признаки, построенные вручную (TF-IDF, n-граммы, POS-теги), классификатор вроде логистической регрессии или SVM, и отдельная модель под каждую задачу. Каждая новая задача означала новый feature engineering и новый размеченный датасет. Первый сдвиг пришёл с BERT в 2018 году: один предобученный трансформер, дообученный под задачу, заменил большую часть feature engineering, и единая архитектура стала покрывать классификацию, NER и question answering. Вторым сдвигом стали масштаб и serving-инфраструктура, когда GPU-инференс, ONNX, дистилляция (DistilBERT) и динамический батчинг превратили исследовательские модели в сервисы с низкой задержкой. Третий сдвиг, примерно в 2020-2023 годах, это LLM-as-a-service: вместо обучения и хостинга отдельной модели под каждую задачу команды вызывают размещённый API (OpenAI, Anthropic) или сами хостят открытую модель (Llama, Mistral) и формируют поведение через промпты и RAG. Сложная инженерия сместилась выше по стеку, от проектирования признаков к качеству retrieval, управлению контекстом, оценке, контролю стоимости и пропускной способности сервинга, и именно об этом сегодня идёт речь в production system design.

Semantic Search: архитектура поиска

**Semantic search** превосходит keyword search потому что понимает смысл запроса. 'Сердечный приступ' найдёт 'инфаркт миокарда'. Архитектура: Bi-encoder для retrieval (offline индексирование + online encoding запроса) + Cross-encoder для reranking + Traditional BM25 в hybrid.

**Elasticsearch vs Qdrant vs Pinecone**: Elasticsearch - зрелый, хорошо для hybrid (BM25 + kNN), много operational overhead. Qdrant - лучший throughput на pure vector search, Rust, minimal ops. Pinecone - managed, zero ops, но нет self-hosted и дороже. Для стартапа: Qdrant. Для enterprise с Elastic уже в стеке: добавить kNN к существующему.

Поисковый движок: indексирование 1M документов, 100K запросов/день. BM25 или semantic search?

Conversational AI: архитектура чат-бота

Production чат-бот - это не один LLM вызов. Компоненты: **Intent Classification** (что хочет пользователь?), **Entity Extraction** (какие параметры задачи?), **Dialog State Tracking** (что уже обсудили?), **Response Generation** (как ответить?), **Fallback** (когда эскалировать к человеку?).

**Task-oriented vs Open-domain диалог**: task-oriented (customer support, booking) - чёткие intents и slots, традиционный NLP pipeline эффективнее. Open-domain (general assistant) - LLM без жёсткой структуры. В 2024 грань стирается: LLM с structured prompts покрывает оба случая, но task-oriented традиционный pipeline дешевле.

Confidence классификатора intent = 0.45 (ниже threshold 0.7). Что должен делать бот?

Content Moderation на NLP

**Content moderation** - автоматическая классификация контента на токсичный/безопасный. Специфика: высокая recall (не пропустить вредоносное) при достаточной precision (не блокировать безвредное). Multi-label: один текст может быть toxic + spam + off-topic одновременно.

**Meta, TikTok, YouTube**: Multi-stage moderation. Автоматический (ML) для явно нарушающего, human review для пограничных случаев, appeal process. TikTok обрабатывает 1B+ видео в день - автоматика обязательна. Recall важнее precision: лучше лишний раз проверить, чем пропустить вредоносное.

Content moderation система: precision 90%, recall 70%. Что это означает для платформы?

NLP Pipeline: от raw text до production

Production NLP pipeline - это больше чем модель. Preprocessing, versioning, monitoring, A/B тестирование, data drift detection. **MLflow, DVC** для versioning. **Evidently AI** для мониторинга drift. **Seldon** или **BentoML** для serving.

**Data drift в NLP**: распределение входящих текстов меняется со временем. Сезонность (новый год = разные запросы), события (пандемия меняет медицинские запросы), linguistic evolution (новые слова, сленг). **Embedding drift monitor**: сравниваем distribution embeddings incoming запросов с baseline. Значительное отклонение = сигнал переобучить.

NLP model deployment = просто обернуть модель в Flask API и запустить

Production NLP требует: preprocessing pipeline, model versioning, A/B testing infrastructure, monitoring для drift, feedback loop для continuous improvement, fallback стратегия

Flask API падает при concurrent requests, нет monitoring, нет versioning, нет способа обнаружить деградацию качества. Правильный serving: vLLM/TorchServe для throughput, MLflow для versioning, Evidently для monitoring.

NLP модель классификации показывала 92% accuracy в тестах. Через 6 месяцев в production accuracy упала до 78%. Первый шаг диагностики:

Ключевые идеи

  • **Semantic Search**: bi-encoder offline indексирование + online query encoding + hybrid BM25 + cross-encoder reranking. Pipeline, не одна модель.
  • **Чат-бот**: intent classification + entity extraction + dialog state tracking + action + response + fallback. Confidence threshold определяет escalation.
  • **Content Moderation**: multi-stage (fast filter -> ML -> LLM для пограничных). Recall > Precision для safety. Human-in-the-loop для неопределённых случаев.
  • **NLP Pipeline**: preprocessing + serving + monitoring (data drift) + feedback loop. A/B testing, canary deployment, versioning обязательны для production.
  • **Data Drift**: embedding distribution comparison - ранний сигнал деградации. Мониторить постоянно, переобучать при значительном drift.

Связанные темы

NLP System Design применяет все изученные компоненты:

  • RAG: Retrieval-Augmented Generation — Semantic search - это retrieval компонент RAG. Архитектура та же: bi-encoder, hybrid, reranking
  • Классификация текста — Intent classification и content moderation - прикладные задачи text classification из NLP toolkit

Вопросы для размышления

  • Поисковый движок для русскоязычного e-commerce: пользователи часто делают опечатки и используют разговорный язык. Какие компоненты preprocessing помогут?
  • Чат-бот поддержки обрабатывает 100 languages. Intent classification работает хуже на редких языках. Как спроектировать систему учитывающую это?
  • Content moderation model обучена на данных 2022 года. В 2024 появился новый тип токсичности (новый сленг, новые контексты). Как обнаружить это автоматически до жалоб пользователей?

Связанные уроки

  • nlp-17 — RAG - ключевой строительный блок NLP-систем
  • nlp-23 — Вопросы по дизайну систем доминируют на собеседованиях
  • nlp-12 — Сервинг BERT-моделей балансирует задержку и точность
  • ml-55-ml-system-design — Те же компромиссы дизайна, что и в общих ML-системах
  • aie-42-ai-system-design — Архитектура LLM-приложений в инженерии
NLP System Design

0

1

Войти