Recherche IA
Aperçu
Cette fonctionnalité est en Aperçu public.
Le serveur MCP AI Search est un serveur MCP géré par Databricks qui permet aux agents d'exécuter une recherche sémantique sur vos index AI Search pour trouver des documents pertinents, avec des résultats régis par les autorisations Unity Catalog. L'interrogation d'un index nécessite des intégrations gérées par Databricks.
Modèle d'URL | Champ d’application d’OAuth |
|---|---|
|
|
AI Search s’appelait auparavant Vector Search. Le préfixe d’URL /api/2.0/mcp/vector-search/ et l’étendue vector-search précédents fonctionnent toujours.
Paramètres de recherche IA _meta
La recherche IA prend en charge les paramètres _meta suivants :
Nom du parameter | Type | Description |
|---|---|---|
|
| Liste de noms de colonnes séparés par des virgules à renvoyer dans les résultats de recherche. Exemple : Si rien n'est spécifié, toutes les colonnes (à l'exception des colonnes internes commençant par « __ ») sont renvoyées. |
|
| Liste de noms de colonnes séparés par des virgules dont le contenu est utilisé par le modèle de réorganisation pour le re-scoring. Le réorganisateur utilise ce contenu pour re-scorer tous les résultats de recherche afin d'améliorer la pertinence. Exemple : Si rien n'est spécifié, aucun reclassement n'est effectué. |
|
| Chaîne JSON contenant les filtres à appliquer à la recherche. Doit être un JSON valide. Exemple : Si rien n’est spécifié, aucun filtre n’est appliqué. |
|
| Indique s'il faut inclure le score de similarité dans les résultats renvoyés. Valeurs prises en charge : default: |
|
| Nombre de résultats à renvoyer. Exemple : |
|
| Algorithme de recherche à utiliser pour récupérer les résultats. Valeurs prises en charge : default: |
|
| threshold de score de similarité minimal pour le filtrage des résultats. Les résultats dont le score est inférieur à ce threshold sont exclus. Exemple : Si rien n'est spécifié, aucun filtrage de score n'est appliqué. |
Pour des informations détaillées sur ces paramètres, consultez la documentation du SDK Python AI Search.
Exemple : configurer le nombre maximal de résultats et les filtres pour la récupération de recherche IA
Cet exemple montre comment utiliser _meta paramètres pour configurer le comportement de la recherche IA tout en permettant des requêtes dynamiques de votre agent à l'aide du SDK MCP Python officiel.
Dans ce scénario, vous souhaitez :
- Limitez toujours les résultats de recherche à exactement 3 éléments pour des temps de réponse cohérents
- Rechercher uniquement dans la documentation récente (mise à jour après le 01.01.2024) pour vérifier la pertinence
- Utilisez la recherche hybride pour une meilleure précision qu'avec une recherche vectorielle pure
- Ne renvoyer que des colonnes spécifiques (id, text et metadata)
- Inclure les scores de similarité dans les résultats
- Exclure les résultats dont le score de similarité est inférieur à 0,5
- Utilisez le reclassement sur les colonnes de texte et de titre pour améliorer la pertinence
Pour exécuter cet exemple, configurez votre environnement Python pour le développement MCP géré:
# 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())