Архив рубрики ~Лента новостей~

Разработка цикла иерархического поиска: чтение длинного документа по его содержанию.

Разработка цикла иерархического поиска: чтение длинного документа по его содержанию.
Разработка цикла иерархического поиска: чтение длинного документа по его содержанию.

Enterprise Document Intelligence [Том 1 #7quater] – Определение документа 492 страницы имеет оглавление из 358 записей. Прочитать его корпус невозможно, поиск по каждому пункту top-k переключает найденный ответ с соседними страницами. Вместо этого используйте поиск по главному: замкнутый цикл внутри поиска функции, который экономит токены и повышает точность. class=»wp-block-post-featured-image»>

Фотография Даниэля Форсмана, предоставлена Unsplash.
1f54a29de3883ba03e06aa16d1c4a212
цикл Разработок для иерархического поиска: чтение длинного документа по его содержанию – GIF-анимация от автора.

Эта статья является частью II части серии «Интеллектуальное управление документами на предприятии», в которой решается задача создания корпоративной системы RAG из четырех компонентов: анализа документов, анализа вопросов, поиска и генерации. Компонент поиска представляет собой трилогию:

  • Статья 7А, Извлечение информации — это фильтрация, а не поиск: ментальная модель, фильтрация структурированных таблиц вместо поиска по векторам.
  • Статья 7B, Обнаружение якорей: логические детекторы ключевых слов и встраиваний, а затем один вызов LLM в конце. выбор.

Это дополнение (7quater) Рассмотрим случай, с которым сталкивается кирпич в процессе производства: документ, слишком длинный для чтения, с оглавлением, слишком длинный для того, чтобы его выгрузить.

6892404a99c6a16e4f9932b8cd32624c
Место данной статьи в серии: Статья 7quater (иерархический поиск), дополнение к поиску блока во второй части – Изображение предоставлено автором

📓 Запускаемые сопутствующие блокноты, доступные на GitHub : документ-Intel/ноутбуки-vol1.

0bc3df868136eaea5f233522c742946a
Сопутствующий репозиторий с кодом находится по адресу doc-intel/notebooks-vol1 – Изображение предоставлено автором

Мы работаем над этим на основе NIST SP 800-53 Rev. 5 (Контроль безопасности и конфиденциальности информационных систем и организаций, работа правительства США, общественное положение в США) и NIST Cybersecurity Framework 2.0. Исполняемые фрагменты кода вызывают сервисы OpenAI, регулируемые условия использования OpenAI.

1. Проблема: оглавление слишком длинное, чтобы его передать.

Стандарт NIST SP 800-53 состоит из 492 страниц. В этом случае меры безопасности, согласно которым должна соблюдаться федеральная система США, по мере одной, всего двадцать мер. Пользователь задает простой вопрос:

«Что требуется для управления учетными записями?»

Ответ занимает пять страниц, контроль AC-2, на страницах с 46 по 50. Наивный подход RAG встраивает каждую страницу и выбирает k наиболее похожих на вопрос. Здесь он терпит неудачу в одном конкретном случае: слова «учетная запись», «управление», «контроль» и «доступ» встречаются на сотнях страниц, потому что весь документ посвящен контролю. Поиск k возвращает AC-2 вперемешку с AC-3, AC-17, парой контрольных точек аудита и глоссарием, и модели генерации должны определить, какой именно пункт имелся в виду. В результате произошла травма в результате причинения вреда 492 страницам, ответ по-прежнему остается неясным.

Человек открывает оглавление. Вот в чем загвоздка, из-за которой эта статья необходима: самооглавление содержит 358 пунктов. Вы же не станете коллегами всего 358 строк, как и 492 страницы. Эксперт сначала просматривает список глав, одиннадцати заголовков, выбирает «Управление», организует его на двадцати четвертях, выбирает «Контроль доступа», открывает его на соответствующих элементах управления и останавливается на AC-2. Сначала верхний уровень, затем вниз, по одному небольшому решению за раз. Именно такой цикл строит эту статью, и это миниатюрная версия тезиса серии: усилить эксперта . Делайте то, что делает эксперт. Не вываливайте весь документ или все оглавление на модели сразу.

2. Оглавление, в трех уровнях вложенности.

Вот фактическое содержание документа, рядом с файлом toc_df который парсер считывает из своей исходной структуры.

c7aaab268ffdfeee22542385068a00ba
Слева — оглавление документа; справа — анализатор toc_df, двадцать элементов управления в третьей главе, каждая из которых представляет собой диапазон страниц, на которые можно перейти. — Изображение предоставлено автором.

Распечатанная страница останавливается на уровне собственных элементов. Парсер идет глубже. Статья 5B преобразует исходную структуру PDF в структуру toc_df , по одной строке для каждого заголовка, и для этого документа это 358 строкна трех уровнях, от одиннадцати глав верхних уровней до каждого из 316 нижних элементов управления (AC-1, AC-2 и остальных), каждый со своим диапазоном страниц. Двадцать семь элементов управления между ними. Именно по этому дереву и идет поиск. Когда в документе нет исходной структуры для обхода, статья 5septies восстанавливает ее из страницы; Здесь структура чистая, поэтому мы используем ее напрямую.Процесс поиска проходит по дереву сверху вниз. Он передает LLM только текущий уровень, первые одиннадцать названий, каждая глава в одной компактной строке: название, диапазон страниц, а если название неоднозначны, то и небольшое количество ключевых слов. Модель выбирает ветвь, которая отвечает за вопрос. Если эта ветвь широкая и имеет более мелкие дочерние ветви, поиск открывает ее, ее дочерние ветви становятся следующим уровнем, и шаг повторяется. Он останавливается на листе или на участке, достаточно затрат, чтобы его можно было прочитать целиком.

1a352493d7560fdd53bedee2a9ac3a4b
Ограниченный цикл внутри процесса поиска: выбрать, открыть, показать, пока не будет найден лист или небольшой фрагмент; На каждом уровне LLM определяют, следует ли углубиться дальше. – Изображение предоставлено автором.

Из этой структуры вытекают две вещи. Длинное оглавление никогда не входит в единую группу: модель читает одиннадцать строк, затем вторую, затем около двадцати, никогда не 358 строк одновременно. И спуск на самом деле не является обязательным. В коротком документе верхний уровень не содержит дополнительных элементов для открытия, поэтому цикл выполняется один раз и ведет себя точно так же, как плоская маршрутизация. Модель на каждом уровне измеряет, есть ли смысл излучать дальше.

4. Этап маршрутизации в коде.

Этот шаг представляет собой одну функцию, reason_on_toc , вызываемую один раз для каждого уровня. Она уровень считывается как текст, а не как таблица, поэтому уровень из двадцати записей — это следующая строка, а не сетка, которая расширяется на один столбец в зависимости от ключевого слова.

 # Сверху вниз: подача ОДНОГО уровня за раз, а не всего содержания из 358 строк. # Каждая запись представляет собой одну компактную строку: заголовок + диапазон страниц (+ совпадения ключевых слов). level = toc_df[toc_df.level == toc_df.level.min()] # 11 названий глав, пока True: Pick = Reason_on_toc(question, level, client=client) # один вызов LLMsection = level[level.id.isin(pick.section_ids)] Kids = Непосредственно_дети(toc_df, раздел) if Kids.empty илиsection.n_pages <= SMALL: # лист или достаточно маленький уровень перерыва = дети # открываем, спускаемся # 11 глав -> 20 семей -> 25 элементов управления -> УПРАВЛЕНИЕ АККАУНТАМИ AC-2 (стр. 46-50)

Запустите модель вопроса по управлению учетными записями, сопоставив ее с реальным документом, и она упадет на один уровень за раз. На каждом уровне модель считывает заголовки уровней, обоснования и выбирает ветвь для открытия. Приведенные ниже рассуждения являются собственными моделями рассуждений, дословно взятыми из результатов запуска.

deb699c65e4460b0425ca344ebcb6dd9
Один из участников за раз: модель выбирает ветвь из текущих заголовков, мы открываем ее дочерние элементы и повторяем это до тех пор, пока не дойдем до листа. – Изображение предоставлено автором

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

Когда одного заголовка недостаточно для составления двух кандидатов, поиск основывается на подсчете ключевых слов, по-прежнему по одной строке в каждой записи: количество ключевых слов остается в этой ветви. Это решающий фактор в случае, когда термин используется в одном разделе, а определяется только в другом (принцип наименьших привилегий применяется во всех разделах «Контроль доступа», но определяется один раз в глоссарии). Он никогда не станет менять столбец для каждого ключевого слова.

5. Когда читается весь раздел.

Цикл останавливается в трех случаях: выбранная ветвь является листом, она уже достаточно мала для полного прочтения, или вопрос представляет собой список, для которого необходимы все элементы под ней. Случай со списком — это NIST CSF из статьи 12 (список): при запросе всех подкатегорий GOVERN выбирает все Приложение A. CSF Core, и, поскольку список требует всего этого, при получении данных приложение обрабатывает процессор, а не по одной подкатегории. список. Он достигает раздела, рассмотрения списка на одном уровне, и останавливается, потому что под ним в оглавлении ничего более подходящего нет.

e3ae15885e79b0301fe67a4baecd9092
Другой вариант заключается в следующем: вход в раздел, включенный список, и, не допуская возможности более тонкого цикла, обслуживает его; сравните спуск AC-2 с одним листом – Изображение предоставлено автором

элементов), завершениям (лист, небольшой участок или листинг) и восстановлением , которые конфигурируют что-то на каждой итерации (только спускается на уровень ниже, никогда не перечитывая только этот оцениваемый уровень), при этой глубине ограничена деревом, поэтому цикл не может вращаться. Он отличается от конвейерных циклов из части III темы, на что реагирует: на структуру документа, а не на результат генерации.

