Средство поиска файлов классической версии службы агента Foundry

Примечание

Этот документ ссылается на агентов Microsoft Foundry (classic).

🔍 Просмотрите новую документацию по поиску файлов. Агенты (классические) в настоящее время устарели и будут удалены 31 марта 2027 года. Используйте новые агенты в общедоступной службе Microsoft Foundry Agents. Следуйте инструкциям по миграции , чтобы обновить рабочие нагрузки.

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

Примечание

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

Источники файлов

  • Отправка локальных файлов
  • Хранилище BLOB-объектов Azure

Поддержка использования

Примечание

Средство поиска файлов в настоящее время недоступно в следующих регионах:

  • Северная Италия
  • Южная Бразилия
  • Западная Европа
поддержка Azure ИИ пакет SDK Python C# SDK JavaScript SDK пакет SDK Java REST API Базовая настройка агента Настройка стандартного агента
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ Только отправка файлов Отправка файлов и использование собственного хранилища BLOB-объектов

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

Базовая настройка агента

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

  • Отправленные файлы хранятся в управляемом хранилище Microsoft
  • Хранилище векторов создается с помощью ресурса управляемого поиска Microsoft

Настройка стандартного агента

Средство поиска файлов использует Поиск с использованием ИИ Azure и Хранилище BLOB-объектов Azure ресурсы, подключенные во время установки агента.

  • Отправленные файлы хранятся в подключенной учетной записи Хранилище BLOB-объектов Azure
  • Хранилища векторов создаются с помощью подключенного ресурса Поиск с использованием ИИ Azure

Для обоих настроек агента служба обрабатывает весь процесс приема, который включает в себя:

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

Нет разницы в коде между двумя настройками; единственным вариантом является место хранения файлов и созданных векторных хранилищ.

Принцип работы

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

  • Перезаписывает запросы пользователей, чтобы оптимизировать их для поиска.
  • Разбивает сложные запросы пользователей на несколько поисковых запросов, которые могут выполняться параллельно.
  • Выполняет как ключевые слова, так и семантические поиски в хранилищах векторов агента и потока.
  • Повторно выбирает результаты поиска, чтобы выбрать наиболее релевантные, прежде чем создавать окончательный ответ.
  • По умолчанию средство поиска файлов использует следующие параметры:
    • Размер блока: 800 токенов
    • Перекрытие блока: 400 маркеров
    • Модель встраивания: text-embedding-3-large с 256 измерениями
    • Максимальное количество блоков, добавленных в контекст: 20

Векторные хранилища

Объекты векторного хранилища предоставляют средству поиска файлов возможность поиска файлов. Добавление файла в векторное хранилище автоматически анализирует, разбивает на части, встраивает и сохраняет файл в векторной базе данных, которая поддерживает как поиск по ключевым словам, так и семантический поиск. Каждое векторное хранилище может содержать до 10 000 файлов. Хранилища векторов можно подключать как к агентам, так и к потокам. В настоящее время можно подключить не более одного векторного хранилища к агенту и по крайней мере одно векторное хранилище к потоку.

Аналогичным образом эти файлы можно удалить из векторного хранилища следующим образом:

  • Удаление объекта файла векторного хранилища или
  • Удалив базовый объект файла, что приведет к удалению файла из всех конфигураций vector_store и code_interpreter для всех агентов и потоков в организации.

Максимальный размер файла составляет 512 МБ. Каждый файл должен содержать не более 5 000 000 маркеров для каждого файла (вычисляется автоматически при присоединении файла).

Обеспечение готовности хранилища векторов перед созданием запусков

Мы настоятельно рекомендуем убедиться, что все файлы в хранилище векторов (vector_store) были полностью обработаны перед созданием выполнения. Это гарантирует возможность поиска всех данных в хранилище векторов. Вы можете проверить готовность векторного хранилища с помощью вспомогательных средств опроса в пакетах SDK или вручную провести опрос объекта векторного хранилища, чтобы убедиться, что состояние завершено.

В качестве запасного варианта в объекте выполнения устанавливается 60-секундное максимальное ожидание, когда векторное хранилище потока содержит файлы, которые всё ещё обрабатываются. Это обеспечивает, что любые файлы, которые пользователи загружают в тему, полностью доступны для поиска перед началом выполнения. Это резервное ожидание не применяется к хранилищу векторов агента.

Создание векторных хранилищ и добавление файлов

