UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

55 lines (54 loc) 1.63 kB
/** * CrossEncoderReranker — AI 驱动的语义重排器 * * 替代 Jaccard 相似度,使用 LLM 对 (query, document) 对进行语义相关性评分。 * * 策略: * 1. 将候选文档与 query 组成 pairs,批量送入 AI 评分 * 2. AI 返回每个 pair 的 relevance score (0.0-1.0) * 3. 按 score 降序排列 * * 优化: * - 单次 API 调用批量评分(减少延迟和成本) * - 文档截断至 MAX_DOC_LEN 控制 token 消耗 * - 候选上限 MAX_CANDIDATES,超出部分保留原始顺序 * - AI 不可用时自动降级到 Jaccard */ interface RerankCandidate { title?: string; trigger?: string; description?: string; summary?: string; code?: string; content?: string; semanticScore?: number; [key: string]: unknown; } export declare class CrossEncoderReranker { #private; constructor(opts?: { aiProvider?: { chatWithStructuredOutput: (prompt: string, opts: Record<string, unknown>) => Promise<unknown>; } | null; logger?: { warn?: (...args: unknown[]) => void; }; }); /** * 对候选列表进行语义重排 * * @param query 用户查询 * @param candidates Layer 1 输出的候选列表 * @returns 附带 semanticScore 的候选列表(降序) */ rerank(query: string, candidates: RerankCandidate[]): Promise<RerankCandidate[] | { semanticScore: any; title?: string; trigger?: string; description?: string; summary?: string; code?: string; content?: string; }[]>; } export {};