Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här notebook-filen visar hur du anropar en slutpunkt för vektorsökning med SDK för vektorsökning eller HTTP med en ny OAuth-token. I båda fallen används den optimerade nätverksvägen, vilket rekommenderas för varje produktionsarbetsbelastning.
HTTP-anropen för att skapa en token och anropa slutpunkten kan implementeras på ett valfritt språk. Tänk på att token måste uppdateras var 60:e minut för produktionsprogram. För att förhindra fel på grund av en inaktuell token rekommenderar Databricks att du uppdaterar den med ett intervall på mindre än 60 minuter.
Inställningar
%pip install databricks-sdk
%pip install databricks-vectorsearch
dbutils.library.restartPython()
import requests
import json
import random
from databricks.sdk import WorkspaceClient
import logging
Konfigurationskonstanter
Mer information om hur du skapar ett huvudnamn för tjänsten finns i Databricks-dokumentationen.
# Define the secret ID and secret for the service principal
CLIENT_ID = dbutils.secrets.get(scope="scope", key="service_principal_client_id")
CLIENT_SECRET = dbutils.secrets.get(scope="scope", key="service_principal_client_secret")
# You can get it by clicking the copy button next to the index name
INDEX_NAME="UC_CATALOG_INDEX_NAME"
ENDPOINT_NAME="ENDPOINT_NAME"
workspace_url = f"https://{spark.conf.get('spark.databricks.workspaceUrl')}"
Frågevektorsökning med hjälp av Python-klienten
Mer information finns i API-dokumentationen.
from databricks.vector_search.client import VectorSearchClient
vsc_dp = VectorSearchClient(
service_principal_client_id=CLIENT_ID,
service_principal_client_secret=CLIENT_SECRET,
workspace_url=workspace_url)
index = vsc_dp.get_index(endpoint_name=ENDPOINT_NAME, index_name=INDEX_NAME)
index.similarity_search(["text"], query_vector=[0]*2560, num_results=5, debug_level=0)
Anropa vektorsökning med hjälp av en HTTP-begäran
Det här avsnittet visar hur du anropar ett vektorsökningsindex med HJÄLP av HTTP, som du sedan kan implementera i ett verktyg eller valfritt språk.
Generera en OAuth-token med ett API-anrop
Om du vill anropa en slutpunkt med en nätverksoptimerad sökväg behöver du en OAuth-token. Följande kod skapar token.
url = f"{workspace_url}/oidc/v1/token"
deets = json.dumps([
{
"type": "unity_catalog_permission",
"securable_type": "table",
"securable_object_name": INDEX_NAME,
"operation": ("ReadVectorIndex"),
},
])
payload = { 'grant_type': 'client_credentials', 'scope': 'all-apis', 'authorization_details': deets}
response = requests.post(
url=url,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"Content-Type": "application/x-www-form-urlencoded"},
data=payload,
)
if response.status_code != 200:
logging.error(f"OAuth token request failed: {response.status_code} - {response.text}")
response.raise_for_status()
token_data = response.json()
access_token = token_data.get("access_token")
if not access_token:
raise ValueError("Failed to get access token")
Frågevektorsökning med hjälp av Python klient
Om du vill använda JavaScript eller något annat verktyg för att fråga vektorsökning skapar du frågan och skickar den till slutpunkten för vektorsökning.
index = vsc_dp.get_index(endpoint_name=ENDPOINT_NAME, index_name=INDEX_NAME)
index_url = index.index_url
print(index_url)
headers = {"Authorization": f"Bearer {access_token}"}
payload = {
"query_vector": [0]*2560,
"num_results": 5,
"columns": ["text"]}
response = requests.post(index_url+"/query", headers=headers, data=json.dumps(payload))
print(response.status_code)
print(json.dumps(response.json(), indent=2))