Использование существующего индекса поиска ИИ с помощью средства поиска ИИ Azure
Используйте существующий индекс поиска ИИ Azure с помощью средства поиска ИИ агента.
Примечание.
Индексы поиска ИИ Azure должны соответствовать следующим требованиям:
- Индекс должен содержать по крайней мере одно искомое и извлекаемое текстовое поле (тип Edm.String)
- Индекс должен содержать по крайней мере одно поле вектора с возможностью поиска (тип Collection(Edm.Single))
- Индекс должен использовать векторный профиль или интегрированную векторизацию
Типы поиска
Индекс без семантической конфигурации
- По умолчанию средство поиска ИИ Azure выполняет гибридный поиск (ключевое слово + вектор) во всех текстовых полях.
Индекс с семантической конфигурацией
- По умолчанию средство поиска ИИ Azure выполняет гибридный и семантический поиск во всех текстовых полях.
Настройка. Создание агента, который может использовать существующий индекс поиска ИИ Azure
Предварительные требования. Наличие существующего индекса поиска ИИ Azure
Предварительным условием использования средства поиска ИИ Azure является наличие существующего индекса поиска ИИ Azure. Если у вас нет существующего индекса, его можно создать в портал Azure с помощью мастера импорта и векторизации данных.
Создание подключения проекта к ресурсу поиска ИИ Azure с помощью индекса, который требуется использовать
После завершения настройки агента необходимо создать подключение проекта к ресурсу поиска ИИ Azure, который содержит индекс, который вы хотите использовать.
Если вы уже подключили ресурс поиска ИИ, содержащий индекс, который вы хотите использовать в проекте, пропустите этот шаг.
Получение ключа подключения к ресурсу и конечной точки поиска Azure AI
Доступ к ресурсу поиска ИИ Azure.
- В портал Azure перейдите к ресурсу поиска ИИ, содержащему индекс, который требуется использовать.
Скопируйте конечную точку подключения.
Убедитесь, что для элемента управления доступом API задано значение "Оба " и скопируйте один из ключей администратора в разделе "Управление ключами администратора".
- На панели навигации слева прокрутите вниз до раздела "Параметры" и выберите "Ключи".
- В разделе контроль доступа API убедитесь, что выбран параметр "Ключ API" и управление доступом на основе ролей.
- Если вы хотите, чтобы подключение использовало ключи API для проверки подлинности, скопируйте один из ключей в разделе "Управление ключами администратора".
Создание подключения проекта поиска ИИ Azure
Если вы используете идентификатор Microsoft Entra для типа проверки подлинности подключения, необходимо вручную назначить управляемому удостоверению проекта роль участника индекса данных поиска и участника службы поиска Azure AI Search.
Создайте следующий файл connections.yml
Вы можете использовать ключ API или файл конфигурации YAML без учетных данных. Замените заполнители name
endpoint
api_key
для значений ресурсов поиска ИИ Azure. Дополнительные сведения о файле конфигурации YAML см. в схеме YAML для поиска ИИ Azure.
Пример ключа API:
name: my_project_acs_connection_keys type: azure_ai_search endpoint: https://contoso.search.windows.net/ api_key: XXXXXXXXXXXXXXX
Учетные данные без учетных данных
name: my_project_acs_connection_credentialless type: azure_ai_search endpoint: https://contoso.search.windows.net/
Затем выполните следующую команду:
my_project_name
Замените my_resource
группу ресурсов и имя проекта, созданные в настройке агента.
az ml connection create --file {connection.yml} --resource-group {my_resource_group} --workspace-name {my_project_name}
Теперь, когда вы создали подключение проекта к ресурсу поиска ИИ Azure, вы можете настроить и начать работу с помощью средства поиска ИИ Azure с помощью пакета SDK. Перейдите на вкладку примеров кода, чтобы приступить к работе.
Краткое руководство. Использование существующего индекса поиска ИИ Azure с помощью средства поиска ИИ Azure
В этом кратком руководстве показано, как использовать существующий индекс поиска ИИ Azure с помощью средства поиска ИИ Azure.
Необходимые компоненты
Завершите настройку средства поиска ИИ Azure.
Шаг 1. Создание клиента ИИ Azure
Сначала создайте клиент ИИ Azure с помощью строка подключения проекта.
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import AzureAISearchTool
# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>"
# HostName can be found by navigating to your discovery_url and removing the leading "https://" and trailing "/discovery"
# To find your discovery_url, run the CLI command: az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
# Project Connection example: eastus.api.azureml.ms;my-subscription-id;my-resource-group;my-hub-name
connection_string = os.environ["PROJECT_CONNECTION_STRING"]
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=connection_string,
)
Шаг 2. Получение идентификатора подключения для ресурса поиска ИИ Azure
Получите идентификатор подключения подключения для подключения поиска ИИ Azure в проекте. С помощью фрагмента кода можно распечатать идентификатор подключения всех подключений поиска Azure AI в проекте.
# AI Search resource connection ID
# This code prints out the connection ID of all the Azure AI Search connections in the project
# If you have more than one AI search connection, make sure to select the correct one that contains the index you want to use.
conn_list = project_client.connections.list()
conn_id = ""
for conn in conn_list:
if conn.connection_type == "AZURE_AI_SEARCH":
print(f"Connection ID: {conn.id}")
Второй способ получить идентификатор подключения — перейти к проекту в Azure AI Foundry и щелкнуть вкладку "Подключенные ресурсы " и выбрать ресурс поиска ИИ Azure. В URL-адресе отображается wsid=/subscription/your-subscription-id..., это идентификатор подключения, который необходимо использовать. Скопируйте все, что происходит после wsid=.
Шаг 3. Настройка средства поиска ИИ Azure
Используя идентификатор подключения, который вы получили на предыдущем шаге, теперь можно настроить средство поиска ИИ Azure для использования индекса поиска ИИ Azure.
# TO DO: replace this value with the connection ID of the search index
conn_id = "/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<your-project-name>/connections/<your-azure-ai-search-connection-name>"
# Initialize agent AI search tool and add the search index connection ID and index name
# TO DO: replace <your-index-name> with the name of the index you want to use
ai_search = AzureAISearchTool(index_connection_id=conn_id, index_name="<your-index-name>")
Шаг 4. Создание агента с включенным средством поиска ИИ Azure
Измените модель на одну развернутую в проекте. Имя модели можно найти на вкладке "Модели" в Azure AI Foundry. Вы также можете изменить имя и инструкции агента в соответствии с вашими потребностями.
agent = project_client.agents.create_agent(
model="gpt-4o-mini",
name="my-assistant",
instructions="You are a helpful assistant",
tools=ai_search.definitions,
tool_resources = ai_search.resources,
)
print(f"Created agent, ID: {agent.id}")
Шаг 5. Вопросы агента о данных в индексе
Теперь, когда агент создан, задайте вопросы о данных в индексе поиска ИИ Azure. В этом примере предполагается, что индекс поиска ИИ Azure содержит сведения о планах здравоохранения.
# Create a thread
thread = project_client.agents.create_thread()
print(f"Created thread, thread ID: {thread.id}")
# Create a message
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="what are my health insurance plan coverage types?",
)
print(f"Created message, message ID: {message.id}")
# Run the agent
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")
if run.status == "failed":
# Check if you got "Rate limit is exceeded.", then you want to get more quota
print(f"Run failed: {run.last_error}")
# Get messages from the thread
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")
assistant_message = ""
for message in messages.data:
if message["role"] == "assistant":
assistant_message = message["content"][0]["text"]["value"]
# Get the last message from the sender
print(f"Assistant response: {assistant_message}")