/** * LLM Reranker * * LLMを使用して検索結果をリランキングするモジュール * * @requirement REQ-RAG-103 */ import type { RetrievalResult } from '../types.js'; /** * リランキング設定 */ export interface LLMRerankerConfig { /** LLMプロバイダー名 */ provider?: string; /** モデル名 */ model?: string; /** 上位K件を返す */ topK?: number; /** スコアしきい値 */ scoreThreshold?: number; /** バッチサイズ */ batchSize?: number; /** 詳細スコアを含める */ includeDetails?: boolean; /** キャッシュを使用 */ useCache?: boolean; /** カスタムプロンプトテンプレート */ promptTemplate?: string; /** 並列実行数 */ concurrency?: number; } /** * リランキング結果 */ export interface RerankedResult extends RetrievalResult { /** リランクスコア (0-1) */ rerankedScore: number; /** 元のスコア */ originalScore: number; /** 元の順位 */ originalRank: number; /** 詳細情報 */ details?: { reasoning?: string; relevanceFactors?: string[]; confidence?: number; }; } /** * リランキングレスポンス */ export interface RerankerResponse { /** リランクされた結果 */ results: RerankedResult[]; /** 処理時間(ミリ秒) */ durationMs: number; /** トークン使用量 */ tokensUsed?: { prompt: number; completion: number; total: number; }; /** メタデータ */ metadata?: Record; } /** * デフォルト設定 */ export declare const DEFAULT_RERANKER_CONFIG: Required> & { promptTemplate?: string; }; /** * デフォルトプロンプトテンプレート */ export declare const DEFAULT_RERANKER_PROMPT = "You are a relevance scoring assistant. Given a query and a document, rate how relevant the document is to answering the query.\n\nQuery: {query}\n\nDocument:\n{document}\n\nRate the relevance on a scale of 0-10, where:\n- 0: Completely irrelevant\n- 5: Somewhat relevant\n- 10: Highly relevant and directly answers the query\n\nRespond with ONLY a JSON object in this format:\n{\n \"score\": ,\n \"reasoning\": \"\",\n \"relevanceFactors\": [\"factor1\", \"factor2\"],\n \"confidence\": \n}"; /** * スコアレスポンス型 */ interface ScoreResponse { score: number; reasoning?: string; relevanceFactors?: string[]; confidence?: number; } /** * LLMリランカー */ export declare class LLMReranker { private config; private provider; private cache; constructor(config?: LLMRerankerConfig); /** * 検索結果をリランキング */ rerank(query: string, results: RetrievalResult[]): Promise; /** * 単一ドキュメントをスコアリング */ scoreDocument(query: string, document: string): Promise; /** * バッチ処理 */ private processBatch; /** * プロンプトをフォーマット */ private formatPrompt; /** * スコアレスポンスをパース */ private parseScoreResponse; /** * プロバイダー初期化 */ private initializeProvider; /** * バッチ作成 */ private createBatches; /** * 並列処理用チャンク作成 */ private createChunks; /** * キャッシュキー生成 */ private getCacheKey; /** * キャッシュクリア */ clearCache(): void; /** * キャッシュサイズ取得 */ getCacheSize(): number; /** * 設定取得 */ getConfig(): typeof this.config; } /** * シンプルなリランキングヘルパー */ export declare function rerankResults(query: string, results: RetrievalResult[], config?: LLMRerankerConfig): Promise; export {}; //# sourceMappingURL=LLMReranker.d.ts.map