Добавление файлов в векторные хранилища — это асинхронная операция. Чтобы убедиться, что операция завершена, рекомендуется использовать вспомогательные средства создания и опроса в наших официальных пакетах SDK. Если вы не используете SDK, вы можете получить vector_store объект и отслеживать его file_counts свойство, чтобы увидеть результат процесса приема файлов.

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


# create a vector store with no file and wait for it to be processed
vector_store = project_client.agents.vector_stores.create_and_poll(data_sources=[], name="sample_vector_store")
print(f"Created vector store, vector store ID: {vector_store.id}")

# add the file to the vector store or you can supply file ids in the vector store creation
vector_store_file_batch = project_client.agents.vector_store_file_batches.create_and_poll(
    vector_store_id=vector_store.id, file_ids=[file.id]
)
print(f"Created vector store file batch, vector store file batch ID: {vector_store_file_batch.id}")

Кроме того, можно добавить несколько файлов в векторное хранилище путем создания пакетов до 500 файлов.

batch = project_client.agents.vector_store_file_batches.create_and_poll(
  vector_store_id=vector_store.id,
  file_ids=[file_1.id, file_2.id, file_3.id, file_4.id, file_5.id]
)

Базовая настройка агента: удаление файлов из векторных хранилищ

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

  • Удаление объекта файла векторного хранилища или
  • Удаление базового объекта файла, которое удаляет файл из всех конфигураций vector_store и code_interpreter во всех агентах и потоках выполнения в организации.

Максимальный размер файла составляет 512 МБ. Каждый файл должен содержать не более 5 000 000 маркеров для каждого файла (вычисляется автоматически при присоединении файла).

Удаление хранилища векторов

Вы можете удалить векторное хранилище из средства поиска файлов.

file_search_tool.remove_vector_store(vector_store.id)
print(f"Removed vector store from file search, vector store ID: {vector_store.id}")

project_client.agents.update_agent(
    agent_id=agent.id, tools=file_search_tool.definitions, tool_resources=file_search_tool.resources
)
print(f"Updated agent, agent ID: {agent.id}")

Удаление хранилищ векторов

project_client.agents.vector_stores.delete(vector_store.id)
print("Deleted vector store")

Управление затратами с помощью политик истечения срока действия

Для базовой настройки file_search агента инструмент использует vector_stores объект как ресурс, и выставляется счет в зависимости от размера созданных объектов vector_store. Размер объекта векторного хранилища данных — это сумма всех проанализированных блоков из ваших файлов и их соответствующих векторов.

Чтобы помочь вам управлять затратами, связанными с этими объектами vector_store, мы добавили поддержку политик истечения срока действия в объекте vector_store . Эти политики можно задать при создании или обновлении vector_store объекта.

vector_store = project_client.agents.vector_stores.create_and_poll(
  name="Product Documentation",
  file_ids=[file_1.id],
  expires_after={
      "anchor": "last_active_at",
      "days": 7
  }
)

Хранилища векторов потоков имеют политики истечения срока действия по умолчанию

Хранилища векторов, созданные с помощью вспомогательных классов потоков (например, tool_resources.file_search.vector_stores в потоках или message.attachments в сообщениях), имеют политику автоматического истечения спустя семь дней после последнего использования, что определяется как момент, когда хранилище векторов последний раз участвовало в выполнении.

Когда срок действия хранилища векторов истекает, запуски в этом потоке завершаются сбоем. Чтобы устранить эту проблему, можно повторно создать vector_store с теми же файлами и повторно подключить его к потоку.

Поддерживаемые типы файлов

Примечание

Для типов text/MIME кодировка должна быть либо utf-8, utf-16, либо ASCII.

Формат файла Тип MIME
.c text/x-c
.cs text/x-csharp
.cpp text/x-c++
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json application/json
.md text/markdown
.pdf application/pdf
.php text/x-php
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.py text/x-python
.py text/x-script.python
.rb text/x-ruby
.tex text/x-tex
.txt text/plain
.css text/css
.js text/javascript
.sh application/x-sh
.ts application/typescript

Ограничения

  • Отправка файлов и создание векторного хранилища завершится ошибкой, если в вашей Политике Azure для индексов ресурсов Azure Search стоит запрет на индексы, не содержащие CMK, для значения Encryption. В этом случае необходимо заранее выгрузить индексы из ресурса Поиск с использованием ИИ Azure, а затем ссылаться на них в вашем агенте. Невозможно создать индексы из Foundry с типом шифрования = ключи, управляемые клиентом.