Utiliser un index AI Search existant avec l'outil Azure AI Search
Utiliser un index Azure AI Search existant avec l'outil Azure AI Search de l’agent.
Remarque
Les index Azure AI Search doivent respecter les critères suivants :
- L'index doit contenir au moins un champ de texte consultable et récupérable (type Edm.String)
- L'index doit contenir au moins un champ vectoriel consultable (type Collection(Edm.Single))
- L'index doit utiliser un profil vectoriel ou une vectorisation intégrée
Rechercher dans les types
Index sans configuration sémantique
- Par défaut, l'outil Azure AI Search exécute une recherche hybride (mot-clé + vecteur) sur tous les champs de texte.
Index avec configuration sémantique
- Par défaut, l'outil Azure AI Search exécute une recherche hybride et sémantique sur tous les champs de texte.
Prise en charge de l’utilisation
Prise en charge d’Azure AI Foundry | Kit de développement logiciel (SDK) Python | Kit de développement logiciel (SDK) C# | Kit de développement logiciel (SDK) JavaScript | API REST | Configuration d’agent de base | Configuration d’agent standard |
---|---|---|---|---|---|---|
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Configuration : créez un agent qui peut utiliser un index Azure AI Search existant
Prérequis : disposer d'un index Azure AI Search existant
Pour utiliser l'outil Azure AI Search, il faut disposer d'un index Azure AI Search existant. Si vous n'avez pas d'index existant, vous pouvez en créer un dans le Portail Microsoft Azure à l'aide de l'assistant d'importation et de vectorisation des données.
Créez une connexion de projet à la ressource Azure AI Search avec l'index que vous souhaitez utiliser
Une fois la configuration de l'agent terminée, vous devez créer une connexion de projet à la ressource Azure AI Search qui contient l'index que vous souhaitez utiliser.
Si vous avez déjà connecté à votre projet la ressource AI Search qui contient l'index que vous souhaitez utiliser, ignorez cette étape.
Obtenez votre clé de connexion à la ressource Azure AI Search et votre point de terminaison
Accédez à votre ressource Recherche Azure AI.
- Dans le Portail Microsoft Azure, accédez à la ressource AI Search qui contient l’index à utiliser.
Copiez le point de terminaison de connexion.
Vérifiez que le contrôle d'accès à l'API est défini sur Les deux et copiez l'une des clés sous Gérer les clés d'administration.
- Dans la barre de navigation de gauche, descendez jusqu'à la section Paramètres et sélectionnez Clés.
- Dans la section Contrôle d'accès à l'API, assurez-vous que l'option Les deux pour Contrôle d'accès basé sur la clé API et sur le rôle est sélectionnée.
- Si vous souhaitez que la connexion utilise des clés API pour l'authentification, copiez l'une des clés sous Gérer les clés d’administration.
Créer une connexion de projet Recherche Azure AI
Si vous utilisez Microsoft Entra ID pour le type d'authentification de la connexion, vous devez attribuer manuellement à l'identité gérée par le projet les rôles Search Index Data Contributor et Search Service Contributor à la ressource Azure AI Search.
Créez le fichier connections.yml suivant
Vous pouvez utiliser une clé API ou un fichier de configuration YAML sans informations d’identification. Remplacez les caractères de remplacement pour name
, endpoint
et api_key
par les valeurs de votre ressource Azure AI Search. Pour plus d’informations sur le fichier de configuration YAML, consultez le Schéma YAML des connexions Azure AI Search.
Exemple de clé API :
name: my_project_acs_connection_keys type: azure_ai_search endpoint: https://contoso.search.windows.net/ api_key: XXXXXXXXXXXXXXX
Sans information d’identification
name: my_project_acs_connection_credentialless type: azure_ai_search endpoint: https://contoso.search.windows.net/
Exécutez ensuite la commande suivante :
Remplacez my_resource
et my_project_name
par votre groupe de ressources et votre nom de projet créés dans la configuration de l'agent.
az ml connection create --file {connection.yml} --resource-group {my_resource_group} --workspace-name {my_project_name}
Maintenant que vous avez créé une connexion de projet à votre ressource Azure AI Search, vous pouvez configurer et commencer à utiliser l'outil Azure AI Search avec le SDK. Voir l'onglet des exemples de code pour commencer.
Ajouter l’outil Recherche Azure AI à un agent
Vous pouvez ajouter l’outil Recherche Azure AI à un agent de façon programmatique à l’aide des exemples de code répertoriés en haut de cet article ou proposés dans le portail Azure AI Foundry. Si vous souhaitez utiliser le portail :
Démarrage rapide : utiliser un index Azure AI Search existant avec l'outil Azure AI Search
Ce démarrage rapide montre comment utiliser un index Azure AI Search existant avec l'outil Azure AI Search.
Prérequis
Complétez la configuration de l'outil Azure AI Search.
Étape 1 : création d’un client Azure AI
Tout d'abord, créez un client Azure AI en utilisant la chaîne de connexion de votre projet.
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,
)
Étape 2 : obtenir l'identifiant de connexion pour la ressource Azure AI Search
Obtenir l'identifiant de la connexion Azure AI Search dans le projet. Vous pouvez utiliser l'extrait de code pour imprimer l'ID de connexion de toutes les connexions Azure AI Search dans le projet.
# AI Search resource connection ID
# This code looks for the AI Search Connection ID and saves it as variable conn_id
# If you have more than one AI search connection, try to establish the value in your .env file.
# Extract the connection list.
conn_list = project_client.connections._list_connections()["value"]
conn_id = ""
# Search in the metadata field of each connection in the list for the azure_ai_search type and get the id value to establish the variable
for conn in conn_list:
metadata = conn["properties"].get("metadata", {})
if metadata.get("type", "").upper() == "AZURE_AI_SEARCH":
conn_id = conn["id"]
break
La deuxième façon d'obtenir l'identifiant de connexion est de naviguer vers le projet dans Azure AI Foundry et de cliquer sur l'onglet Ressources connectées, puis de sélectionner votre ressource Azure AI Search.
Dans l'URL, vous voyez le wsid=/subscription/your-subscription-id..., c'est l'identifiant de connexion que vous devez utiliser. Copiez tout ce qui vient après wsid=.
Étape 3 : configurer l’outil Recherche Azure AI
À l'aide de l'identifiant de connexion obtenu à l'étape précédente, vous pouvez maintenant configurer l'outil Azure AI Search pour qu'il utilise votre index Azure AI Search.
# 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>")
Étape 4 : créer un agent avec l'outil Azure AI Search activé
Changez le modèle pour celui déployé dans votre projet. Vous trouverez le nom du modèle dans Azure AI Foundry sous l'onglet Modèles. Vous pouvez également modifier le nom et les instructions de l'agent en fonction de vos besoins.
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}")
Étape 5 : poser à l'agent des questions sur les données contenues dans l'index
Maintenant que l'agent est créé, posez-lui des questions sur les données de votre index Azure AI Search. L'exemple suppose que votre index Azure AI Search contient des informations sur les régimes de soins de santé.
# 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}")