Поделиться через


Хранилище знаний «проекции» в службе поиска Azure AI

Замечание

Хранилища знаний — это дополнительное хранилище, которое существует в службе хранилища Azure и содержит выходные данные наборов навыков поиска ИИ Azure. Они отделены от источников знаний и баз знаний, которые используются в рабочих процессах агентного извлечения.

Проекции определяют физические таблицы, объекты и файлы в хранилище знаний, принимающем содержимое из конвейера обогащения поиска ИИ Azure. Если вы создаете хранилище знаний, большая часть работы заключается в определении и формировании проекций.

В этой статье приводятся основные понятия проекции и рабочий процесс, чтобы у вас был некоторый фон перед началом написания кода.

Проекции определяются в наборах навыков поиска ИИ Azure, но конечные результаты — это проекции таблиц, объектов и файлов изображений в Azure Storage.

Проекции, выраженные в службе хранилища Azure

Типы проекций и использования

Хранилище знаний — это логическая конструкция, которая физически выражается как свободная коллекция таблиц, объектов JSON или двоичных файлов с изображениями в службе хранилища Azure.

Projection Storage Usage
Tables Хранилище таблиц Azure Используется для данных, которые лучше всего представлены в виде строк и столбцов, или всякий раз, когда требуется детализированное представление данных (например, в виде кадров данных). Проекции таблиц позволяют определить структурированную форму, используя навык Shaper или встроенное формирование для указания столбцов и строк. Содержимое можно упорядочить в несколько таблиц на основе знакомых принципов нормализации. Таблицы, которые находятся в той же группе, автоматически связаны.
Objects Хранилище blob-объектов Azure Используется при необходимости полного представления данных и обогащений в одном документе JSON. Как и в случае с проекциями таблиц, только допустимые объекты JSON можно спроецировать в качестве объектов, и формирование может помочь вам в этом.
Files Хранилище blob-объектов Azure Используется при сохранении нормализованных двоичных файлов изображений.

Определение проекции

Проекции задаются в свойстве knowledgeStore набора навыков. Определения проекции используются во время вызова индексатора для создания и загрузки объектов в Azure Storage с обогащенным содержимым. Если вы не знакомы с этими понятиями, начните с обогащения данных ИИ, чтобы получить вводное представление.

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

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Группы проекции

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

Один и тот же результат набора навыков используется для заполнения всех групп в разделе проекций. В следующем примере показано два.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
        {
            "tables": [],
            "objects": [],
            "files": []
        }, 
        {
            "tables": [],
            "objects": [],
            "files": []
        }
    ]
}

Группы проекций имеют следующие основные характеристики: взаимная исключительность и связанность.

Principle Description
Взаимная эксклюзивность Каждая группа полностью изолирована от других групп для поддержки различных сценариев формирования данных. Например, при тестировании различных структур и сочетаний таблиц каждый набор будет помещен в другую группу проекций для тестирования AB. Каждая группа получает данные из одного и того же источника (дерева обогащения), но полностью изолирована от сочетания таблиц, объектов и файлов любой из одноранговых групп проекций.
Relatedness В рамках группы проекций содержимое в таблицах, объектах и файлах связано. Хранилище знаний использует созданные ключи в качестве ссылочных точек на общий родительский узел. Например, рассмотрим сценарий, в котором есть документ, содержащий изображения и текст. Вы можете проецировать текст в таблицы и изображения в двоичные файлы, а таблицы и объекты имеют столбец или свойство, содержащее URL-адрес файла.

Проекция «источник»

Исходный параметр является третьим компонентом определения проекции. Так как проекции хранят данные из конвейера обогащения ИИ, источник проекции всегда является результатом навыка. Таким образом выходные данные могут быть одним полем (например, полем переведенного текста), но часто это ссылка на фигуру данных.

Структуры данных формируются вашим набором навыков. Среди всех встроенных навыков, предоставляемых в службе "Поиск ИИ Azure", есть утилитарный навык, называемый навыком Shaper, который используется для создания форм данных. Вы можете включить навыки Shaper (столько, сколько вам нужно) для поддержки проекций в хранилище знаний.

Фигуры часто используются с проекциями таблиц, где фигура не только указывает, какие строки отправляются в таблицу, но и какие столбцы создаются (вы также можете передать фигуру в проекцию объекта).

Фигуры могут быть сложными, и это не в области, чтобы подробно обсудить их здесь, но следующий пример кратко иллюстрирует базовую фигуру. Результат выполнения навыка Shaper указывается как источник проецирования таблицы. В самой проекции таблицы будут столбцы для "metadata-storage_path", "reviews_text", "reviews_title" и так далее, как указано в схеме.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Жизненный цикл проекции

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

Использование в приложениях

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

  • Используйте портал Azure для проверки создания объектов и содержимого в хранилище Azure.

  • Используйте Power BI для изучения данных. Это средство лучше всего работает, если данные содержатся в хранилище таблиц Azure. В Power BI можно управлять данными в новых таблицах, которые проще запрашивать и анализировать.

  • Используйте обогащенные данные в контейнере Blob в потоке обработки данных. Например, данные из больших двоичных объектов можно загрузить в DataFrame Pandas.

  • Наконец, если необходимо экспортировать данные из хранилища знаний, в фабрике данных Azure имеются соединители для экспорта данных и их размещения в базе данных по вашему выбору.

Контрольный список для начала работы

Помните, что проекции являются эксклюзивными для хранилищ знаний и не используются для структуры индекса поиска.

  1. В службе хранилища Azure получите строку подключения из Access Keys и убедитесь, что учетная запись StorageV2 (общего назначения V2).

  2. В службе хранилища Azure ознакомьтесь с существующим содержимым в контейнерах и таблицах, чтобы выбрать не конфликтующие имена для проекций. Хранилище знаний — это свободная коллекция таблиц и контейнеров. Рассмотрите возможность принятия соглашения об именовании для отслеживания связанных объектов.

  3. В Azure AI Search включите обогащающее кэширование (предварительная версия) в индексаторе, а затем запустите индексатор для выполнения набора навыков и заполнения кэша. Это функция предварительной версии, поэтому обязательно используйте REST API предварительной версии в запросе индексатора. После заполнения кэша можно изменить определения проекции в хранилище знаний бесплатно (если сами навыки не изменяются).

  4. В коде все проекции определяются исключительно в наборе навыков. Нет свойств индексатора (например, сопоставления полей или сопоставления выходных полей), которые применяются к проекциям. В определении набора навыков вы будете сосредоточиться на двух областях: свойств knowledgeStore и массиве навыков.

    1. В knowledgeStore укажите таблицу, объект, проекции файлов в разделе projections. Тип объекта, имя объекта и количество (на число определенных проекций) определяются в этом разделе.

    2. Из массива навыков определите, на какие выходные данные навыков необходимо ссылаться в source каждой проекции. Все проекции имеют источник. Источник может быть результатом работы вышестоящего навыка, но часто является результатом навыка шейпера. Состав проекции определяется с помощью фигур.

  5. Если вы добавляете проекции в существующий набор навыков, обновите набор навыков и запустите индексатор.

  6. Проверьте результаты в Azure Хранилище. При последующих запусках избегайте конфликтов имен, удаляя объекты в Azure Storage или изменяя имена проектов в настройках набора навыков.

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

Дальнейшие шаги

Просмотрите синтаксис и примеры для каждого типа проекции.