6. Токены и точность в раскрытии.

Иерархическая маршрутизация обеспечивает одновременное преимущество по обоим направлениям, что встречается редко.

Точность. Плоская верхняя панель k на 492 страницах конкурирует с AC-2 по всем другим элементам управления, в которых упоминаются учетные записи или доступ. Маршрутизация фиксирует управление учетными записями AC-2 по имени и читает его имя, поэтому пять страниц ответа появляются вместе, а не пересекаются с пятью соседними страницами.

Токены.Наивный конвейер встраивает 492 страницы один раз и оплачивает извлечение всех из них при каждом запросе. Маршрутизатор, работающий по принципу «сверху вниз», никогда не встраивает тело документа. Он читает шесть последовательных строк заголовка для трех вызовов, а затем пять страниц, на которых находится ответ. Даже оглавление никогда не было отправлено. В корпусе из тысяч таких документов эта разница составляет гранью между рабочей системой и системой, которая не работает.В этой статье создается один документ. Папка со всеми документами представляет собой ту же самую схему на одном уровне выше: верхний уровень — это список файлов, каждый с заголовком и кратким описанием в одной строке, а следующий уровень — это оглавление каждого файла. Этот маршрут не меняется: вы выбираете соответствующие файлы с верхних уровней, а затем переходите к их разделам точно так же, как эта статья переходит к элементам управления. Движение то же самое, только количество уровней увеличивается. Мы рассматривали этот случай с коллекцией в Части IV , начиная со статьи 14 (проблема корпуса) и таблиц корпуса ( corpus_toc_df , corpus_index ), которые содержит.

