Впровадження семантичного пошуку за текстовими документами

Керівник витрачає години на пошук відповіді в договорах, регламентах і листуванні, а пошук за словами видає сотні нерелевантних посилань. Ми проєктуємо та впроваджуємо семантичний пошук за вашими документами під ключ — від аналізу корпусу до передачі регламентів оновлення. Час на знаходження відповіді скорочується в рази.
Часті запитання

Семантичний пошук: чому підбір за словами не знаходить відповіді

Повнотекстовий підбір порівнює не сенс, а символи: він розбиває запит і документи на слова, зводить їх до основи та шукає перетини. Поки співробітник вводить ті самі терміни, що й автор документа, усе працює. Але варто сформулювати думку своїми словами — і видача порожня, хоча потрібний файл лежить у базі.

Перший розрив — синоніми та словоформи. Зведення до основи знімає частину розбіжностей, але не допомагає, коли в запиті «повернути товар», а в регламенті «відмова від покупки».

Перетину за словами немає — отже, для пошуку документ нерелевантний, хоча для людини це той самий процес.

Другий розрив — формулювання запиту. Питання співробітники задають живою мовою, а документи написані канцеляритом: «хто відповідає за приймання» проти «відповідальність за здійснення приймання».

Різні конструкції, різні частини мови, нульовий збіг за словами — і порожня видача на п’ятому-шостому запиті змушує людей шукати вручну по папках.

Семантичний пошук працює інакше: він переводить запит і фрагменти документів у векторні представлення та порівнює їх за близькістю сенсу, а не за літерами. Синоніми, словоформи й різні формулювання однієї думки перестають бути бар’єром. Нижче розбираємо, як це влаштовано і що дає на документах різного обсягу.

Що дає семантичний пошук: ефект у вимірюваних метриках

Перший замір, який робимо до і після впровадження, — частка запитів, де потрібний документ потрапив у перші результати видачі.

На корпусі в кілька тисяч сторінок пошук за ключовими словами дає її в межах 35–45%: формулювання запиту не збігається з формулюванням у тексті, синоніми й скорочення не знаходяться.

Після переходу на смисловий пошук із гібридною схемою — лексичний відбір плюс пошук за векторним представленням — показник піднімається до 75–90%. Працюємо на OpenSearch: обидва режими живуть в одному індексі, друга система не потрібна.

Другий показник — час до першого корисного документа. Раніше співробітник витрачав 10–20 хвилин на перебір нерелевантних посилань або йшов запитувати колегу; тепер видача за смислом закриває питання за хвилину-дві.

Наслідок видно за повторними зверненнями: питання на кшталт «де лежить регламент» доходять до носіїв знання в рази рідше, і це вже зміна навантаження, а не самооцінка зручності.

Окремо рахуємо клас відмов «документ є, але не знайдено» — коли текст лежить у системі, але пошук за словами його не піднімає через інше формулювання або назву розділу.

У еталонній вибірці такі запити провалювалися приблизно в половині випадків і закривалися людиною; після впровадження вони знаходяться в пошуку.

Якість видачі тримаємо під контролем: є еталонний набір запитів із розміченими правильними документами, за ним рахуємо метрики до впровадження та після і окремо дивимося рідкісні формулювання.

Порівняння підходів: векторний індекс, гібрид і правила

Вибір режиму визначає не «якість пошуку взагалі», а те, які промахи ви отримаєте на своєму корпусі. Векторний індекс знаходить смислові збіги під час перефразування, але втрачає точні ідентифікатори — номери договорів, артикули, рідкісні абревіатури. Пошук за правилами передбачуваний і пояснюваний, але потребує збігу запиту зі схемою.

Гібридний режим знімає цю суперечність: він об’єднує лексичний сигнал і близькість ембедингів, а фільтри за метаданими відсікають зайве до ранжування. Що підходить якому корпусу — в таблиці.

Варіант Коли підходить Обмеження
Векторний індекс Різнорідний корпус, вільні формулювання запитів, важлива стійкість до синонімів Потребує перезбирання при зміні моделі ембедингів, слабко ловить точні коди й рідкісні терміни
Гібридний режим Змішані запити: сенс плюс точний ідентифікатор, кілька типів документів в одному індексі Потрібно узгодити внесок сигналів і поріг відсікання, вищий час відгуку
Пошук за правилами Вузький домен, вимога пояснюваності та повторюваності, регламентовані запити Крихкий до перефразування, кожне нове поле документа — ручна правка правил

На практиці режим обирають за складом запитів. Якщо в корпусі і проза, і точні ідентифікатори — починають із гібрида, а правила залишають для обов’язкових умов: доступ, термін, тип документа.

Обмеження кожного підходу при цьому відомі заздалегідь, і вибір режиму стає рішенням за даними, а не за смаком.

Як ми впроваджуємо: етапи робіт від аудиту до передачі

