Delen via


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.

Gebruiksondersteuning

Ondersteuning voor Azure AI Foundry Python SDK C# SDK JavaScript SDK REST-API Basisagent instellen Standaardagent instellen
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

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
  1. Open uw Azure AI Search-resource.

    • Navigeer in Azure Portal naar de AI Search-resource die de index bevat die u wilt gebruiken.
  2. Kopieer het verbindingseindpunt.

    • Kopieer op het tabblad Overzicht de URL van uw resource. De URL moet de indeling https://<your-resource-name>.search.windows.net/hebben. Een schermopname van het tabblad Overzicht van een AI Search-resource in Azure Portal.
  3. 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 schermopname van het tabblad AI Search-resourcesleutels in Azure Portal.
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 nameendpoint 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.

Het Azure AI Search-hulpprogramma toevoegen aan een agent

u kunt het hulpprogramma Azure AI Search programmatisch toevoegen aan een agent met behulp van de codevoorbeelden bovenaan dit artikel of de Azure AI Foundry-portal. Als u de portal wilt gebruiken:

  1. Schuif in het scherm Maken en foutopsporing voor uw agent omlaag in het deelvenster Setup aan de rechterkant. Selecteer vervolgens Toevoegen.

    Een schermopname van de beschikbare hulpprogrammacategorieën in de Azure AI Foundry-portal.

  2. Selecteer Azure AI Search en volg de aanwijzingen om het hulpprogramma toe te voegen.

    Een schermopname van de beschikbare kennishulpprogramma's in de Azure AI Foundry-portal.

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 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

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. Een schermopname van een verbindingspagina voor AI Search-resources in Azure AI Foundry. 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. Een schermopname van een AI Search-resourceverbinding en het kopiëren van de verbindings-id.

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}")