Головна / Статті

PDF-збірник запитань та відповідей про Azure AI Search та агентів Foundry

Створіть індекс приватних PDF-курсів з вбудованими даними, під’єднайте агента Foundry до векторного індексу та виправте проблеми з автентифікацією та інструкціями, через які RAG виглядає несправним.

Видавець: REACTAPP.TOP9 хв читання2147 слів

Джерела: Building a Grounded RAG Agent on Azure AI Search and Azure AI Foundry

Вступ

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

Ось у чому суть підходу RAG: отримання релевантних фрагментів з приватного набору документів та використання їх для формування відповідей. Ця система реалізує цю схему повністю на платформі Azure — Azure AI Search індексує справжні PDF-файли з використанням ембеддингів, а також є агент Azure AI Foundry, який надає відповіді на основі цього індексу, а не загальних знань.

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

Розуміння архітектури

Чотири сервіси Azure виконують чотири завдання.

Blob Storage зберігає вихідні документи — тут це PDF-файли з елементами форензики; будь-який корпус даних з приватного домену підходить за структурою.

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

Azure AI Foundry хостить моделі та агента: систему розгортання ембеддингів для векторизації індексу/запиту та систему розгортання чат-функцій для отримання відповідей. Агент обгортає модель чату інформацією з джерела знань та інструкціями.

Управління ідентичностями та RBAC визначають, хто може виконувати які запити. Підключення (Search→Blob, Search→embeddings, agent→index) повинні використовувати ролі з обмеженими правами замість вбудованих ключів. У цій версії не досягнуто повністю безключової структури; ця проблема описана нижче.

Перший етап: джерельні документи

Приватний контейнер blob (knowledge-docs) отримав PDF-файли курсу. Доступ залишався приватним — без анонімного читання, що відповідає ставленню до матеріалів як до конфіденційних.

Другий етап: розгортання моделей у Azure AI Foundry

У проекті Foundry є два елементи розгортання:

  • Чат (chat-deploy) для отримання відповідей
  • Ембеддинги (embed-deploy, text-embedding-3-small) для векторів документів та запитів
  • Переконайтеся, що обидва існують, перш ніж під’єднувати набори навичок пошуку чи агентів; відсутні розгортання призводять до незрозумілих помилок індексації пізніше.

    Третій етап: Azure AI Search та векторизований індекс

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

    1. Забирає блоки даних з knowledge-docs
    2. Розділяє їх на перекриваючіся фрагменти
    3. Викликає розгортання ембеддингів
    4. Записує вектори до індексу

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

    Web Api response status: 'NotFound'
    DeploymentNotFound: The API deployment for this resource does not exist.
    
    Web Api response status: 'Unauthorized' (401)
    Access denied due to invalid subscription key or wrong API endpoint.
    
    Access denied when connecting to the MCP server ... HTTP 403 Forbidden
    
    You are an assistant that answers questions about digital forensics course material.
    For every user question, you MUST first search the connected knowledge base before answering.
    Only answer using information retrieved from the knowledge base.
    If the knowledge base returns no relevant results, say so explicitly rather than answering from general knowledge.
    

    Четвертий етап: проблеми індексації та їх значення

    Індексація рідко зазнає невдач через одне чітке речення. Поширені форми таких проблем:

    • Набір навичок не може досягти місця розгортання (проблеми з автентифікацією або неправильний кінцевий пункт)
    • Запланований запуск індексатора відбувається, але документи залишаються у кількості нуля (проблеми з шляхом у контейнері або посиланням на набір навичок)
    • Вектори записуються з неправильними розмірами (невідповідність моделі між схемою індексу та способом розгортання)

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

    П’ятий етап: підключення індексу до агента

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

    Шостий етап: дві проблеми з поведінкою

    Окрім налаштувань виникли дві проблеми з поведінкою:

    1. Надмірна готовність до допомоги — модель чату відповідала на основі попередніх знань, коли результати пошуку були порожніми. Потрібно усунути зайву гнучкість в інструкціях та, де це можливо, запровадити перевірки обґрунтованості, щоб при порожніх результатах поверталося повідомлення „не в корпусі“.
    2. Несуворість автентифікації — деякі посилання все ще використовували ключі, тоді як інші — керовані ідентичності. Змішана автентифікація ускладнює процес заміни та приховує, який принципал насправді досяг успіху.

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

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

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

    Виклики та уроки, винесені з досвіду

    • Перед створенням ресурсів необхідно перевірити наявність регіону та моделей.
    • Розмір вбудовування у схемі індексу має точно відповідати обраній моделі вбудовування.
    • Помилки RBAC виглядають як порожні індекси, поки ви не переглянете деталі індексатора.
    • Інструкції для агента є частиною правильності роботи, а не елементом декору.
  • Задокументуйте модель автентифікації, яку ви насправді використовуєте, включаючи тимчасові ключі.
  • Основні висновки

    Azure RAG — це ланцюг невеликих конtrakтів: конфіденційність блобів, дозволи на вбудовування навичок, схема індексу ↔ розміри моделі, приєднання знань агента та політика формування відповідей. Якщо все це налаштовано правильно, архітектура буде простою — у хорошому сенсі. Якщо щось пропустити, доведеться годинами відлагоджувати, думаючи, що «RAG не працює».

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок та керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламається о 02:00, ця сторінка допоможе швидше знайти проблему, ніж аналіз скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та призупиняє процес будування, якщо рівень обґрунтованості знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зламується о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до провалу процесу будування, якщо достовірність даних знижується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, цей посібник допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо достовірність даних погіршується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, цей посібник допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо достовірність даних погіршується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, цей посібник допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо стабільність погіршується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, цей посібник допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо стабільність погіршується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо стабільність погіршується.

    Порада щодо експлуатації: тримайте односторінковий посібник, у якому перелічені точні назви ресурсів, назви розгортань (а не назви базових моделей), назва індексу, назва набору навичок, а також керовані ідентифікатори чи ключі, які використовуються на кожному етапі. Коли індексатор зазнає невдачі о 02:00, ця сторінка допомагає у розслідуванні за допомогою скріншотів з порталу. Додайте щотижневе завдання, яке ставить три ключові запитання, відповіді на які знаходяться на відомих сторінках, та яке призводить до невдачі процесу будування, якщо стабільність погіршується.