hybridSearch
Combine keyword and semantic search to find relevant information by balancing exact matches with contextual understanding. Configure weights to prioritize search types based on your needs.
Instructions
Performs a combined keyword and semantic search, balancing between exact matches and semantic similarity. Requires hybridConfig with weights for both search types.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| namespaceId | No | ||
| query | Yes | ||
| topK | No | ||
| scoreThreshold | No | ||
| filter | No | ||
| hybridConfig | Yes | ||
| tenantId | No | ||
| searchType | No |
Implementation Reference
- src/sourcesync.ts:589-613 (handler)The `hybridSearch` method in the `SourceSyncApiClient` class executes the core tool logic by making a POST request to the `/v1/search/hybrid` endpoint with the provided search parameters, injecting the namespaceId from the client instance.public async hybridSearch({ query, topK, scoreThreshold, filter, hybridConfig, searchType, }: Omit< SourceSyncHybridSearchRequest, 'namespaceId' >): Promise<SourceSyncSearchResponse> { return this.client .url('/v1/search/hybrid') .json({ query, namespaceId: this.namespaceId, topK, scoreThreshold, filter, hybridConfig, searchType, } satisfies SourceSyncHybridSearchRequest) .post() .json<SourceSyncSearchResponse>() }
- src/schemas.ts:446-462 (schema)Zod schema defining the input parameters for the hybridSearch tool, including required query and hybridConfig (with semantic and keyword weights), optional topK, scoreThreshold, filter, etc.export const HybridSearchSchema = z.object({ namespaceId: namespaceIdSchema.optional(), query: z.string(), topK: z.number().optional(), scoreThreshold: z.number().optional(), filter: z .object({ metadata: z.record(z.union([z.string(), z.array(z.string())])).optional(), }) .optional(), hybridConfig: z.object({ semanticWeight: z.number(), keywordWeight: z.number(), }), tenantId: tenantIdSchema, searchType: SearchTypeEnum.optional(), })
- src/index.ts:602-633 (registration)MCP server tool registration for 'hybridSearch', providing description, input schema from HybridSearchSchema, and a wrapper handler that creates a SourceSync client and delegates to its hybridSearch method.server.tool( 'hybridSearch', 'Performs a combined keyword and semantic search, balancing between exact matches and semantic similarity. Requires hybridConfig with weights for both search types.', HybridSearchSchema.shape, async (params: any) => { return safeApiCall(async () => { const { namespaceId, query, topK, scoreThreshold, filter, hybridConfig, tenantId, searchType, } = params // Create a client with the provided parameters const client = createClient({ namespaceId, tenantId }) // Call the hybridSearch method with the searchType (default to HYBRID if not provided) return await client.hybridSearch({ query, topK, scoreThreshold, filter, hybridConfig, searchType: searchType || SourceSyncSearchType.HYBRID, }) }) }, )