Система RAG для документів з локальним зберіганням, гібридним пошуком та підтримкою різних форматів
Команда, що займається розробкою інструментів для розробників, потребувала повністю локальної, конфіденційної системи інтелектуального аналізу документів, яка могла б обробляти кілька форматів файлів, створювати бази знань, що підлягають пошуку, та відповідати на запити природною мовою за допомогою Retrieval-Augmented Generation — без відправлення будь-яких даних до зовнішніх API.
Обговоріть Ваш Проєкт
Виклик
Існуючі рішення RAG мали значні обмеження для випадків використання, орієнтованих на конфіденційність та розробників:
- Залежність від зовнішніх API — Більшість інструментів RAG вимагали відправлення вмісту документів до хмарних API для вбудовування, що порушувало вимоги конфіденційності
- Обмежена підтримка форматів — Рішення зазвичай обробляли лише простий текст або PDF, ігноруючи електронні таблиці, документи Word, HTML та Markdown
- Погане розбиття — Наївне розбиття тексту ігнорувало структуру документа (сторінки, аркуші, заголовки), створюючи фрагменти без контексту
- Прогалини в ключових словах — Пошук, заснований лише на вбудовуванні, пропускав точні збіги ключових слів, які б виявив лексичний пошук
- Сліпота до електронних таблиць — Системи RAG не могли обробляти структуровані табличні дані або відповідати на запити про фільтрацію/агрегацію
- Відсутність повторного ранжування — Перший етап пошуку часто виявляв лише частково релевантні результати без фільтра якості другого етапу
Наше Рішення
Ми створили повну локальну систему RAG з багатоформатним завантаженням документів, розбиттям з урахуванням структури, локальним створенням вбудовувань, гібридним пошуковим конвеєром (семантичний + повнотекстовий + актуальність), повторним ранжуванням за допомогою крос-енкодера та веб-інтерфейсом — все працює повністю на машині користувача.
Архітектура
- Завантажувачі документів: Парсери, специфічні для форматів PDF, DOCX, XLSX, CSV, HTML, Markdown та простого тексту
- Розбивач: Розбиття з урахуванням структури, яке зберігає межі сторінок, аркушів та заголовків
- Вбудовування: Локальна модель вбудовування через Transformers.js (без зовнішніх викликів API)
- Векторна база даних: LanceDB (безсерверна, файлова) для зберігання вбудовувань та пошуку за схожістю
- Повнотекстовий пошук: Індексація на основі триграм для лексичного співставлення
- Повторне ранжування: Модель крос-енкодера для оцінки результатів з урахуванням контексту
- Аналізатор запитів: Маршрутизація виявлення наміру між семантичними та структурованими запитами
- Веб-сервер: API на базі Express.js з точками доступу для управління проектами та пошуку
- Фронтенд: Веб-інтерфейс для завантаження документів, управління та інтерактивного пошуку
Конвеєр обробки документів
Багатоформатні завантажувачі
Шаблон реєстру автоматично визначає тип файлу та направляє до відповідного парсера:
- PDF — Витяг тексту з сегментацією на рівні сторінок
- Word (.docx/.doc) — Парсинг з урахуванням заголовків, що зберігає ієрархію документа
- Excel/CSV — Парсинг по аркушах з виявленням заголовків та вмістом на рівні рядків
- HTML — Витяг з урахуванням тегів зі збереженням структури
- Markdown — Парсинг секцій на основі заголовків
- Простий текст — Сегментація на основі рядків
Кожен завантажувач витягує метадані (назва, автор, дата створення, кількість сторінок/аркушів, кількість слів) разом з вмістом, створюючи структуровані секції з посиланнями на джерела.
Розбиття з урахуванням структури
На відміну від наївного розбиття тексту, розбивач враховує межі документів:
- Зберігає розриви сторінок (PDF), межі аркушів (електронні таблиці) та ієрархію заголовків (Word/Markdown)
- Розмір на основі токенів з конфігурованим розміром фрагмента та перекриттям
- Ієрархічне резервне копіювання: спочатку розбиває по секціях, потім по абзацах, потім по реченнях
- Кожен фрагмент зберігає метадані джерела (номер сторінки, назва аркуша, заголовок) для атрибуції
Вбудовування та індексація
Локальна модель вбудовування
- Працює повністю локально через Transformers.js — жодні дані не залишають машину
- Квантизована модель для оптимізації продуктивності
- Пакетне вбудовування для ефективної обробки великих обсягів
- Автоматичне обрізання на межах слів з нормалізацією L2
Зберігання векторів
LanceDB забезпечує безсерверне зберігання векторів:
- Файлове (не потрібен окремий сервер бази даних)
- Ізоляція за проектами з незалежними індексами
- Ключі кешу на основі SHA256 для уникнення дублікатів
- Метадані зберігаються разом з векторами для фільтрованого пошуку
Гібридний пошуковий конвеєр
Конвеєр пошуку комбінує три сигнали ранжування для кращих результатів, ніж будь-який окремий підхід:
Сигнал 1: Пошук за вбудовуваннями (семантичний)
Пошук за схожістю векторів знаходить фрагменти з пов'язаним значенням, навіть якщо використовуються різні слова. Обробляє перефразування, синоніми та концептуальні запити.
Сигнал 2: Повнотекстовий пошук (лексичний)
Індексація на основі триграм з подібністю Жаккара виявляє точні збіги ключових слів, які може пропустити пошук за вбудовуваннями — важливо для технічних термінів, імен та ідентифікаторів.
Сигнал 3: Підвищення актуальності
Вагове значення з експоненційним спаданням надає перевагу нещодавно доступним або зміненим документам, забезпечуючи першочергове відображення актуальної інформації.
Комбінація оцінок
Сигнали комбінуються з конфігурованими вагами (за замовчуванням: 50% семантичний, 25% лексичний, 25% актуальність), нормалізуються та фільтруються за мінімальним порогом оцінки.
Повторне ранжування за допомогою крос-енкодера
Після початкового пошуку модель крос-енкодера переоцінює найкращих кандидатів:
- Оцінка з урахуванням контексту розглядає пари запит-документ разом (не незалежно)
- Розрахунок підвищення ключових слів для перекриття термінів
- Змішана оцінка (крос-енкодер + сигнали ключових слів)
- Створює остаточний ранжований список з більш високою точністю, ніж лише перший етап пошуку
Підтримка структурованих даних
Для вмісту електронних таблиць система надає додаткові можливості:
- Автоматичне визначення типів стовпців (числовий, дата, булевий, рядковий)
- Фільтрація природною мовою (наприклад, "співробітники в інженерії з зарплатою вище порогу")
- Підтримка агрегації (кількість, сума, середнє, мінімум, максимум)
- Аналізатор запитів направляє структуровані запити до спеціального двигуна, а не до пошуку за вбудовуваннями
Веб-інтерфейс
- Управління проектами — Створення, оновлення та видалення проектів бази знань
- Завантаження документів — Перетягування файлів з автоматичним визначенням формату
- Створення документів — Створення документів з тексту безпосередньо в інтерфейсі
- Інтерактивний пошук — Інтерфейс запитів природною мовою з ранжованими результатами
- Статистика — Розмір індексу, кількість документів та розподіл форматів за проектом
Ключові особливості
- Повністю локальний — Вся обробка на пристрої; жодних зовнішніх викликів API для вбудовувань або пошуку
- 9 вхідних форматів — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, простий текст
- Розбиття з урахуванням структури — Зберігає сторінки, аркуші та заголовки як межі фрагментів
- Гібридний пошук — Комбінує семантичні, лексичні та сигнали актуальності для кращого пошуку
- Повторне ранжування за допомогою крос-енкодера — Оцінка другого етапу для більш точних результатів
- Структуровані запити — Фільтрація природною мовою та агрегація на даних електронних таблиць
- Безсерверна векторна БД — Зберігання на основі файлів LanceDB без накладних витрат на інфраструктуру
- Створення документів — Можливості експорту для створення PDF, DOCX та XLSX
- Ізоляція проектів — Незалежні бази знань з окремими індексами
- Веб-інтерфейс — Повний інтерфейс для управління документами та інтерактивного пошуку
Результати
Технологічний Стек
caseStudyDetail.more Кейси
Ознайомтесь з іншими нашими технічними впровадженнями
Аналіз електронних таблиць та документів за допомогою AI з багатоагентною оркестрацією та перехресним посиланням між документами
Команді корпоративних даних потрібно було аналізувати, запитувати та редагувати великі колекції електронних таблиць та документів (Excel, CSV, Google Sheets, PDFs, Word docs) за допомогою природної мови — з можливістю перехресного посилання на дані між кількома файлами та виконання багатоетапних аналітичних робочих процесів без ручної підготовки даних.
Обробка рахунків-фактур за допомогою AI, OCR та інтеграції з QuickBooks
Середній бізнес, який щомісяця обробляє сотні рахунків-фактур від постачальників, потребував усунення ручного введення даних шляхом автоматичного вилучення даних рахунків-фактур за допомогою AI/OCR та їх прямої синхронізації з QuickBooks для ведення бухгалтерського обліку та відстеження платежів.
Готові Трансформувати Свій Бізнес?
Давайте обговоримо, як ми можемо застосувати подібні рішення для ваших завдань.