hybridSearch
Combine keyword and semantic searches with configurable weights to retrieve results balancing exact matches and contextually relevant content, enhancing search precision and relevancy.
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 |
|---|---|---|---|
| filter | No | ||
| hybridConfig | Yes | ||
| namespaceId | No | ||
| query | Yes | ||
| scoreThreshold | No | ||
| searchType | No | ||
| tenantId | No | ||
| topK | No |
Implementation Reference
- src/sourcesync.ts:586-613 (handler)Core handler function implementing the hybridSearch logic in the SourceSyncApiClient class. Makes a POST request to the '/v1/search/hybrid' API endpoint with the provided parameters./** * Perform a hybrid search */ 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 validation for the hybridSearch tool, including required query and hybridConfig, 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 registration of the 'hybridSearch' tool, including description, input schema from HybridSearchSchema, and handler that creates SourceSync client and calls 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, }) }) }, )