다음을 통해 공유


Databricks Vector Search MCP 서버에 대한 메타 매개 변수

중요합니다

이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. 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())

다음 단계