Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Verwalten von Azure Databricks-Vorschauen.
Wenn Sie KI-Agents erstellen, die verwaltete Vector Search MCP-Server von Databricks verwenden, verwenden Sie den _meta Parameter, um das Verhalten von Tools zu steuern, z. B. die maximale Anzahl von Ergebnissen, die zurückgegeben und Suchfilter angewendet werden sollen.
Der Hauptvorteil besteht darin, dass Sie Suchverhalten (z. B. Ergebnisbeschränkungen und Filter) voreingestellt haben und gleichzeitig die tatsächliche Suchabfrage flexibel für Ihren Agent zur dynamischen Generierung halten können.
Der _meta Parameter ist Teil der offiziellen MCP-Spezifikation.
Toolaufrufargumente im Vergleich zu _meta Parametern
Der McP-Server für die Vektorsuche verarbeitet Parameter auf zwei Arten:
- Toolaufrufargumente: Parameter, die in der Regel dynamisch von einer LLM basierend auf der Benutzereingabe generiert werden
-
_metaParameter: Konfigurationsparameter, die Sie im Agentcode voreingestellt haben, um das Suchverhalten deterministisch zu steuern
Unterstützte _meta Parameter
Die folgenden _meta Parameter werden für die Vektorsuche unterstützt:
| Parametername | Typ | Description |
|---|---|---|
columns |
str |
Durch Trennzeichen getrennte Liste der Spaltennamen, die in den Suchergebnissen zurückgegeben werden sollen. Beispiel: "id,text,metadata"Wenn nicht angegeben, werden alle Spalten (außer internen Spalten, die mit "__") beginnen, zurückgegeben. |
columns_to_rerank |
str |
Durch Trennzeichen getrennte Liste von Spaltennamen, deren Inhalt an das reranking-Modell gesendet wird. Der Reranker verwendet diesen Inhalt, um alle Suchergebnisse neu zu bewertet, um die Relevanz zu verbessern. Beispiel: "text,title,description"Wenn nicht angegeben, wird die Neurankung nicht ausgeführt. |
filters |
str |
JSON-Zeichenfolge, die Filter enthält, die auf die Suche angewendet werden sollen. Muss ein gültiges JSON-Zeichenfolgenformat sein. Beispiel: '{"updated_after": "2024-01-01"}'Wenn nicht angegeben, werden keine Filter angewendet. |
include_score |
bool |
Gibt an, ob die Ähnlichkeitsbewertung in die zurückgegebenen Ergebnisse einbezogen werden soll. Unterstützte Werte: "true" oder "false"Standard: "false" |
num_results |
int |
Anzahl der zurückzugebenden Ergebnisse. Beispiel: "5" |
query_type |
str |
Suchalgorithmus, der zum Abrufen von Ergebnissen verwendet werden soll. Unterstützte Werte: "ANN" (näherste Nachbar, Standard) oder "HYBRID" (kombiniert die Vektor- und Schlüsselwortsuche)Standard: "ANN" |
score_threshold |
float |
Schwellenwert für die Mindestähnlichkeitsbewertung zum Filtern von Ergebnissen. Ergebnisse mit Ergebnissen unterhalb dieses Schwellenwerts werden ausgeschlossen. Beispiel: "0.7"Wenn nicht angegeben, wird keine Bewertungsfilterung angewendet. |
Ausführliche Informationen zu diesen Parametern finden Sie in der Dokumentation zum Vector Search Python SDK.
Beispiel: Konfigurieren der maximalen Ergebnisse und Filter für den Vektorsuchabruf
In diesem Beispiel wird gezeigt, wie Parameter verwendet werden _meta , um das Vektorsuchverhalten zu steuern und gleichzeitig dynamische Abfragen von Ihrem KI-Agent zuzulassen. Es verwendet das offizielle Python MCP SDK.
In diesem Szenario möchten Sie:
- Beschränken Sie suchergebnisse immer auf genau 3 Elemente für konsistente Reaktionszeiten.
- Suchen Sie nur die zuletzt verwendete Dokumentation (aktualisiert nach 2024-01-01), um die Relevanz sicherzustellen.
- Verwenden der Hybridsuche für eine bessere Genauigkeit als reine Vektorsuche
- Nur bestimmte Spalten zurückgeben (ID, Text und Metadaten)
- Ähnlichkeitsbewertungen in die Ergebnisse einschließen
- Ergebnisse mit Ähnlichkeitsergebnissen unter 0,5 ausschließen
- Verwenden Sie Reranking für die Text- und Titelspalten, um die Relevanz zu verbessern.
Um dieses Beispiel auszuführen, richten Sie Ihre Python-Umgebung für die verwaltete MCP-Entwicklung ein:
# Import required libraries for MCP client and Databricks authentication
import asyncio
from databricks.sdk import WorkspaceClient
from databricks_mcp.oauth_provider import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
from mcp.types import CallToolRequest, CallToolResult
async def run_vector_search_tool_call_with_meta():
# Initialize Databricks workspace client for authentication
workspace_client = WorkspaceClient()
# Construct the MCP server URL for your specific catalog and schema
# Replace <workspace-hostname>, YOUR_CATALOG, and YOUR_SCHEMA with your values
mcp_server_url = "https://<workspace-hostname>/api/2.0/mcp/vector-search/YOUR_CATALOG/YOUR_SCHEMA"
# Establish connection to the MCP server with OAuth authentication
async with streamablehttp_client(
url=mcp_server_url,
auth=DatabricksOAuthClientProvider(workspace_client),
) as (read_stream, write_stream, _):
# Create an MCP session for making tool calls
async with ClientSession(read_stream, write_stream) as session:
# Initialize the session before making requests
await session.initialize()
# Create the tool call request with both dynamic and preset parameters
request = CallToolRequest(
method="tools/call",
params={
# Tool name follows the pattern: CATALOG__SCHEMA__INDEX_NAME
"name": "YOUR_CATALOG__YOUR_SCHEMA__YOUR_INDEX_NAME",
# Dynamic arguments - typically provided by your AI agent or user input
"arguments": {
"query": "How do I reset my password?" # This comes from your agent
},
# Meta parameters - preset configuration to control search behavior
"_meta": {
"num_results": "3", # Limit to 3 results for consistent performance
"filters": '{"updated_after": "2024-01-01"}', # JSON string for date filtering
"query_type": "HYBRID", # Use hybrid search for better relevance
"columns": "id,text,metadata", # Return only specific columns
"score_threshold": "0.5", # Filter out results with similarity score < 0.5
"include_score": "true", # Include similarity scores in results
"columns_to_rerank": "text,title" # Use reranker on these columns for better quality
}
}
)
# Send the request and get the response
response = await session.send_request(request, CallToolResult)
return response
# Execute the async function and get results
response = asyncio.run(run_vector_search_tool_call_with_meta())