Een bestaande AI Search-index gebruiken met het Azure AI Search-hulpprogramma
Gebruik een bestaande Azure AI Search-index met het Azure AI Search-hulpprogramma van de agent.
Notitie
Azure AI Search-indexen moeten voldoen aan de volgende vereisten:
- De index moet ten minste één doorzoekbaar en ophaalbaar tekstveld bevatten (type Edm.String)
- De index moet ten minste één doorzoekbaar vectorveld bevatten (type Collection(Edm.Single))
- De index moet een vectorprofiel/geïntegreerde vectorisatie gebruiken
Zoektypen
Index zonder semantische configuratie
- Het hulpprogramma Azure AI Search voert standaard een hybride zoekopdracht (trefwoord en vector) uit op alle tekstvelden.
Indexeren met semantische configuratie
- Het Azure AI Search-hulpprogramma voert standaard hybride en semantische zoekopdrachten uit op alle tekstvelden.
Installatie: Een agent maken die een bestaande Azure AI Search-index kan gebruiken
Vereiste: een bestaande Azure AI Search-index hebben
Een vereiste voor het gebruik van het Azure AI Search-hulpprogramma is om een bestaande Azure AI Search-index te hebben. Als u geen bestaande index hebt, kunt u er een maken in Azure Portal met behulp van de wizard Gegevens importeren en vectoriseren.
Maak een projectverbinding met de Azure AI Search-resource met de index die u wilt gebruiken
Nadat u de agentinstallatie hebt voltooid, moet u een projectverbinding maken met de Azure AI Search-resource die de index bevat die u wilt gebruiken.
Als u de AI Search-resource die de index bevat die u wilt gebruiken voor uw project al hebt verbonden, slaat u deze stap over.
De verbindingssleutel en het eindpunt van uw Azure AI Search-resource ophalen
Open uw Azure AI Search-resource.
- Navigeer in Azure Portal naar de AI Search-resource die de index bevat die u wilt gebruiken.
Kopieer het verbindingseindpunt.
Controleer of API-toegangsbeheer is ingesteld op Beide en kopieer een van de sleutels onder Beheer van beheersleutels.
- Schuif in de linkernavigatiebalk omlaag naar de sectie Instellingen en selecteer Sleutels.
- Controleer in de sectie API-toegangsbeheer of de optie Api-sleutel en op rollen gebaseerd toegangsbeheer is geselecteerd.
- Als u wilt dat de verbinding API-sleutels gebruikt voor verificatie, kopieert u een van de sleutels onder Beheer van beheersleutels.
Een Azure AI Search-projectverbinding maken
Als u Microsoft Entra ID gebruikt voor het verificatietype voor de verbinding, moet u de door het project beheerde identiteit handmatig toewijzen aan de rollen Search Index Data Contributor en Search Service Contributor aan de Azure AI Search-resource.
Maak het volgende connections.yml-bestand
U kunt een API-sleutel of een YAML-configuratiebestand met referenties gebruiken. Vervang de tijdelijke aanduidingen voor name
endpoint
en api_key
door uw Azure AI Search-resourcewaarden. Zie het YAML-schema van de Azure AI Search-verbinding voor meer informatie over het YAML-configuratiebestand van de YAML-verbinding.
Voorbeeld van API-sleutel:
name: my_project_acs_connection_keys type: azure_ai_search endpoint: https://contoso.search.windows.net/ api_key: XXXXXXXXXXXXXXX
Referentieloos
name: my_project_acs_connection_credentialless type: azure_ai_search endpoint: https://contoso.search.windows.net/
Voer vervolgens de volgende opdracht uit:
Vervang en vervang my_resource
door my_project_name
de resourcegroep en projectnaam die u hebt gemaakt in de agentinstallatie.
az ml connection create --file {connection.yml} --resource-group {my_resource_group} --workspace-name {my_project_name}
Nu u een projectverbinding met uw Azure AI Search-resource hebt gemaakt, kunt u het hulpprogramma Azure AI Search configureren en gebruiken met de SDK. Zie het tabblad Codevoorbeelden om aan de slag te gaan.
Quickstart: een bestaande Azure AI Search-index gebruiken met het Azure AI Search-hulpprogramma
In deze quickstart ziet u hoe u een bestaande Azure AI Search-index gebruikt met het hulpprogramma Azure AI Search.
Vereisten
Voltooi de installatie van het hulpprogramma Azure AI Search.
Stap 1: Een Azure AI-client maken
Maak eerst een Azure AI-client met behulp van de verbindingsreeks van uw project.
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,
)
Stap 2: De verbindings-id voor de Azure AI Search-resource ophalen
Haal de verbindings-id op van de Azure AI Search-verbinding in het project. U kunt het codefragment gebruiken om de verbindings-id van alle Azure AI Search-verbindingen in het project af te drukken.
# 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}")
De tweede manier om de verbindings-id op te halen, is door naar het project in Azure AI Foundry te gaan en op het tabblad Verbonden resources te klikken en vervolgens uw Azure AI Search-resource te selecteren. In de URL ziet u de wsid=/subscription/your-subscription-id..., dit is de verbindings-id die u moet gebruiken. Kopieer alles wat na wsid= komt.
Stap 3: Het hulpprogramma Azure AI Search configureren
Met behulp van de verbindings-id die u in de vorige stap hebt gekregen, kunt u nu het hulpprogramma Azure AI Search configureren om uw Azure AI Search-index te gebruiken.
# 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>")
Stap 4: Een agent maken waarvoor het Azure AI Search-hulpprogramma is ingeschakeld
Wijzig het model in het model dat in uw project is geïmplementeerd. U vindt de naam van het model in Azure AI Foundry op het tabblad Modellen . U kunt ook de naam en instructies van de agent aanpassen aan uw behoeften.
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}")
Stap 5: Stel de agent vragen over gegevens in de index
Nu de agent is gemaakt, stelt u deze vragen over de gegevens in uw Azure AI Search-index. In het voorbeeld wordt ervan uitgegaan dat uw Azure AI Search-index informatie bevat over gezondheidsplannen.
# 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}")