Получение дополненного поколения с помощью аналитики документов ИИ Azure

Это содержимое относится к:флажокv4.0 (предварительная версия)

Введение

Получение дополненного поколения (RAG) — это шаблон проектирования, который объединяет предварительно обученную модель большого языка (LLM), например ChatGPT с системой извлечения внешних данных, чтобы создать расширенный ответ, включающий новые данные за пределами исходных обучающих данных. Добавление системы получения информации в приложения позволяет общаться с документами, создавать увлекательные материалы и получать доступ к моделям Azure OpenAI для данных. Кроме того, вы имеете больше контроля над данными, используемыми LLM, как он сформулирует ответ.

Модель макета аналитики документов — это расширенный API анализа документов на основе машинного обучения. Модель макета предлагает комплексное решение для расширенного извлечения содержимого и возможностей анализа структуры документов. С помощью модели макета можно легко извлечь текст и структурные элементы, чтобы разделить большие тела текста на небольшие, значимые фрагменты на основе семантического содержимого, а не произвольных разбиений. Извлеченные сведения можно удобно выводить в формат Markdown, что позволяет определить стратегию семантического фрагментирования на основе предоставленных стандартных блоков.

Снимок экрана: семантическое фрагментирование с помощью RAG с помощью Аналитики документов Azure.

Семантическое фрагментирование

Длинные предложения являются сложными для приложений обработки естественного языка (NLP). Особенно если они состоят из нескольких предложений, сложных фраз существительных или глаголов, относительных предложений и круглых скобок. Точно так же, как и заполнитель, система NLP также должна успешно отслеживать все представленные зависимости. Цель семантического фрагментирования заключается в поиске семантической последовательности фрагментов представления предложения. Затем эти фрагменты можно обрабатывать независимо и перекомбинировать как семантические представления без потери информации, интерпретации или семантической релевантности. Неотъемлемое значение текста используется в качестве руководства для процесса блокирования.

Стратегии блокирования текстовых данных играют ключевую роль в оптимизации ответа RAG и производительности. Фиксированный размер и семантика являются двумя различными методами блокирования:

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

  • Семантическое фрагментирование. Этот метод делит текст на блоки на основе семантического понимания. Границы деления сосредоточены на субъекте предложения и используют значительные вычислительные алгоритмически сложные ресурсы. Однако она имеет уникальное преимущество поддержания семантической согласованности в каждой блоке. Это полезно для задач сводных данных текста, анализа тональности и классификации документов.

Семантическое фрагментирование с помощью модели макета аналитики документов

Markdown — это структурированный и форматированный язык разметки и популярные входные данные для включения семантического фрагментирования в RAG (получение дополненного поколения). Содержимое Markdown из модели макета можно использовать для разделения документов на основе границ абзаца, создания определенных блоков для таблиц и точной настройки стратегии блокирования для улучшения качества созданных ответов.

Преимущества использования модели макета

  • Упрощенная обработка. Вы можете проанализировать различные типы документов, такие как цифровые и сканированные PDF-файлы, изображения, файлы office (docx, xlsx, pptx) и HTML с одним вызовом API.

  • Качество масштабируемости и искусственного интеллекта. Модель макета очень масштабируема в оптическом распознавании символов (OCR), извлечении таблиц и анализе структуры документов. Он поддерживает 309 печатных и 12 рукописных языков, обеспечивая более качественные результаты, вызванные возможностями искусственного интеллекта.

  • Совместимость больших языковых моделей (LLM). Выходные данные модели макета Markdown удобны для LLM и упрощают простую интеграцию с рабочими процессами. Вы можете превратить любую таблицу в документ в формат Markdown и избежать обширного анализа документов для повышения понимания LLM.

Текстовое изображение, обработанное с помощью Document Intelligence Studio и выходных данных в MarkDown с помощью модели макета

Снимок экрана: статья газеты, обработанная моделью макета и выведенная в Markdown.

