Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit notebook ziet u hoe u een Vector Search-eindpunt aanroept met behulp van de Vector Search SDK of HTTP met een nieuw OAuth-token. In beide gevallen wordt het netwerk-geoptimaliseerde pad gebruikt, zoals wordt aanbevolen voor elke productiebelasting.
De HTTP-aanroepen voor het maken van een token en het aanroepen van het eindpunt kunnen worden geïmplementeerd in een taal van uw keuze. Houd er voor productietoepassingen rekening mee dat het token elke 60 minuten moet worden vernieuwd. Om fouten vanwege een verlopen token te voorkomen, raadt Databricks aan om het te vernieuwen met een interval van minder dan 60 minuten.
Installatie
%pip install databricks-sdk
%pip install databricks-vectorsearch
dbutils.library.restartPython()
import requests
import json
import random
from databricks.sdk import WorkspaceClient
import logging
Configuratieconstanten
Zie de Databricks-documentatie voor meer informatie over het maken van een service-principal.
# 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')}"
Query Vector Search met behulp van de Python-client
Zie de API-documentatie voor meer informatie.
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)
Vector Search aanroepen met behulp van een HTTP-aanvraag
In deze sectie wordt beschreven hoe u een vectorzoekindex aanroept met behulp van HTTP, die u vervolgens kunt implementeren in een hulpprogramma of taal van uw keuze.
Een OAuth-token genereren met behulp van een API-aanroep
Als u een eindpunt wilt aanroepen met behulp van een geoptimaliseerd netwerkpad, hebt u een OAuth-token nodig. Met de volgende code wordt het token gemaakt.
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")
Query Vector Search met behulp van Python-client
Als u JavaScript of een ander hulpprogramma wilt gebruiken om een query uit te voeren op vectorzoekopdrachten, maakt u de query en verzendt u deze naar het eindpunt voor vectorzoekopdrachten.
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))