Pular para o conteúdo principal

Metaparâmetros para servidores MCP do Databricks Vector Search

info

Beta

Este recurso está em Beta.

Ao criar agentes AI que usam servidores MCP Databricks gerenciar Vector Search, use o parâmetro _meta para controlar deterministicamente o comportamento da ferramenta, como o número máximo de resultados a serem retornados e aplicar filtros de pesquisa.

O key benefício é que você pode predefinir comportamentos de pesquisa (como limites de resultados e filtros) enquanto mantém a consulta de pesquisa real flexível para seu agente gerar dinamicamente.

O parâmetro _meta faz parte da especificação oficial do MCP.

Argumentos de chamada de ferramenta vs. parâmetros _meta

O servidor MCP de pesquisa vetorial manipula parâmetros de duas maneiras:

  • Argumentos de chamada de ferramenta : parâmetros que normalmente são gerados dinamicamente por um LLM com base na entrada do usuário
  • _meta parâmetros : parâmetros de configuração que você pode predefinir no código do seu agente para controlar deterministicamente o comportamento da pesquisa

Parâmetros suportados _meta

Os seguintes parâmetros _meta são suportados para Pesquisa de Vetores:

Nome do parâmetro

Tipo

Descrição

num_results

int

Número de resultados a serem retornados.

padrão: 5

filters

str

Strings JSON contendo filtros a serem aplicados à pesquisa. Deve ser um formato de string JSON válido.

Exemplo: '{"updated_after": "2024-01-01"}'

query_type

str

Algoritmo de busca a ser usado para recuperar resultados.

Valores suportados: "ANN" (vizinho mais próximo aproximado, default) ou "HYBRID" (combina pesquisa de vetor e palavra-chave)

padrão: "ANN"

Para obter informações detalhadas sobre esses parâmetros, consulte a documentação API de pesquisa de vetores.

Exemplo: Configurar resultados máximos e filtros para recuperação de pesquisa vetorial

Este exemplo mostra como usar parâmetros _meta para controlar o comportamento da Pesquisa de Vetores, permitindo consultas dinâmicas do seu agente AI . Ele usa o SDK oficial do Python MCP.

Neste cenário, você quer:

  • Limite sempre os resultados da pesquisa a exatamente 3 itens para tempos de resposta consistentes
  • Pesquise apenas documentação recente (atualizada após 2024-01-01) para garantir relevância
  • Use a pesquisa híbrida para maior precisão do que a pesquisa vetorial pura

Para executar este exemplo, configure seu ambiente Python para gerenciar o desenvolvimento do MCP:

Python
# 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
}
}
)

# 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())

Próximos passos