Етапи вибудовуємо так, щоб якість пошуку вимірювалася на кожному кроці, а не в кінці проєкту. Кожен етап закінчується перевірюваним артефактом: звітом за корпусом, схемою розбиття, набором тестових запитів.

  1. Аудит корпусу документів. Рахуємо обсяг, формати, частку сканів і таблиць, знаходимо дублікати та застарілі редакції. На виході — список джерел і правило, що потрапляє в індекс, а що відсікається як шум.
  2. Схема розбиття та індексування. Визначаємо межі фрагментів — розділ, абзац, таблиця, — щоб шматок тексту зберігав сенс без сусідів. Поруч із фрагментом зберігаємо номер пункту, дату, тип документа й права доступу.
  3. Розмітка запитів. Збираємо реальні формулювання співробітників і розмічаємо їх за темами та очікуваними документами. Це дає набір перевірок, на якому далі порівнюються варіанти пошуку.
  4. Налаштування режиму видачі. Шукаємо баланс між точним збігом слів і смисловим пошуком, задаємо фільтри за правами та свіжістю. Окремо перевіряємо короткі запити та запити з номером пункту.
  5. Замір якості. Рахуємо частку запитів, де потрібний документ потрапив у першу п’ятірку результатів, і розбираємо провали вручну. Поріг приймання узгоджуємо до початку робіт.
  6. Дослідна експлуатація та передача. Запускаємо на обмеженій групі, дивимося, що шукають і де кидають, правимо розбиття та видачу за фактом. Віддаємо конфігурації, схему індексування й регламент переіндексації, навчаємо адміністраторів.

Артефакти на виході: схеми, словники та регламенти оновлення

Семантичний пошук залишається робочим інструментом лише тоді, коли його можна змінювати без авторів системи. Тому передаємо не сервіс-«чорну скриньку», а комплект артефактів, за яким ваша команда супроводу сама оновлює корпус, розширює словники та розбирає інциденти видачі.

  • Схема індексування — які поля документа потрапляють в індекс, на які фрагменти він ріжеться, з яким перекриттям і які метадані (розділ, версія, дата, права) зберігаються поруч із текстом.
  • Словник термінів і синонімів предметної області — внутрішні абревіатури, назви продуктів, професійний жаргон; поповнюється без перезбирання індексу та правок коду.
  • Правила попередньої обробки — нормалізація розмітки, розбір таблиць і вкладень, окремий шар розпізнавання для сканів: без нього частина корпусу просто не знаходиться.
  • Політики доступу до розділів — які колекції документів кому видно; фільтрація відбувається на етапі пошуку, а не після нього, інакше закритий документ витікає через видачу.
  • Регламент переіндексації — що оновлюється інкрементально при зміні документа, що потребує повного проходу, у якому вікні це запускається й як перевіряється, що нова версія індексу не гірша за попередню.
  • Набір еталонних запитів і метрики якості — контрольні питання з очікуваними документами; за ними відрізните деградацію від разової скарги користувача.
  • Експлуатаційна документація — карта сервісів, точки відмови, порядок відкату на попередню версію індексу, типові збої та дії при них.

Пакет передаємо разом із розбором на працюючій системі: показуємо, як додати новий розділ документів і як відкотитися, якщо якість видачі просіла після оновлення. Далі супровід іде силами вашої команди або нашої — за вашим вибором.

Кейс: час знаходження відповіді в базі документів скоротився

Кейс впровадження: виробнича компанія з корпусом технічної та нормативної документації — десятки тисяч сторінок регламентів, паспортів обладнання, інструкцій з експлуатації та внутрішніх стандартів.

Пошук працював за назвами файлів і збігом слів, тому результат залежав від того, чи вгадав фахівець формулювання.

До впровадження відповідь шукали ручним перебором: відкривали 8-12 документів, звіряли редакції, уточнювали в колег.

Середній час знаходження відповіді — 30-40 хвилин, а приблизно кожен п’ятий запит закінчувався висновком «у документах немає», хоча потрібний пункт існував в іншому формулюванні.

Навантаження на профільних фахівців зростало: до третини робочого часу йшло на пошук замість основної роботи.

Що змінили

Документи розібрали за структурою — розділи, пункти, таблиці, додатки — і нарізали на смислові фрагменти зі збереженням посилання на першоджерело.

Семантичний пошук зібрали як гібридну схему на Elasticsearch: векторні представлення відповідають за сенс, точний індекс — за номери, артикули та абревіатури. У видачі — фрагмент тексту й посилання на сторінку оригіналу.

Метрики до і після

Частка запитів зі знайденою відповіддю зросла з 78% до 96%, середній час знаходження скоротився з півгодини до двох-трьох хвилин. Навантаження на профільних фахівців упало приблизно вдвічі: питання, які закривалися перебором вручну, тепер знімаються самостійно.

Паралельно розширили оновлення індексу — нова редакція документа потрапляє в пошук того самого дня, і застарілі версії не спливають.

Чим відрізняється векторний індекс від збігу за словами

Інвертований індекс відповідає на точний збіг: запит розбивається на токени, і документ потрапляє у видачу, лише якщо ті самі токени в ньому є.

Це швидко й передбачувано, але працює лише коли формулювання відоме заздалегідь: «регламент розірвання» не знайде текст про «порядок припинення договору». Стеминг і словники синонімів закривають частину випадків, але не перефразування, не переклад і не одруки.

