중요합니다
이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.
Databricks 관리형 벡터 검색 MCP 서버를 사용하는 AI 에이전트를 빌드할 때 매개 변수를 사용하여 _meta 검색 필터를 반환하고 적용할 최대 결과 수와 같은 도구 동작을 결정적으로 제어합니다.
주요 이점은 에이전트가 동적으로 생성할 수 있도록 실제 검색 쿼리를 유연하게 유지하면서 검색 동작(예: 결과 제한 및 필터)을 미리 설정할 수 있다는 것입니다.
매개 _meta 변수는 공식 MCP 사양의 일부입니다.
도구 호출 인수 및 _meta 매개 변수
Vector Search MCP 서버는 다음 두 가지 방법으로 매개 변수를 처리합니다.
- 도구 호출 인수: 일반적으로 사용자 입력을 기반으로 LLM에서 동적으로 생성되는 매개 변수
-
_meta매개 변수: 에이전트 코드에서 검색 동작을 결정적으로 제어하기 위해 미리 설정할 수 있는 구성 매개 변수
지원되는 _meta 매개 변수
_meta 다음 매개 변수는 벡터 검색에 지원됩니다.
| 매개 변수 이름 | 유형 | Description |
|---|---|---|
columns |
str |
검색 결과에서 반환할 열 이름의 쉼표로 구분된 목록입니다. 예: "id,text,metadata"지정하지 않으면 "__"로 시작하는 내부 열을 제외한 모든 열이 반환됩니다. |
columns_to_rerank |
str |
열 이름이 쉼표로 구분된 목록이며, 해당 콘텐츠는 재배치 모델에 전달됩니다. 재정렬기는 해당 콘텐츠를 사용하여 모든 검색 결과를 재점수하여 관련성을 높입니다. 예: "text,title,description"지정하지 않으면 재랜킹이 수행되지 않습니다. |
filters |
str |
검색에 적용할 필터가 포함된 JSON 문자열입니다. 유효한 JSON 문자열 형식이어야 합니다. 예: '{"updated_after": "2024-01-01"}'지정하지 않으면 필터가 적용되지 않습니다. |
include_score |
bool |
반환된 결과에 유사성 점수를 포함할지 여부입니다. 지원되는 값: "true" 또는 "false"기본값: "false" |
num_results |
int |
반환할 결과 수입니다. 예: "5" |
query_type |
str |
결과를 검색하는 데 사용할 검색 알고리즘입니다. 지원되는 값: "ANN" (근사 최근접 이웃, 기본값) 또는 "HYBRID" (벡터 및 키워드 검색 결합)기본값: "ANN" |
score_threshold |
float |
결과 필터링에 대한 최소 유사성 점수 임계값입니다. 이 임계값 미만의 점수가 있는 결과는 제외됩니다. 예: "0.7"지정하지 않으면 점수 필터링이 적용되지 않습니다. |
이러한 매개 변수에 대한 자세한 내용은 Vector Search Python SDK 설명서를 참조하세요.
예: 벡터 검색 검색에 대한 최대 결과 및 필터 구성
이 예제에서는 매개 변수를 사용하여 _meta AI 에이전트의 동적 쿼리를 허용하면서 벡터 검색 동작을 제어하는 방법을 보여 줍니다. 공식 Python MCP SDK를 사용합니다.
이 시나리오에서는 다음을 수행하려고 합니다.
- 일관된 응답 시간을 위해 항상 검색 결과를 정확히 3개 항목으로 제한
- 관련성을 확인하려면 최근 설명서(2024-01-01 이후 업데이트됨)만 검색합니다.
- 순수 벡터 검색보다 더 나은 정확도를 위해 하이브리드 검색 사용
- 특정 열(ID, 텍스트 및 메타데이터)만 반환합니다.
- 결과에 유사성 점수 포함
- 유사성 점수가 0.5 미만인 결과 제외
- 텍스트 및 제목 열에서 재정렬을 사용하여 관련성을 향상시키기.
이 예제를 실행하려면 관리형 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
"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())