Skip to main content

RRF_QUERY

Constant RRF_QUERY 

Source
pub const RRF_QUERY: &str = r#"
WITH fts_rank AS (
    SELECT cmd_path, row_number() OVER (ORDER BY bm25(apps_fts) ASC) as fts_pos
    FROM apps_fts WHERE apps_fts MATCH :query
),
vec_rank AS (
    SELECT cmd_path, row_number() OVER (ORDER BY distance ASC) as vec_pos
    FROM commands_vec
    WHERE embedding MATCH :query_vector AND k = 100
)
SELECT
    arg.cmd_path, arg.node_name, arg.description, arg.risk_level, arg.example_template,
    COALESCE(1.0 / (60.0 + fts.fts_pos), 0.0) + COALESCE(1.0 / (60.0 + vec.vec_pos), 0.0) as rrf_score
FROM arguments arg
LEFT JOIN fts_rank fts ON arg.cmd_path = fts.cmd_path
LEFT JOIN vec_rank vec ON arg.cmd_path = vec.cmd_path
WHERE fts.cmd_path IS NOT NULL OR vec.cmd_path IS NOT NULL
ORDER BY rrf_score DESC
LIMIT :limit_num;
"#;
Expand description

The Reciprocal Rank Fusion (RRF) hybrid search query combining FTS5 and sqlite-vec.