Векторне представлення переводить документ і запит в один числовий простір, де смислове зіставлення рахується як близькість векторів, а не як збіг рядків. Запит «як оформити повернення» знаходить абзаци про «процедуру скасування замовлення», хоча спільних слів у них немає.

Релевантність тут визначається відстанню між векторами — видача ранжується за сенсом, а не за частотою терміна.

Точний збіг при цьому не скасовується. Артикули, номери договорів, ПІБ, коди підрозділів і абревіатури векторна модель може розмити до схожих за сенсом, але чужих значень, а помилка тут дорожча за все.

Такі поля залишаються на рядковому пошуку з обов’язковим точним входженням — те саме стосується юридичних формулювань і заперечень.

У робочій системі обидва механізми збираються в комбіновану видачу: рядковий пошук дає точні влучання та фільтри, векторний — смислових сусідів, а об’єднання рангів і ваги налаштовуються під конкретний корпус.

Частина запитів маршрутизується явно: номерний іде в точний індекс, питання природною мовою — у векторний. Схему ставимо на штатних компонентах, наприклад Qdrant для векторів у зв’язці з інвертованим індексом для рядків.

Налаштування ваг — окрема робота з розміткою реальних запитів: дивимося, де гібрид програє чистому збігу за словами, і правимо нормалізацію рангів, щоб релевантність зростала не на тестах, а на живому потоці звернень.

Часті технічні сумніви перед початком робіт

Сумніви перед стартом зазвичай стосуються не самої ідеї семантичного пошуку, а того, як він поведеться на реальному корпусі: різнорідних файлах, сканах, правах доступу та постійних правках. Нижче — відповіді на те, що найчастіше уточнюють інженери й керівники напрямів до початку робіт.

Що буде з «брудними» документами — таблицями, колонтитулами, розірваними рядками?

Перед індексацією текст нормалізується: знімаються повторювані колонтитули, склеюються розірвані рядки, відновлюється структура таблиць, документ ріжеться на фрагменти з перекриттям і прив’язкою до розділу. Тоді шум не потрапляє у векторне представлення й не підмішується у видачу під час ранжування.

А якщо документи — скани без текстового шару?

Підключається розпізнавання: сторінка приводиться до тексту, а кожен фрагмент отримує оцінку впевненості. Фрагменти з низькою впевненістю позначаються й ідуть на ручну перевірку — так пошук не починає впевнено відповідати за сміттєвим розпізнаванням. Частку коректно розпізнаних сторінок ми вимірюємо на пілотній вибірці документів замовника.

Як розмежувати доступ, щоб співробітник не побачив зайвого?

Права успадковуються з джерела: файлового сховища або системи документообігу. Фільтр за доступними користувачеві документами застосовується до ранжування, а не після — інакше верх видачі може виявитися порожнім, хоча релевантні матеріали є. У журналі залишається запит і область видимості, у якій він виконувався.

Чи можна розгорнути пошук у внутрішньому контурі?

Так. Рішення розгортається в закритому контурі замовника: модель, індекс і сховище працюють локально, без звернення до зовнішніх сервісів. Оновлення — теж внутрішня процедура.

Що відбувається при оновленні бази знань?

Переіндексація інкрементальна: змінився документ — перераховується лише він, застарілі версії позначаються й випадають з видачі. Зміна моделі представлень потребує повного перерахунку — це планова процедура з вікном робіт, про неї ми попереджаємо заздалегідь.

Як довести, що якість пошуку справді зросла?

Фіксуємо набір реальних питань з еталонними фрагментами й рахуємо частку влучань у топ-5 і повноту відповіді. Той самий набір проганяється через пошук за ключовими словами — порівняння на одних даних показує, де саме семантика виграє, а де достатньо точного збігу.

Обговоримо задачу: як ми повернемося з оцінкою та планом

Щоб оцінка семантичного пошуку спиралася на факти, а не на здогадки, до першої розмови корисно зібрати кілька ввідних. Чим точніші вихідні дані, тим менше припущень у плані етапів і тим раніше видно, де саме якість підбору просідає на вашому корпусі.

  • Приклади запитів — 15–20 формулювань ваших користувачів, включно з одруками, синонімами та вузькими термінами предметної області.
  • Склад і обсяг корпусу — типи документів, формати (PDF, DOCX, скани, таблиці), приблизний обсяг, мови, чи є історія пошуку або ручна розмітка.
  • Вимоги до доступу — де розгортаємо контур, чи потрібна ізоляція без зовнішніх звернень, хто видає облікові записи й узгоджує мережеві правила.
  • Поточні механізми підбору — як пошук працює зараз: повнотекстовий індекс, фільтри за полями, ручні добірки, що дратує користувачів.
  • Очікувані метрики — частка запитів із релевантним першим результатом, час до відповіді, кількість уточнювальних перезапитів.

За підсумками обговорення надсилаємо оцінку робіт і план етапів: підготовка корпусу, вибір моделі, налаштування пошуку, перевірка на ваших запитах, постачання в контур і передача документації. Опишіть задачу — повернемося з оцінкою та планом.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141