[!NOTE] Автоматический перевод Эта статья была автоматически переведена с оригинальной английской версии.
Полное руководство по NER в 2026 году: кодировщики, LLMs и трехуровневая архитектура производства
Распознавание именованных сущностей (NER) в настоящее время осуществляется с помощью компактных кодеров спаны, методов с открытым словарём модели и техник извлечения, основанных на LLM. Согласно результатам исследования CrossNER, модель GLiNER с 300 миллионами параметров модель показывает более высокий показатель F1 в режиме без предварительной обучения, чем модель UniNER объёмом 13 миллиардов параметров. Более современный двойной кодер достигает в 130 раз большего уровня throughput, чем первоначальный кросс-кодер, обрабатывая 1 024 типа сущностей. Эти результаты подтверждают эффективную практику явного извлечения спан: сначала используется LLM для маркировки данных конкретной области, затем анализируются примеры, дорабатывается компактный кодер, и в итоге он внедряется с использованием ONNX или языка Rust.
В сопутствующем репозитории представлены запускаемые примеры для GLiNER, экспорта ONNX, обучающих меток, генерируемых с помощью LLM, а также для структурированной выделения информации. Для задач, в которых доминируют явные спаны, компактные кодировщики обеспечивают высокую латентность эффективность при одновременно низких затратах. LLMs по-прежнему остаются полезными инструментами для создания обучающих данных и обработки случаев, требующих инференс или нормализации.
Сопутствующий репозиторий: ner-руководство по полям, с запускаемыми демонстрациями для GLiNER, экспорта ONNX, роли LLM-как-учителя пайплайн, а также структурированного извлечения с использованием Instructor.
Кратко: начните с GLiNER, когда вам требуется извлечение информации из открытого словаря спан и выполнение операций CPU деплой. Для задач специфических для определённой области протестируйте подход LLM-as-teacher пайплайн: сгенерируйте метки, проанализируйте примеры, отрегулируйте работу кодера и оцените его на наборе данных с ручными метками. Передачу имплицитных сущностей, картографирование онтологий и другие случаи, требующие активного использования ризонинг, направляйте через Instructor или Outlines к LLM. Трёхуровневая архитектура объединяет все эти пути, не предполагая фиксированного распределения нагрузки между ними.
Где применяются современные системы с NER
NER по‑прежнему находит фрагменты текста спаны и присваивает им метки. Изменилось лишь его положение в системе: теперь он предоставляет фильтры для RAG, структурированные аргументы для инструментов агентов, а также поля, необходимые для обработки документов с использованием пайплайны. Благодаря этим возможностям параметры латентность, затраты на реализацию и гибкость схемы становятся настолько же важными, как и точность бенчмарк.
RAG: улучшение качества retrieval с помощью извлечения сущностей
Одного только поиска по сходству недостаточно в тех случаях, когда в запросе присутствуют точные указания на конкретные сущности. В вопросе «Что сказала компания Anthropic о безопасности модель в 4‑м квартале 2024 года?» системе следует извлекать «Anthropic» и «4‑й квартал 2024 года» в качестве фильтров метаданных, вместо того чтобы опираться исключительно на эмбеддинги.
Во время индексации вы извлекаете сущности из каждого чанк и сохраняете их в качестве метаданных: {"organizations": ["Anthropic"], "dates": ["Q4 2024"], ...}. Это позволяет фильтровать сущности до выполнения vector search. Граф знаний RAG (GraphRAG, графы свойств LlamaIndex) идёт ещё дальше: благодаря NER в сочетании с извлечением отношений формируется граф, способный отвечать на многоэтапные вопросы, с которыми не справляются простые эмбеддинги.
Во время обработки запроса сущности, извлечённые из вопроса пользователя, определяют направление работы роутинг. Запрос, содержащий название компании, направляется в финансовый индекс; запрос с упоминанием названий лекарств — в клиническую базу знаний. GLiNER отлично справляется с такой задачей, поскольку сущности запросов являются непредсказуемыми — невозможно переобучать модель для каждого нового типа сущностей, о которых могут спросить пользователи.
ИИ-агенты: преобразование текста в структурированные факты
Агенты получают неструктурированный текст — веб-страницы, ответы API, сообщения пользователей — и должны принимать по нему действия. NER преобразует этот текст в структурированные факты, с помощью которых агент может осуществлять логические выводы, хранить информацию или передавать её во внешние инструменты.
Два аспекта, имеющих наибольшее значение.
Первым инструментом является роутинг. Когда пользователь говорит: «Запланируйте встречу с Сарой Чен из Accenture на четверг в 14:00», агенту необходимо извлечь PERSON: Sarah Chen, ORGANIZATION: Accenture, и DATETIME: Thursday 2pm до вызова календаря API. Кодировщик NER модель выполняет эту операцию за менее чем 10 мс. LLM добавляет 1–2 секунды на каждый вызов, и эта задержка накапливается в многоэтапных рабочих процессах до тех пор, пока агент, который раньше казался «мгновенным», перестает им быть.
Вторая задача заключается в отслеживании сущностей на протяжении всего диалога. Системам памяти агентов необходимо понимать, что «Сара» из третьего разговорного этапа и «г-жа Чен» из двенадцатого — это один и тот же человек. NER используется для идентификации спаны; механизм связывания сущностей приводит к присвоению им одного и того же идентификатора.
В обоих случаях ограничением является латентность. Вызов NER продолжительностью 200 мс внутри цепочки агентов из 10 шагов приводит к появлению эффекта задержки в 2 секунды. Именно поэтому для обработки сущностей внутри циклов агентов более подходящим решением является использование кодера модели, а не методов извлечения, основанных на LLM.
Интеллект документов: от изображений к структурированным данным
OCR преобразует изображения в текст. NER преобразует текст в структурированные поля. Вместе они обеспечивают масштабную дигитализацию документов.
Стандартный пайплайн сначала использует OCR, такие как Tesseract, Azure Document Intelligence или AWS Textract, для генерации текста и областей ограничения. Затем NER извлекает такие поля, как invoice_number, vendor_name, line_items, total, и due_date. Тот же принцип применяется к контрактам, медицинской документации и заявкам на регуляторное утверждение.
Современные платформы объединяют три этапа: понимание структуры (является ли это заголовком или ячейкой таблицы?), извлечение сущностей (какого типа этот текст?) и извлечение связей (какие значения находятся между собой?). GLiNER 2 обрабатывает все три аспекта за один проход; один вызов модель может вернуть {vendor: "Acme Corp", amount: "\$4,200", due_date: "2026-04-15"} из счёта-фактуры.
Именно здесь критически важна стоимость. Определяйте цену для пайплайн исходя из фактического ежемесячного объёма документов, включая попытки повторной обработки и этапы проверки. Компактный кодер может работать на CPU, тогда как решение, основанное на API и использующее LLM, приводит к дополнительным расходам в размере инференс за каждый документ, а также к возникновению затрат типа латентность. Практический способ тестирования — пометить выборку инвойсов меткой LLM, отточить модель GLiNER на проанализированных данных и сравнить результаты обоих подходов с точки зрения значений поля F1, латентность, а также общей стоимости.
Обнаружение PII и LLM гардрейлы
Положения о защите персональных данных (GDPR, HIPAA, CCPA) требуют выявления персональных данных до того, как они попадут в системы нижнего уровня. В контексте LLM деплои это означает сканирование входных данных до их поступления в модель, а также сканирование выходных данных перед тем, как они становятся доступными для пользователя.
NER обрабатывает это напрямую. Процесс деидентификации модели выполняется автоматически. PERSON, SSN, PHONE, EMAIL, и ADDRESS спаны — их следует либо замаскировать, либо заменить на синтетические аналоги. В ходе сравнения самых популярных провайдеров John Snow Labs публикует отчёты 96% F1 при обнаружении PHI по сравнению с Azure на уровне 91%, AWS — 83%, а GPT-4o — 79%. В отдельном отчёте деплой указано, что Providence обрабатывает более 100 000 клинических записей в день.
Для LLM гардрейлы NER выполняет роль уровня предварительной проверки: он сканирует ввод пользователя на наличие ПДн перед отправкой его во внешний API, после чего блокирует такую информацию или анонимизирует её. Такой подход быстрее и проще, чем просить LLM обеспечивать саморегулирование. GLiNER особенно полезен в этом случае, поскольку категории ПДн различаются в зависимости от юрисдикции. Можно добавлять новые типы сущностей, например «генетическую информацию», согласно новым нормативам, без необходимости перенастройки модели.
GLiNER изменяет экономические модели NER с использованием модель на 300 миллионов параметров
GLiNER (NAACL 2024, Zaratiana et al.) сделал методы, основанные на энкодере и использующие NER, конкурентоспособными по отношению к LLMs при значительно меньших затратах. Вместо того чтобы рассматривать задачу NER как маркировку последовательностей или генерацию текста, GLiNER подходит к ней как к задаче сопоставления: он оценивает каждый возможный вариант текста спан (каждую непрерывную последовательность слов, такую как «Bill Gates» или «Microsoft») по отношению ко всем возможным меткам типов сущностей, после чего сохраняет пары с наивысшими баллами.
модель принимает метки типов сущностей и входной текст в виде единой последовательности: [ENT] person [ENT] organization [ENT] date [SEP] Bill Gates founded Microsoft.... Двунаправленный трансформер (DeBERTa-v3) обрабатывает всю информацию совместно.
В результате обработки модель формируются два набора представлений: один для типов сущностей (из [ENT] токен позиции) и один для текста спаны (путем объединения начала и конца) токен векторов через небольшую FFN). Скалярное произведение между одним спан Представление и представление типа сущности присваивают соответствующий балл.
Применение функции сигмоиды позволяет получить вероятность того, что спан от токен до токен относится к типу сущности : , где — это спан-вектор, сгенерированный FFN, а представляет собой эмбеддинг тип сущности из соответствующего [ENT] токен (Заратиана и др., 2024, Равенство 1). Значения Спаны ограничиваются значением 12 токены, что позволяет сохранять высокую скорость обработки.
На практике это означает, что любое описание на естественном языке может служить меткой в момент инференс без необходимости переобучения. Вы указываете любые типы сущностей, которые нужны («человек», «побочная реакция на лекарство», «финансовый инструмент»), и модель модель вычисляет для них спаны. Доступны три версии: GLiNER-S (50 млн параметров), GLiNER-M (90 млн) и GLiNER-L (300 млн). Данные для обучения взяты из Pile-NER датасет: 44 889 текстовых фрагментов с 240 тыс. сущностных спаны в 13 тыс. типов сущностей, все из которых промаркированы ChatGPT. Обучение GLiNER-L занимает примерно 4 часа на одной карте A100.Заратиана и др., 2024).
Результаты Бенчмарк
Результаты работы в режиме «зеро-шот» от Заратиана и др. (2024), Таблицы 1 и 2:
| Модель | Параметры | Коэффициент F1 для модели CrossNER | Среднее значение (20 датасеты) |
|---|---|---|---|
| GLiNER-L | 300 млн | 60.9% | 47.8% |
| GoLLIE | 7B | 58.0% | — |
| UniNER-13B | 13 млрд | 55.6% | — |
| GLiNER-M | 90 млн | 55.4% | — |
| UniNER-7B | 7B | 53.7% | 45.7% |
| GLiNER-S | 50 млн | 52.7% | — |
| ChatGPT (GPT-3.5) | — | 47.5% | 36.5% |
Модель GLiNER-M с 90 миллионами параметров почти сопоставима с UniNER-13B по данным таблицы CrossNER в статье (55,4% против 55,6% по показателю F1), при этом используя примерно в 140 раз меньше параметров. Версия GLiNER-S с 50 миллионами параметров превосходит показатели ChatGPT (GPT-3.5), указанные в исследовании, на 5 единиц F1. Мультиязычная версия, обученная исключительно на английских данных, также превосходит базовый уровень ChatGPT в 8 из 10 языков, отличных от английского.Заратиана и др., 2024). В ходе этих сравнений используются версии модель из статьи и методы оценки харнесс; при этом не проводится ранжирование по сравнению с более новыми LLMs.
Эта экосистема довольно обширна: на платформе HuggingFace существует более 280 компонентов, совместимых с GLiNER модели, ежемесячно происходит около 350 000 загрузок из PyPI, а количество звёзд на странице в GitHub составляет примерно 2 800. Существуют варианты этого инструмента, предназначенные для обработки биомедицинских текстов, выявления персональных данных, анализа новостей и поддержки многоязычия.
Из quickstart.py:
from gliner import GLiNER
model = GLiNER.from_pretrained("urchade/gliner_medium-v2.1")
text = "Bill Gates founded Microsoft on April 4, 1975."
labels = ["person", "organization", "date"]
entities = model.predict_entities(text, labels, threshold=0.5)
for entity in entities:
print(f" {entity['text']} => {entity['label']} ({entity['score']:.3f})")
# Bill Gates => person (0.987)
# Microsoft => organization (0.991)
# April 4, 1975 => date (0.974)
Как GLiNER сравнивается со spaCy
Любой руководство NER будет неполным без использования spaCy — Около 21 млн загрузок в месяц, и одна из самых надёжных библиотек NLP в продакшене. Однако она работает в условиях совершенно иных архитектурных ограничений по сравнению с GLiNER.
пайплайны в spaCy (en_core_web_sm, en_core_web_trf) выполняется закрытый словарь NER: фиксированный набор типов сущностей (PERSON, ORG, GPE, DATE и т. д.), определяемый во время обучения. Нужен новый тип сущности? Соберите маркированные данные и переобучите модель. Реализуется с использованием архитектуры на основе трансформеров en_core_web_trf количества запросов 89,8% показатель F1 в OntoNotes 5.0, но только для его 18 заранее определённых типов.
GLiNER поддерживает открытый словарь NER**: любая метка подойдёт** инференс Время обработки минимально, дополнительная переобучение не требуется. Именно поэтому этот подход является более предпочтительным в ситуациях, когда типы сущностей неизвестны заранее, часто меняются или имеют специфику конкретной области («побочная реакция лекарства», «финансовый инструмент», «индикатор угрозы»).
Мой совет: используйте spaCy для стандартных типов сущностей, поскольку заранее обученные модели пайплайны прошли строгую проверку качества. Применяйте GLiNER, когда требуется гибкость работы с типами сущностей без предварительного обучения, или в тех случаях, когда ваш пайплайн должен адаптироваться без необходимости повторного обучения. Оба инструмента могут использовать общий пайплайн: spaCy отвечает за обработку токенизация и разбиение предложений, а GLiNER — за извлечение сущностей.
UniNER и NuNER: насколько маленьким может быть модель?
UniNER (ICLR 2024, Zhou et al.) и NuNER (EMNLP 2024, Bogdanov et al.) оба преобразуют аннотации LLM в более компактные NER модели — однако они расходятся во мнениях относительно того, насколько маленькими они могут быть.
UniNER: путь максималистов
UniNER проходит финтунинг на базе LLaMA-7B/13B с использованием 44,889 NER пар (240 тыс. сущностей и 13 тыс. типов), сгенерированных ChatGPT. Для каждого типа сущности модель формулирует вопрос «Что описывает [тип] в тексте?» и генерирует списки JSON. Одним из ключевых приёмов обучения является отрицательное выборка на основе частоты, которая позволяет повысить показатель F1 с 31,5% до 53,4%.Чжоу и др., 2024).
UniNER-7B показывает показатель 41,7% F1 в режиме zero-shot на 43 датасеты — что на 7 пунктов выше, чем у ChatGPT с его 34,9%. Вариант объёмом 13 миллиардов параметров достигает значения 43,4%, превышая предыдущий результат всего на 1,7 пункта при почти вдвое больших вычислительных затратах.Чжоу и др., 2024).
Проблемы в промышленном использовании: в качестве 7B-модели с авторегрессивным подходом модель, UniNER требует выполнения N передовых проходов для обработки N типов сущностей, потребляет 14 ГБ и более VRAM (что означает полное исчерпание установленного лимита GPU ещё до обеда), к тому же распространяется под строгой лицензией CC BY-NC 4.0.
NuNER: минималистичный подход
NuNER начинается с модели RoBERTa-base (125 млн параметров) и использует метод контрастного обучения с 4,38 миллиона аннотаций GPT-3.5, охватывающих 200 тысяч концепций — общая стоимость аннотаций составляет менее $500. После завершения обучения кодер концепций удаляется; кодер текста заменяет любой стандартный NER пайплайн в качестве аналога RoBERTa.Богданов и др., 2024).
Результаты тестирования: NuNER превосходит обычную версию RoBERTa на 6–15 пунктов по метрике F1 при любом количестве примеров в формате few-shot. При использовании всего десяти–двенадцати примеров на каждый тип сущности NuNER демонстрирует показатели, сопоставимые с UniNER-7B, несмотря на то, что его размер в 56 раз меньше.Богданов и др., 2024).
Обе статьи поддерживают процесс дистилляции. LLM аннотации с разбиением на более мелкие NER модели. NuNER демонстрирует, что энкодер с 125 миллионами параметров способен достичь таких же результатов, как и UniNER-7B в специфических задачах, как это отмечалось в исследованиях. файн-тюнинг Данные доступны под лицензией MIT. CPUдружелюбный к использованию инференс.
GLiNER 2: один модель, четыре задачи
Изначальная экосистема GLiNER сталкивалась с растущей проблемой: наличием отдельных модулей модели для NER (GLiNER), извлечения связей (GLiREL), классификации (GLiClass) и обработки информации на уровне документов (GLiDRE) — каждый из которых требовал собственного деплой, контейнера Docker, системы мониторинга и механизмов обработки сбоев. В версии GLiNER 2 (EMNLP 2025, Zaratiana et al.) все эти компоненты объединены в один модель с 205 миллионами параметров модель, использующий интерфейс, основанный на схемах.
В данной архитектуре сохраняется дизайн кросс-энкодера, однако объём контекста увеличивается до 2,048 токены (в 4 раза по сравнению с исходной версией), к тому же добавляются декларативные схемы для определения задач извлечения информации. Для обучения используются 135,698 реальных документов, аннотированных с помощью GPT-4o, а также 118,636 синтетических примеров.Заратиана и др., 2025).
При решении задачи CrossNER в режиме zero-shot модель GLiNER 2 показывает показатель F1 0.590, что близко к значению 0.599, достигнутому моделью GPT-4o в исследовании за середину 2025 года бенчмарк. В задачах классификации её средний результат составляет 0.72 при обработке 7 бенчмарки, тогда как у DeBERTa-v3-large этот показатель — 0.69. Что касается CPU, то в работе указано, что время выполнения операций классификации составляет от 130 до 208 мс для различного количества тестированных меток латентность. У базовой модели DeBERTa это время растёт с 1 714 мс при 5 метках до 16 897 мс при 50 метках.Заратиана и др., 2025).
from gliner2 import GLiNER2
extractor = GLiNER2.from_pretrained("fastino/gliner2-base-v1")
# Multi-task composition in ONE forward pass
schema = (extractor.create_schema()
.entities({"person": "Names of people", "company": "Organization names"})
.classification("sentiment", ["positive", "negative", "neutral"])
.relations(["works_for", "founded", "located_in"])
.structure("product_info")
.field("name", dtype="str")
.field("price", dtype="str"))
results = extractor.extract(text, schema)
В тех случаях, когда приложению требуются все четыре операции, общий модель может заменить четыре отдельных деплои, сохраняя при этом уровень точности, указанный в исходной работе.
Би-энкодер: масштабирование до миллионов меток NER
Исходная версия GLiNER кодирует метки и текст одновременно — в результате формируется боттлнек. Увеличение количества типов сущностей приводит к удлинению входной последовательности, а производительность резко снижается при более чем ~30 типах. Би-кодер GLiNER (февраль 2026 г., Stepanov и др.; arXiv 2602.18487) решает эту проблему путём разделения процессов кодирования текста и меток на два отдельных трансформера.
Энкодер текста использует ModernBERT (семейство Ettin), а энкодер меток — модели типа sentence transformers (BGE или MiniLM). Оценка Спаны и меток осуществляется с помощью скалярного произведения. Секрет заключается в том, что типы сущностей эмбеддинги можно предварительно вычислить один раз и сохранить в кэше. На этапе инференс требуется кодировать только текст — поиск соответствующих меток происходит мгновенно.
Доступны четыре размера модель, все из которых протестированы на платформе CrossNER.Степанов и др., 2026, Таблица 1):
| Модель | Параметры | Коэффициент F1 для модели CrossNER | Throughput (H100) | С предвычисленными метками |
|---|---|---|---|---|
| bi-edge-v2.0 | 60 млн | 54.0% | 13,64 экс/с | 24,62 экс/с |
| bi-small-v2.0 | 108 млн | 57.2% | 7,99 экз/сек | 15,22 экс/с |
| bi-base-v2.0 | 194 млн | 60.3% | 5,91 экс/с | 9,51 экс/с |
| bi-large-v2.0 | 530 млн | 61.5% | 2,68 экс/с | 3,60 экс/с |
При 1 024 типах сущностей би-энкодер (с использованием граничных узлов и предварительно вычисленных данных) теряет всего 5,2% throughput по сравнению с одной меткой. Кросс-энкодер же теряет 98,7% производительности (от 10,7 до 0,14 эксп/с). Это дает в 130 раз throughput большее преимущество при масштабировании. При наличии 100 типов сущностей на одном устройстве H100 би-энкодер обрабатывает 1,96 миллиона прогнозов в день, тогда как кросс-энкодер — лишь 368 тыс.Степанов и др., 2026).
Точность также остаётся на высоком уровне. Модель Bi-encoder-large достигает показателя 61,5% по метрике CrossNER F1, что немного превышает значение 60,9% у обычных кросс-энкодеров. Авторы рекомендуют использовать bi-base-v2.0 (194M) как оптимальный вариант — он обеспечивает 98% от точности больших моделей модель при скорости обработки, в 2,6 раза превышающей скорость последних.Степанов и др., 2026).
from gliner import GLiNER
model = GLiNER.from_pretrained("knowledgator/gliner-bi-base-v2.0")
# Pre-compute embeddings for massive label sets — encode once, use forever
entity_types = ["person", "organization", "date"] # Can be thousands or millions
entity_embeddings = model.encode_labels(entity_types, batch_size=8)
# Inference only encodes text — labels are a cached lookup
outputs = model.batch_predict_with_embeds(texts, entity_embeddings, entity_types)
Применения включают биомедицинские NER на основе онтологии UMLS (более 4 млн концептов), корпоративные таксономии, которые обновляются без необходимости повторной подготовки моделей с использованием модель, а также связывание сущностей с помощью сопутствующего инструмента. GLiNKER фреймворк.
LLMs в качестве учебных примеров: исследование случая стоимостью 70 долларов и готовый к развертыванию пайплайн
Паттерн LLM-as-teacher позволяет разделять дорогостоящую аннотацию от более дешёвых инференс. Два опубликованных кейс-стади разъясняют, как команды применяли этот подход в различных условиях.
Исследование случая использования CFM
В одном из исследовательских случаев Hugging Face компания Capital Fund Management извлекла названия компаний из примерно 900 000 заголовков финансовых новостей. Метод Zero-shot GLiNER показал результат 87,0% по метрике F1. Команда использовала модель Llama 3.1-70B для аннотирования датасет примерно за 8 часов, что обошлось примерно в 70 долларов, после чего ещё за 8 часов проанализировала 2 714 образцов с помощью инструмента Argilla.
Файн-тюнинг В приведённом кейс-стади режим GLiNER показал значение 93,4% по метрике F1, тогда как у модели Llama-70B в качестве учителя этот показатель составил 92,7%. Авторы указывают, что стоимость инференса для настроенной модель составляет $0,10 в час на CPU, в то время как для оригинальной учебной модели — $8 в час.Пример разработки в рамках проекта CFM). Эти примеры описывают одну задачу обработки финансовых новостей и одну конфигурацию инфраструктуры.
Исследование процесса дозаправки AI
Проводится дополнительная обработка технического отчета AI с использованием меток бенчмарки LLM в рамках 8 задач NLP датасеты, включая CoNLL-2003. В отчете указано, что точность совпадения для модели GPT-4 (март 2023 г.) составляет 88,4% по сравнению с эталонными данными, тогда как точность работы человеческих аннотаторов — 86,2%; кроме того, такой подход позволяет ускорить процесс аннотации в 20 раз и снизить его стоимость в 7 раз. Метод конвейера направляет простые примеры на более дешевые модели ресурсы, а сложные — на GPT-4, что в результате экспериментов обеспечивает более 95% точности совпадения.Пересборка технического отчета AI). Рассматривайте их как результаты, предоставленные поставщиком в соответствии с протоколом аннотации данного исследования.
Продакшн-среда пайплайн
Практический производственный пайплайн включает шесть этапов:
- Сформулируйте руководство по аннотации на естественном языке.
- Создайте небольшой набор данных с метками от людей (от 50 до 200 документов).
- Используйте LLM (GPT-5.4 Mini, Llama 4 Maverick или Qwen3.5) для маркировки больших объёмов обучающих данных.
- Проверьте подмножество данных вручную. глина или Label Studio
- Тонкая настройка компактного кодера (GLiNER, Маркер области, RoBERTa)
- Развертывание по цене на уровне 16–80 раз ниже инференс
LLM позволяет сократить объём ручной аннотации, однако команда по‑прежнему контролирует набор данных для верификации, руководства по аннотированию, процедуры целенаправленного рассмотрения и анализ ошибок.
Где GLiNER терпит неудачу, а LLMs остаётся полезным
Этот Sease бенчмарк (Октябрь 2025 г.) была проведена тестирование GLiNER против GPT-4.1-mini на 30 задачах анализа запросов. GPT-4.1-mini дал 100% полностью правильных ответов. GLiNER показал результат 53% (16 из 30). Однако время реакции GLiNER составило 0,08 секунды, в то время как у LLM оно было 1,21 секунды — что в 15 раз быстрее.
В этом тесте из 30 заданий бенчмарк модель GLiNER демонстрировала сбои в трёх типичных паттернах:
- Косвенные сущности: извлечение «события» из фразы «Elton John performed at Madison Square Garden» — в тексте прямо не указано слово «событие», но LLM позволяет заключить, что речь идёт о «концерте».
- Чувствительность формулировок меток: значение для «2022» составляет 0.388 при использовании метки «date», тогда как при использовании метки «year» оно достигает 0.958 — незначительные изменения меток приводят к значительным колебаниям результатов.
- Сопоставление значений: модель GLiNER возвращает точный исходный текст («family houses») вместо канонического значения («Single family house»). LLM может осуществить такую нормализацию, если его промпт и схема определяют требуемые значения.
Вложенные и перекрывающиеся сущности
GLiNER также испытывает трудности с вложенными сущностями. В выражении «New York University» человек может пометить как «New York» (МЕСТОПОЛОЖЕНИЕ), так и «New York University» (ОРГАНИЗАЦИЯ). GLiNER выбирает только ту сущность с наивысшей оценкой, соответствующую спан. Это имеет большое значение в биомедицинских текстах (например, в выражении «acute myeloid leukemia» одновременно присутствуют название заболевания и его модификатор) и в юридических документах (где встречаются вложенные иерархии организаций). Для обработки подобных случаев существуют специализированные модели, однако плоская структура спан, характерная для GLiNER, не позволяет справиться с вложенностью.
Для явной экстракции сущностей используйте модель GLiNER, а случаи, требующие обработки инференс, ризонинг или маппинга в заранее определённые онтологии, направляйте на модуль LLM. Пороговое значение роутинг должно определяться на основе наклассифицированного набора данных из конкретной области применения.
Оценка NER: метрики, подводные камни и наборы тестовых данных
модель может достигать значения F1 в 95% на специально подобранном наборе тестов, но при этом терпеть неудачу при обработке документов различных типов, с которыми он сталкивается после деплой. Необходимо формировать набор для оценки на основе реальных данных из продакшена, сохраняя отдельные группы документов редких форматов и типов сущностей, поскольку агрегированные показатели F1 могут скрывать их реальную эффективность.
Основные метрики
- F1 на уровне сущности: стандартная метрика. Прогноз считается верным только в том случае, если как границы спан, так и тип полностью совпадают с истинными значениями. Именно этот показатель приводится в большинстве научных работ.
- F1 на уровне Токен: оценивает каждый токен отдельно. Это приводит к завышенным результатам, поскольку правильное определение большей части длинной сущности даёт частичные баллы. Предпочтительнее использовать F1 на уровне сущности.
- Точность против воспроизводимости: при их расчёте зачастую наблюдаются асимметричные издержки. При деидентификации важнее воспроизводимость — упущение имени хуже, чем чрезмерная обработка данных. При извлечении информации из баз данных важнее точность — ложные записи портят последующий анализ.
Распространённые ошибки оценки
- Инфляция частичного совпадения: извлекается термин «Bill», когда на источном тексте указано «Bill Gates» — некоторые скрипты считают такой случай частичным совпадением. Используйте точное совпадение спан, если только у вас нет причин этого не делать.
- Путаница типов: термин «Microsoft» правильно идентифицируется как спан, однако если он помечается как PERSON вместо ORG, его оценка должна быть равна нулю. Проверьте, корректно ли ваш код оценки учитывает этот случай.
- Утечка данных из тестового набора: если элементы тестового набора пересекаются с элементами обучающего набора, оценки становятся завышенными. Для проверки способности модели к обобщению существуют методы zero-shot бенчмарки (CrossNER, Few-NERD).
Создание тестового набора для доменов
Для оценки в производственных условиях я рекомендую:
- Образцы должны браться из реальных данных производства, а не из специально подобранных примеров. Необходимо включать «грязные» документы, с которыми фактически будет сталкиваться ваш модель.
- Для получения стабильных значений метрики F1 достаточно 200–500 аннотированных документов. При их количестве менее 100 диапазоны доверия оказываются слишком широкими.
- Минимальное количество аннотаторов — два, причём уровень согласованности между ними должен соответствовать критерию Коэна (Kappa > 0.8). Если люди приходят к разным выводам, ваш модель не сможет показать лучшие результаты.
- Производите стратификацию по уровню сложности — от простых случаев (чистый текст, стандартные типы) до сложных (неоднозначные сущности, специализированный жаргон, «шумный» текст).
Продакшн NER в четырёх отраслях
Вот наиболее зрелые реализации NER деплои, которые мне удалось найти, с указанием конкретных цифр.
Здравоохранение
Сфера здравоохранения обладает наиболее развитым набором инструментов NER. Компания John Snow Labs предоставляет более 2 500 заранее обученных модели, из которых более 1 200 предназначены для использования в медицине; эти модели охватывают более 400 типов клинических сущностей, соответствующих стандартам ICD-10, SNOMED CT, LOINC и RxNorm. В портфеле компании… сравнение поставщиков, уровень деидентификации модели достиг 96% по метрике F1, тогда как у Azure он составил 91%, у AWS — 83%, а у GPT-4o — 79%. В отдельном кейс-стади сообщается Организация Providence St. Joseph Health обрабатывает от 100 000 до 500 000 клинических записей ежедневно.
В своем обзоре проектов за 2025 год этот проект с открытым исходным кодом Проект OpenMed Система фиксирует более 380 научных публикаций в области биомедицины NER модели, 29,7 миллиона загрузок Hugging Face, а также лидирующие позиции среди результатов по 10 из 12 открытых биомедицинских баз данных бенчмарки.
Финансовый NER
Основной сценарий применения: извлечение данных из документов, подаваемых в SEC. Система Finance NLP от John Snow Labs позволяет выявлять более 11 типов сущностей в документах формата 10-K/10-Q — адреса, тикеры, финансовые годы, биржи ценных бумаг и т.д. FinBERT-MRC Варианты модели достигают показателя F1 в диапазоне 0,87–0,93 при обработке задач, связанных с финансовыми субъектами. Основная сложность заключается в больших объёмах документов и вложенных сущностях, присутствующих в сложных финансовых инструментах.
Электронная коммерция
Walmart’s Система EAMT (KDD 2023) обучается на 965 миллионах запросов с примерно 60 метками сущностей; в статье сообщается о повышении 0.51% GMV в ходе тестов типа A/B. У компании Home Depot TripleLearn фреймворк (AAAI 2021) путём итеративной обучающей процедуры повысил значение NER F1 с 69,5 до 93,3.
Кибербезопасность
Этот система iACE (CCS 2016) обработано 71 000 статей с 45 блогов по вопросам безопасности, в результате чего было извлечено 900 тыс. элементов IOC при точности 98 % и воспроизводимости 93 %. Современные системы подобного рода CyNER сочетать DeBERTa (F1 >91%) с эвристиками IOC, основанными на регулярных выражениях. CyberNER Unified датасет (2025) объединяет четыре датасеты в 21 тип сущности, соответствующий стандарту STIX 2.1, причём модель RoBERTa показывает значение F1 в 0.736.
Оптимизация Деплой: переход от Python к более латентность инференс
Я протестировал три способа ускорения GLiNER для промышленного использования в сопутствующем репозитории.
ONNX экспорт
GLiNER обеспечивает нативную конвертацию ONNX, причём заранее преобразованные варианты модели уже доступны на HuggingFace.onnx-community/gliner_small-v2.1). ONNX Runtime обеспечивает ускорение в 1,5–3 раза при обработке CPU по сравнению с PyTorch, предлагая четыре уровня оптимизации — от базового до работы с смешанной точностью.
Из onnx_export.py:
# Export with quantization
# python convert_to_onnx.py --model_path model/ --save_path onnx/ --quantize True
# Load ONNX model — same API, faster inference
from gliner import GLiNER
model = GLiNER.from_pretrained("path/to/model", load_onnx_model=True)
# Same predict_entities call, 1.5-3x faster on CPU
entities = model.predict_entities(text, labels, threshold=0.5)
INT8 квантизация
Динамический квантизация сокращает размер модели в 2,4 раза (от 438 МБ до 181 МБ) при уровне потерь по метрике F1 менее 0,6%. Быстродействие улучшается в 1,8 раза на CPU. При использовании технологии Intel VNNI CPUs в сочетании с ONNX Runtime, INT8 обеспечивает ускорение до 6 раз по сравнению с PyTorch FP32.
from onnxruntime.quantization import quantize_dynamic, QuantType
# One-line quantization — 2.4x smaller, <1% F1 loss
quantize_dynamic("gliner.onnx", "gliner_int8.onnx", weight_type=QuantType.QInt8)
gline-rs: Перереализация на Rust
gline-rs (Apache 2.0) устраняет дополнительную нагрузку, связанную с выполнением кода на Python. На CPU достигается скорость обработки 6.67 последовательностей/сек, тогда как у Python она составляет 1.61 — это в 4.1 раза большая скорость. На карте RTX 4080 показатель равен 248.75 последовательностей/сек.gline-rs бенчмарки). Данное решение поддерживает спан и токен модели, а также работу с GPU/NPU через ONNX Runtime, причём его можно загрузить в виде пакета с сайта crates.io.
use gliner::{GLiNER, TokenMode, Parameters, RuntimeParameters, TextInput};
let model = GLiNER::<TokenMode>::new(
Parameters::default(), RuntimeParameters::default(),
"tokenizer.json", "model.onnx")?;
let input = TextInput::from_str(
&["My name is James Bond."], &["person", "vehicle"])?;
let output = model.inference(input)?;
// => "James Bond" : "person" (99.7%)
Этот fast-gliner Этот пакет предоставляет биндинги на Python с использованием PyO3 — сочетание высокой производительности Rust и удобства работы с Python.
Краткое описание стека оптимизации
| Оптимизация | Ускорение по сравнению с PyTorch | Модель Размер | F1 Impact | Лучше всего подходит для |
|---|---|---|---|---|
| ONNX Runtime | 1,5–3 раза | То же самое | Нет | Быстрое решение — любое оборудование |
| INT8 Квантизация | 3–6 раз | 2,4 раза меньше | потеря 0,6% | CPU деплой, с ограниченными ресурсами памяти |
| gline-rs (Rust) | 4.1x (CPU) | формат ONNX | Нет | Высокий уровень throughput, критический по латентность |
| gline-rs + INT8 | 4–8 раз | 2,4 раза меньше | потеря 1% | Промышленное производство в крупном масштабе |
Структурированное извлечение: инструкторский формат против оглавлений
Если требуется большая гибкость, чем та, которую обеспечивает кодер модели — такая как работа с имплицитными сущностями, ризонинг и картографирование онтологий — то для структурированной выделения информации из LLMs используются две библиотеки.
Преподаватель По состоянию на март 2026 года проект имеет около 12 600 звёзд на GitHub и примерно 8,8 млн загрузок в месяц; его автор, Jason Liu, внёс исправления в LLM SDKs, позволяющие обрабатывать ответы формата Pydantic модели с автоматической попыткой повтора при сбое валидации. Инструмент поддерживает более 15 поставщиков данных и послужил основой для реализации встроенной функции structured output в OpenAI.
import instructor
from pydantic import BaseModel
from typing import List, Literal
from openai import OpenAI
class Entity(BaseModel):
name: str
label: Literal["PERSON", "ORGANIZATION", "LOCATION"]
class ExtractEntities(BaseModel):
entities: List[Entity]
client = instructor.from_openai(OpenAI())
result = client.chat.completions.create(
model="gpt-5.4-mini", temperature=0.0,
response_model=ExtractEntities,
messages=[{"role": "user", "content": "BioNTech SE acquired InstaDeep in the U.K."}])
# entities=[Entity(name='BioNTech SE', label='ORGANIZATION'), ...]
Основные схемы библиотека dottxt использует иной подход: ограниченное генерирование токен с помощью метода конечных машины состояний. Декодер маскирует токены, которые могут нарушить грамматику целевого языка, вместо того чтобы ждать сбоя проверки и повторять попытку. AWS бенчмарк, Данный путь достиг уровня соблюдения схемы 98%, тогда как при валидации после генерации показатель составил 76%, причём скорость генерации результата была в 5 раз выше, чем у тестированного рабочего процесса без ограничений с механизмом повторных попыток. Эти результаты напрямую зависят от указанной модель совокупности схем и настроек сервинг.
import outlines
model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct")
generator = outlines.generate.json(model, ExtractEntities)
result = generator("Extract entities from: BioNTech SE acquired InstaDeep in the U.K.")
Выбор зависит от того, где вы запускаете свой модели. Инструктор предоставляет облачные ресурсы LLM APIs Знакомый паттерн валидации с помощью Pydantic и механизм повторных попыток. Функция Outlines ограничивает процесс локальной генерации согласно заданной схеме. Оба инструмента обеспечивают поддержку NERвыделение в стиле , при этом их латентность всё ещё содержит авторегрессию модель генерация. Бенчмарк любой из путей применяется к энкодеру при одинаковом размере пакета, аппаратном обеспечении и схеме сущностей.
Архитектура производственной среды с тремя уровнями
Я буду направлять работу с продакшн-контентом NER в зависимости от структуры задачи, а не на основе единого рейтинга модель.
Уровень 1: кодировщик модели для явного спаны. Для небольших наборов меток рекомендуется использовать кросс-кодировщик GLiNER, а по мере увеличения количества меток следует протестировать би-кодировщик. После этого производится тонкая настройка с использованием метода LLM-как-учителя пайплайн, а затем система развертывается с помощью ONNX, INT8 или библиотеки gline-rs, если эти подходы соответствуют требованиям конкретной области приложения бенчмарк.
Уровень 2: GLiNER 2 для многозадачной экстракции информации. Когда один запрос требует NER, классификации, экстракции отношений и структурированных данных, применяется общий модель модели GLiNER 2 с 205 миллионами параметров. В описании модели указано, что время выполнения операций классификации CPU составляет от 130 до 208 мс латентность при работе с различными количествами тегов, проходивших тестирование.
Уровень 3: LLMs для извлечения с высокой концентрацией ризонинг. Неявные сущности, контекстуальные инференс и карты онтологий направляются в LLM с использованием механизма Instructor для облачных APIs или инструмента Outlines для локальных модели. Записывайте такие случаи, поскольку они могут стать частью следующего набора данных для обучения на уровне 1.
В примере анализа CFM приводится ориентировочная стоимость для уровня Tier 1: показатель F1 составляет 93,4% при затратах в размере 0,10 доллара США в час на CPU, тогда как у модели Llama-70B такой показатель — 92,7%, а стоимость использования — 8 долларов в час. Пересчитайте этот показатель с учётом своего оборудования, модели-учителя модель и набора меток, чтобы оценить реальные затраты.
Компромиссы и ограничения
Системы на основе ML всегда сопряжены с компромиссами. Ключевой вопрос заключается в том, где проявляются эти компромиссы и можно ли измерить их до начала деплой.
LLM — ошибки, возникающие при работе в роли учителя, распространяются дальше. Если LLM постоянно неправильно определяет тип конкретной сущности (например, путает названия дочерних компаний с названиями материнских организаций), то тонко настроенный кодек унаследует эту предвзятость. Решением является целенаправленный человеческий аудит: необходимо сосредоточить усилия на типах сущностей, для которых уровень уверенности LLM низок или нестабилен, а не на случайном выборке.
Квантизация потери не являются однородными. Средний показатель потерь по метрике F1 в ~0.6% для INT8 может быть выше для редких типов сущностей с тонкими параметрами границ (химические соединения, многословные аббревиатуры). Всегда необходимо бенчмарк квантизировать модели для конкретных типов сущностей, а не просто использовать суммарное значение метрики F1.
Когда трёхуровневая архитектура избыточна. Для одной области с стабильными типами сущностей и достаточным количеством маркированных примеров может оказаться достаточным лишь тонко настроенный RoBERTa или spaCy пайплайн. Паттерн трёх уровней подходит в случаях, когда речь идёт о нескольких областях, постоянно меняющихся типах сущностей, или при комбинированном использовании явного извлечения данных и методов, основанных на ризонинг. Для простого извлечения информации из счёта-фактуры пайплайн, например имён и дат, может хватить первого уровня.
Предел качества би-энкодера. Би-энкодер идет на компромисс, отказываясь от совместной обработки аттеншн в пользу throughput. Когда семантика меток взаимодействует с текстовым контекстом (например, «дата», «год» или «период» применительно к одному и тому же спан), кросс-энкодер по-прежнему оказывается более эффективным решением. Для задач с высокой степенью значимости и небольшим количеством меток следует использовать кросс-энкодер; би-энкодер же предпочтителен для работы с большим объемом данных.
Список литературы
Статьи
- GLiNER: универсальный Модель для распознавания именованных сущностей на основе двунаправленных трансформеров - Zaratiana и др., NAACL 2024. Основополагающая архитектура сопоставления спан-энтитетов. GLiNER 2: Нерешённые проблемы автоматической выделения информации - Zaratiana и др., EMNLP 2025 System Demonstrations. Объединяет NER, классификацию, рекурентные модели и структурированный извлечение данных.
- GLiNER Bi-Encoder: масштабируемое распознавание именованных сущностей с использованием архитектуры двойного энкодера - Степанов и др., февраль 2026 г. Декуплированная кодировка для масштаба в миллионы меток. UniNER: универсальный NER, использующий большие языковые Модели. - Zhou и др., ICLR 2024. Универсальный NER, основанный на LLM, полученный путём дистилляции данных с ChatGPT. NuNER: предварительная обучаемость кодера распознавания сущностей с использованием аннотированных данных LLM - Bogdanov и др., EMNLP 2024. Показано, что 125 млн параметров достаточны при использовании данных для обучения, сгенерированных с помощью LLM.
Статьи из отрасли
- EAMT: многозадачное обучение с учётом структуры сущностей для понимания запросов - Walmart, KDD 2023. 965 млн запросов, увеличение общей стоимости заказов на 0,51%. TripleLearn: концепция «от начала до конца» NER для поиска в электронной коммерции - Home Depot, AAAI 2021. Значение F1 выросло с 69,5 до 93,3.
- iACE: автоматический сбор интеллектуальных данных о киберугрозах - CCS 2016. 71 тыс. статей, 900 тыс. IOCs. CyberNER: Унифицированный корпус STIX для кибербезопасности NER - 21 типа сущностей, соответствующих спецификации STIX 2.1. FinBERT-MRC: финансовый анализ NER с использованием технологии машинного понимания текста - Значение F1 на задачах с финансовыми субъектами составляет 0,87–0,93.
Исследования случаев использования
- Кейс-исследование CFM: Файн-тюнинг GLiNER для финансового NER - Система маркировки LLM от подразделения Capital Fund Management, реализующая пайплайн, показала показатель F1 в размере 93,4%. Заправка AI: Технический отчёт по маркировке LLM - GPT-4 достигает уровня согласованности аннотаций 88,4%, что превосходит показатели человеческих аннотаторов.
- GLiNER как альтернатива LLMs при парсинге запросов - Места, где GLiNER не справляется, и где всё ещё требуется использование LLMs. John Snow Labs: методы деидентификации медицинских текстов Бенчмарк - Сравнение показателей обнаружения F1 PHI на уровне 96% между различными поставщиками сервисов. OpenMed: Обзор года 2025 - Более 380 биомедицинских NER модели, 29,7 млн загрузок в HuggingFace.
Инструменты и фреймворки
- ner — примерный репозиторий для гида по полям - Демо-версии, дополняющие эту статью: быстрый старт с GLiNER, экспорт ONNX, режим LLM-as-teacher, а также механизм структурированного извлечения данных. gline-rs: реализация GLiNER на языке Rust - 4,1x CPU более высокая скорость по сравнению с Python, лицензия Apache 2.0.
- инструктор - Структурированный извлечение LLM с использованием Pydantic модели; ежемесячное количество загрузок составляет около 8,8 млн. Основные положения - Генерация токен в рамках ограничений с использованием автоматов состояний, что обеспечивает соответствие схеме. AWS: Structured Output с использованием структуры аутлайнов - Соответствие схеме составляет 98% бенчмарк.