8. Заключение

Длинный документ подключается со своей собственной картой, и поиск проходит сверху вниз, вместо того, чтобы изучать каждую страницу. Маршрутизатор считывает один уровень оглавления за раз, по одной компактной строке записи и спускает вниз: одиннадцать глав к «Управлению», четвертый семейство к «Контролю доступа», около двадцати элементов управления к «Управлению учетными записями AC-2», пять страниц из 492, а остальные 315 элементов управления никогда не выполняются в подсказке. Он останавливается в конце, в разделе, достаточно затрат, чтобы прочитать его руководство, или в списке, который требует, чтобы все было подголовком. Это замкнутый цикл поиска внутри, необязательный, когда небольшое оглавление, и он одновременно экономит токены и точность, поэтому он масштабируется без изменений: папка с документами — это та же самая карта, но с одним дополнительным уровнем.

9. class=»wp-block-list»>

  • Анализ документа: Статья 5A и Статья 5B: parse_pdf и toc_df через которые проходят динамические статьи.
  • Анализ вопросов: Статья 6A, Статья 6B, Статья 6C: откуда берутся ключевые слова и вопросы формы.
  • Поиск: Статья 7A, Статья 7B, Статья 7C: смешанный подход с разделом в начале и маршрутом TOC, по этой статье дерево.
  • Статья 12 (список): весь раздел читается для поиска ответов по вопросам, требующих ответа по каждому пункту. Статья 13bis (проектирование циклов): дисциплина циклов, к которой относится данный цикл поиска. Статья 14 (проблема корпуса): Тот же шаг маршрутизации на один уровень выше, по привязанным с документами.
  • Кежан Ши Посмотреть все Кежан Ши

    Источник: towardsdatascience.com

    Оцените материал:

    Поделиться
    Понравилась статья? Расскажите другим
    ВКонтакте
    Читайте также
    Новости робототехники Страх перед человекоподобными роботами подтолкнул рабочих к забастовке на автомобильном заводе Hyundai. Новости робототехники Основатель Максимо рассказывает, как робототехника строит строительство солнечной энергетики. Архив рубрики ~Обо всем~ Астрономы нашли кандидата в самый далекий галактический бар. Он существовал спустя почти 1,2 миллиарда лет после Большого Взрыва Новости робототехники По заключению Национального совета по безопасности на транспорте (NTSB), водитель Tesla, который объяснил аварию тем, что автопилот нажал на педаль газа на 100%. Новости робототехники Mondo Robotics представляет собой Beni, вездеходного робота с электрической розеткой и искусственным интеллектом для потребителей. Архив рубрики ~Обо всем~ «Парачастицы» могут стать представителями третьего царства квантовых частиц Архив рубрики ~Коротко из Telegram~ Нейросеть обучили подсчету и оценке качества семян Архив рубрики ~Коротко из Telegram~ «Комендантский час» на соцсети для подростков 16-17 лет хотят ввести… Архив рубрики ~Коротко из Telegram~ В Южной Корее создадут бесплатного ИИ-бота для всех граждан. Архив рубрики ~Коротко из Telegram~ В США 73% технических вакансий требуют навыков работы с ИИ,… Архив рубрики ~Обо всем~ Компания SpaceX внезапно прервала второй запуск Starship V3 после запуска двигателя. Архив рубрики ~Коротко из Telegram~ Samsung хочет обучать ИИ на данных здоровья Архив рубрики ~Коротко из Telegram~ Бывший глава «Яндекс Лавки» вышел в Nebius Илья Красильщик, медиаменеджер… Архив рубрики ~Коротко из Telegram~ Хотел рассказать про запуск самого большого в мире Starship —… Новости робототехники Страх перед человекоподобными роботами подтолкнул рабочих к забастовке на автомобильном заводе Hyundai. Новости робототехники Основатель Максимо рассказывает, как робототехника строит строительство солнечной энергетики. Архив рубрики ~Обо всем~ Астрономы нашли кандидата в самый далекий галактический бар. Он существовал спустя почти 1,2 миллиарда лет после Большого Взрыва Новости робототехники По заключению Национального совета по безопасности на транспорте (NTSB), водитель Tesla, который объяснил аварию тем, что автопилот нажал на педаль газа на 100%. Новости робототехники Mondo Robotics представляет собой Beni, вездеходного робота с электрической розеткой и искусственным интеллектом для потребителей. Архив рубрики ~Обо всем~ «Парачастицы» могут стать представителями третьего царства квантовых частиц Архив рубрики ~Коротко из Telegram~ Нейросеть обучили подсчету и оценке качества семян Архив рубрики ~Коротко из Telegram~ «Комендантский час» на соцсети для подростков 16-17 лет хотят ввести… Архив рубрики ~Коротко из Telegram~ В Южной Корее создадут бесплатного ИИ-бота для всех граждан. Архив рубрики ~Коротко из Telegram~ В США 73% технических вакансий требуют навыков работы с ИИ,… Архив рубрики ~Обо всем~ Компания SpaceX внезапно прервала второй запуск Starship V3 после запуска двигателя. Архив рубрики ~Коротко из Telegram~ Samsung хочет обучать ИИ на данных здоровья Архив рубрики ~Коротко из Telegram~ Бывший глава «Яндекс Лавки» вышел в Nebius Илья Красильщик, медиаменеджер… Архив рубрики ~Коротко из Telegram~ Хотел рассказать про запуск самого большого в мире Starship —…

    Оставить комментарий