Freigeben über


Metaparameter für Databricks Vector Search MCP-Server

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
  • _meta Parameter: 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())

Nächste Schritte