Použití existujícího indexu AI Search pomocí nástroje Azure AI Search
Použijte existující index Azure AI Search s nástrojem Azure AI Search agenta.
Poznámka:
Indexy Azure AI Search musí splňovat následující požadavky:
- Index musí obsahovat aspoň jedno prohledávatelné textové pole (typ Edm.String).
- Index musí obsahovat alespoň jedno prohledávatelné vektorové pole (typ Collection(Edm.Single)).
- Index musí používat vektorový profil nebo integrovanou vektorizaci.
Typy hledání
Index bez sémantické konfigurace
- Ve výchozím nastavení nástroj Azure AI Search spouští hybridní vyhledávání (klíčové slovo + vektor) ve všech textových polích.
Index sémantickou konfigurací
- Ve výchozím nastavení nástroj Azure AI Search spouští hybridní a sémantické vyhledávání ve všech textových polích.
Nastavení: Vytvoření agenta, který může používat existující index Azure AI Search
Předpoklad: Mít existující index Azure AI Search
Předpokladem použití nástroje Azure AI Search je mít existující index Azure AI Search. Pokud nemáte existující index, můžete ho vytvořit na webu Azure Portal pomocí průvodce importem a vektorizací dat.
Vytvoření připojení projektu k prostředku Azure AI Search s indexem, který chcete použít
Po dokončení instalace agenta musíte vytvořit připojení projektu k prostředku Azure AI Search, který obsahuje index, který chcete použít.
Pokud jste už propojili zdroj vyhledávání AI, který obsahuje index, který chcete použít k projektu, přeskočte tento krok.
Získání klíče a koncového bodu připojení prostředku Azure AI Search
Získejte přístup k prostředku Azure AI Search.
- Na webu Azure Portal přejděte k prostředku AI Search, který obsahuje index, který chcete použít.
Zkopírujte koncový bod připojení.
Ověřte, že je řízení přístupu k rozhraní API nastavené na Obě a zkopírujte jeden z klíčů v části Spravovat klíče správce.
- V levém navigačním panelu se posuňte dolů do části Nastavení a vyberte Klávesy.
- V části Řízení přístupu k rozhraní API se ujistěte, že je vybraná možnost Klíč rozhraní API i Řízení přístupu na základě role.
- Pokud chcete, aby připojení k ověřování používalo klíče rozhraní API, zkopírujte jeden z klíčů v části Spravovat klíče správce.
Vytvoření připojení projektu Azure AI Search
Pokud jako typ ověřování připojení použijete ID Microsoft Entra, musíte ručně přiřadit spravovanou identitu projektu role Přispěvatel dat indexu vyhledávání a Přispěvatel vyhledávací služby k prostředku služby Azure AI Search.
Vytvořte následující soubor connections.yml.
Můžete použít buď klíč rozhraní API, nebo konfigurační soubor YAML bez přihlašovacích údajů. Zástupné symboly nahraďte name
endpoint
hodnotami api_key
prostředků Azure AI Search. Další informace o konfiguračním souboru YAML najdete ve schématu YAML připojení Azure AI Search.
Příklad klíče rozhraní API:
name: my_project_acs_connection_keys type: azure_ai_search endpoint: https://contoso.search.windows.net/ api_key: XXXXXXXXXXXXXXX
Méně přihlašovacích údajů
name: my_project_acs_connection_credentialless type: azure_ai_search endpoint: https://contoso.search.windows.net/
Pak spusťte následující příkaz:
Nahraďte a my_project_name
nahraďte my_resource
název skupiny prostředků a projektu vytvořeným v nastavení agenta.
az ml connection create --file {connection.yml} --resource-group {my_resource_group} --workspace-name {my_project_name}
Teď, když jste vytvořili připojení projektu k prostředku Azure AI Search, můžete nakonfigurovat a začít používat nástroj Azure AI Search se sadou SDK. Pokud chcete začít, podívejte se na kartu s příklady kódu.
Rychlý start – Použití existujícího indexu Azure AI Search s nástrojem Azure AI Search
V tomto rychlém startu se dozvíte, jak pomocí nástroje Azure AI Search použít existující index Azure AI Search.
Požadavky
Dokončete nastavení nástroje Azure AI Search.
Krok 1: Vytvoření klienta Azure AI
Nejprve vytvořte klienta Azure AI pomocí připojovací řetězec projektu.
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,
)
Krok 2: Získání ID připojení pro prostředek Azure AI Search
Získejte ID připojení připojení azure AI Search v projektu. Fragment kódu můžete použít k vytištění ID připojení všech připojení Azure AI Search v projektu.
# 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}")
Druhým způsobem, jak získat ID připojení, je přejít do projektu v Azure AI Foundry a kliknout na kartu Připojené prostředky a pak vybrat prostředek služby Azure AI Search.
V adrese URL se zobrazí wsid=/subscription/your-subscription-id..., toto je ID připojení, které potřebujete použít. Zkopírujte všechno, co následuje po wsid=.
Krok 3: Konfigurace nástroje Azure AI Search
Pomocí ID připojení, které jste získali v předchozím kroku, teď můžete nakonfigurovat nástroj Azure AI Search tak, aby používal index Služby 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>")
Krok 4: Vytvoření agenta s povoleným nástrojem Azure AI Search
Změňte model na model nasazený ve vašem projektu. Název modelu najdete v Azure AI Foundry na kartě Modely . Můžete také změnit název a pokyny agenta tak, aby vyhovoval vašim potřebám.
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}")
Krok 5: Zeptejte se agenta na data v indexu
Když je teď agent vytvořený, zeptejte se ho na data ve vašem indexu Azure AI Search. Tento příklad předpokládá, že index Služby Azure AI Search obsahuje informace o plánech zdravotní péče.
# 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}")