Изображение таблицы, обработанное с помощью Document Intelligence Studio с помощью модели макета

Снимок экрана: таблица, обработанная моделью макета и выводимая в Markdown.

Начать

Модель макета аналитики документов 2024-02-29-preview и 2023-10-31-preview поддерживает следующие варианты разработки:

Готовы начать?

Document Intelligence Studio

Чтобы приступить к работе, ознакомьтесь с кратким руководством по Document Intelligence Studio. Затем можно интегрировать функции аналитики документов с собственным приложением с помощью предоставленного примера кода.

  • Начните с модели макета. Для использования RAG в студии необходимо выбрать следующие параметры анализа:

    **Required**

    • Запуск диапазона анализа → текущем документе.
    • Диапазон страниц → все страницы.
    • Стиль формата вывода → Markdown.

    **Optional**

    • Также можно выбрать соответствующие необязательные параметры обнаружения.
  • Выберите Сохранить.

    Снимок экрана: диалоговое окно

  • Нажмите кнопку "Выполнить анализ", чтобы просмотреть выходные данные.

    Снимок экрана: кнопка

ПАКЕТ SDK или REST API

  • Вы можете следовать краткому руководству по анализу документов для предпочитаемого пакета SDK для языка программирования или REST API. Используйте модель макета для извлечения содержимого и структуры из документов.

  • Вы также можете проверка репозитории GitHub для примеров кода и советов по анализу документа в формате вывода markdown.

Создание чата документов с семантическим фрагментированием

  • Azure OpenAI для данных позволяет запускать поддерживаемый чат в документах. Azure OpenAI для данных применяет модель макета аналитики документов для извлечения и анализа данных документа путем фрагментирования длинного текста на основе таблиц и абзацев. Вы также можете настроить стратегию блокирования с помощью примеров скриптов Azure OpenAI, расположенных в репозитории GitHub.

  • Аналитика документов Azure теперь интегрирована с LangChain в качестве одного из загрузчиков документов. Его можно использовать для легкой загрузки данных и выходных данных в формат Markdown. Дополнительные сведения см . в нашем примере кода , который показывает простую демонстрацию шаблона RAG с помощью аналитики документов Azure AI в качестве загрузчика документов и поиска Azure в качестве извлекателя в LangChain.

  • В чате с примером кода акселератора решений данных демонстрируется комплексный пример шаблона RAG. Он использует поиск ИИ Azure в качестве извлекателя и аналитики документов Azure для загрузки документов и семантического фрагментирования.

Вариант использования

Если вы ищете определенный раздел в документе, вы можете использовать семантические блоки, чтобы разделить документ на небольшие блоки на основе заголовков разделов, помогающих найти раздел, который вы ищете быстро и легко:


# Using SDK targeting 2024-02-29-preview or 2023-10-31-preview, make sure your resource is in one of these regions: East US, West US2, West Europe
# pip install azure-ai-documentintelligence==1.0.0b1
# pip install langchain langchain-community azure-ai-documentintelligence

from azure.ai.documentintelligence import DocumentIntelligenceClient

endpoint = "https://<my-custom-subdomain>.cognitiveservices.azure.com/"
key = "<api_key>"

from langchain_community.document_loaders import AzureAIDocumentIntelligenceLoader
from langchain.text_splitter import MarkdownHeaderTextSplitter
 
# Initiate Azure AI Document Intelligence to load the document. You can either specify file_path or url_path to load the document.
loader = AzureAIDocumentIntelligenceLoader(file_path="<path to your file>", api_key = key, api_endpoint = endpoint, api_model="prebuilt-layout")
docs = loader.load()
 
# Split the document into chunks base on markdown headers.
headers_to_split_on = [
    ("#", "Header 1"),
    ("##", "Header 2"),
    ("###", "Header 3"),
]
text_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on)
 
docs_string = docs[0].page_content
splits = text_splitter.split_text(docs_string)
splits

Следующие шаги