Ricerca di intelligenza artificiale

Importante

Questa funzionalità è in Anteprima Pubblica.

Il server MCP AI Search è un server MCP gestito da Azure Databricks che permette agli agenti di eseguire una ricerca semantica sui tuoi indici AI Search per trovare documenti rilevanti, con risultati regolati dai permessi del Catalogo Unity. Interrogare un indice richiede Azure Databricks managed embeddings.

Modello URL Ambito OAuth
https://<workspace-hostname>/api/2.0/mcp/ai-search/{catalog}/{schema}/{index_name} ai-search

Nota

Ricerca di intelligenza artificiale era in precedenza Ricerca vettoriale. Il precedente prefisso dell'URL /api/2.0/mcp/vector-search/ e il precedente ambito vector-search continuano a funzionare.

Parametri di ricerca _meta AI

Ricerca intelligenza artificiale supporta i parametri seguenti _meta :

Nome del parametro Type Description
columns str Elenco delimitato da virgole di nomi di colonna da restituire nei risultati della ricerca.
Esempio: "id,text,metadata"
Se non specificato, vengono restituite tutte le colonne (ad eccezione delle colonne interne che iniziano con "__").
columns_to_rerank str Elenco delimitato da virgole di nomi di colonna il cui contenuto viene usato dal modello di reranking per la ri-assegnazione dei punteggi. Il reranker usa questo contenuto per riassegnare un punteggio a tutti i risultati della ricerca per migliorare la pertinenza.
Esempio: "text,title,description"
Se non specificato, il reranking non viene eseguito.
filters str Stringa JSON contenente filtri da applicare alla ricerca. Deve essere JSON valido.
Esempio: '{"updated_after": "2024-01-01"}'
Se non specificato, non vengono applicati filtri.
include_score bool Indica se includere il punteggio di somiglianza nei risultati restituiti.
Valori supportati: "true" o "false"
Impostazione predefinita: "false"
num_results int Numero di risultati da restituire.
Esempio: "5"
query_type str Algoritmo di ricerca da usare per il recupero dei risultati.
Valori supportati: "ANN" (vicino approssimativo, impostazione predefinita) o "HYBRID" (combina la ricerca di vettori e parole chiave)
Impostazione predefinita: "ANN"
score_threshold float Soglia minima del punteggio di somiglianza per filtrare i risultati. I risultati con punteggi inferiori a questa soglia vengono esclusi.
Esempio: "0.7"
Se non specificato, non viene applicato alcun filtro dei punteggi.

Per informazioni dettagliate su questi parametri, vedere la documentazione di AI Search Python SDK.

Esempio: configurare i risultati e i filtri massimi per il recupero della ricerca di intelligenza artificiale

Questo esempio illustra come usare _meta i parametri per configurare il comportamento di ricerca di intelligenza artificiale consentendo al tempo stesso query dinamiche dall'agente usando il Python MCP SDK ufficiale.

In questo scenario si vuole:

  • Limitare sempre i risultati della ricerca a esattamente 3 elementi per tempi di risposta coerenti
  • Cercare solo la documentazione recente (aggiornata dopo il 2024-01-01) per verificare la pertinenza
  • Usare la ricerca ibrida per ottenere una maggiore precisione rispetto alla ricerca vettoriale pura
  • Restituisce solo colonne specifiche (ID, testo e metadati)
  • Includere punteggi di somiglianza nei risultati
  • Escludere risultati con punteggi di somiglianza inferiori a 0,5
  • Usare il reranking sulle colonne di testo e titolo per migliorare la pertinenza

Per eseguire questo esempio, configurare l'ambiente Python per lo sviluppo MCP gestito:

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