/// import { CommandParser } from "@redis/client/dist/lib/client/parser"; import { RedisArgument, ReplyUnion } from "@redis/client/dist/lib/RESP/types"; import { RedisVariadicArgument } from "@redis/client/dist/lib/commands/generic-transformers"; import { GroupByReducers } from "./AGGREGATE"; /** * Text search expression configuration for hybrid search. */ export interface FtHybridSearchExpression { /** Search query string or parameter reference (e.g., "$q") */ query: RedisArgument; /** Scoring algorithm configuration */ SCORER?: RedisArgument; /** Alias for the text search score in results */ YIELD_SCORE_AS?: RedisArgument; } /** * Vector search method configuration - either KNN or RANGE. */ export declare const FT_HYBRID_VECTOR_METHOD: { /** K-Nearest Neighbors search configuration */ readonly KNN: "KNN"; /** Range-based vector search configuration */ readonly RANGE: "RANGE"; }; /** Vector search method type */ export type FtHybridVectorMethodType = (typeof FT_HYBRID_VECTOR_METHOD)[keyof typeof FT_HYBRID_VECTOR_METHOD]; interface FtHybridVectorMethodKNN { type: (typeof FT_HYBRID_VECTOR_METHOD)["KNN"]; /** Number of nearest neighbors to find */ K: number; /** Controls the search accuracy vs. speed tradeoff */ EF_RUNTIME?: number; } interface FtHybridVectorMethodRange { type: (typeof FT_HYBRID_VECTOR_METHOD)["RANGE"]; /** Maximum distance for matches */ RADIUS: number; /** Provides additional precision control */ EPSILON?: number; } /** * Vector similarity search expression configuration. */ export interface FtHybridVectorExpression { /** Vector field name (e.g., "@embedding") */ field: RedisArgument; /** Vector parameter reference (e.g., "$v") */ vector: string; /** Search method configuration - KNN or RANGE */ method?: FtHybridVectorMethodKNN | FtHybridVectorMethodRange; /** Pre-filter expression applied before vector search (e.g., "@tag:{foo}") */ FILTER?: RedisArgument; /** Alias for the vector score in results */ YIELD_SCORE_AS?: RedisArgument; } /** * Score fusion method type constants for combining search results. */ export declare const FT_HYBRID_COMBINE_METHOD: { /** Reciprocal Rank Fusion */ readonly RRF: "RRF"; /** Linear combination with ALPHA and BETA weights */ readonly LINEAR: "LINEAR"; }; /** Combine method type */ export type FtHybridCombineMethodType = (typeof FT_HYBRID_COMBINE_METHOD)[keyof typeof FT_HYBRID_COMBINE_METHOD]; interface FtHybridCombineMethodRRF { type: (typeof FT_HYBRID_COMBINE_METHOD)["RRF"]; /** RRF constant for score calculation */ CONSTANT?: number; /** Window size for score normalization */ WINDOW?: number; } interface FtHybridCombineMethodLinear { type: (typeof FT_HYBRID_COMBINE_METHOD)["LINEAR"]; /** Weight for text search score */ ALPHA?: number; /** Weight for vector search score */ BETA?: number; /** Window size for score normalization */ WINDOW?: number; } /** * Apply expression for result transformation. */ export interface FtHybridApply { /** Transformation expression to apply */ expression: RedisArgument; /** Alias for the computed value in output */ AS?: RedisArgument; } /** * Options for the FT.HYBRID command. */ export interface FtHybridOptions { /** Text search expression configuration */ SEARCH: FtHybridSearchExpression; /** Vector similarity search expression configuration */ VSIM: FtHybridVectorExpression; /** Score fusion configuration for combining SEARCH and VSIM results */ COMBINE?: { /** Fusion method: RRF or LINEAR */ method: FtHybridCombineMethodRRF | FtHybridCombineMethodLinear; /** Alias for the combined score in results */ YIELD_SCORE_AS?: RedisArgument; }; /** * Fields to load and return in results (LOAD clause). * - Use `"*"` to load all fields from documents * - Use a field name or array of field names to load specific fields */ LOAD?: RedisVariadicArgument; /** Group by configuration for aggregation */ GROUPBY?: { /** Fields to group by */ fields: RedisVariadicArgument; /** Reducer(s) to apply to each group */ REDUCE?: GroupByReducers | Array; }; /** Apply expression(s) for result transformation */ APPLY?: FtHybridApply | Array; /** Sort configuration for results */ SORTBY?: { /** Fields to sort by with optional direction */ fields: Array<{ /** Field name to sort by */ field: RedisArgument; /** Sort direction: "ASC" (ascending) or "DESC" (descending) */ direction?: "ASC" | "DESC"; }>; }; /** Disable sorting - returns results in arbitrary order */ NOSORT?: boolean; /** Post-filter expression applied after scoring */ FILTER?: RedisArgument; /** Pagination configuration */ LIMIT?: { /** Number of results to skip */ offset: number | RedisArgument; /** Number of results to return */ count: number | RedisArgument; }; /** Query parameters for parameterized queries */ PARAMS?: Record; /** Query timeout in milliseconds */ TIMEOUT?: number; } declare const _default: { readonly NOT_KEYED_COMMAND: true; readonly IS_READ_ONLY: true; /** * Performs a hybrid search combining multiple search expressions. * Supports multiple SEARCH and VECTOR expressions with various fusion methods. * * @experimental * NOTE: FT.Hybrid is still in experimental state * It's behaviour and function signature may change * * @param parser - The command parser * @param index - The index name to search * @param options - Hybrid search options including: * - SEARCH: Text search expression with optional scoring * - VSIM: Vector similarity expression with KNN/RANGE methods * - COMBINE: Fusion method (RRF, LINEAR) * - Post-processing operations: LOAD, GROUPBY, APPLY, SORTBY, FILTER * - Tunable options: LIMIT, PARAMS, TIMEOUT */ readonly parseCommand: (this: void, parser: CommandParser, index: RedisArgument, options: FtHybridOptions) => void; readonly transformReply: { readonly 2: (reply: any) => HybridSearchResult; readonly 3: () => ReplyUnion; }; readonly unstableResp3: true; }; export default _default; export interface HybridSearchResult { totalResults: number; executionTime: number; warnings: string[]; results: Record[]; } //# sourceMappingURL=HYBRID.d.ts.map