/** * RAG检索优化使用示例 * 展示如何使用新的RAG配置优化功能 */ import { RagGroundingConfig, DEFAULT_RAG_GROUNDING_CONFIG } from '../apps/desktop/src/types/ragGrounding'; import { RagConfigOptimizer } from '../apps/desktop/src/utils/ragConfigOptimizer'; import { queryRagGrounding } from '../apps/desktop/src/services/ragGroundingService'; /** * 示例 1: 使用预定义优化场景 */ async function scenarioBasedOptimization() { console.log('=== 场景化优化示例 ==='); const baseConfig = DEFAULT_RAG_GROUNDING_CONFIG; // 高召回率场景 - 适用于需要更多参考信息的查询 const highRecallConfig = RagConfigOptimizer.applyScenario( baseConfig, RagConfigOptimizer.SCENARIOS.HIGH_RECALL ); console.log('高召回率配置:', { max_retrieval_results: highRecallConfig.max_retrieval_results, relevance_threshold: highRecallConfig.relevance_threshold, include_summary: highRecallConfig.include_summary }); const result = await queryRagGrounding( "请详细介绍各种牛仔裤的搭配方案", { customConfig: highRecallConfig } ); if (result.success) { console.log('检索到更多相关信息:', result.data?.grounding_metadata?.sources?.length); } } /** * 示例 2: 自动优化配置 */ async function autoOptimization() { console.log('=== 自动优化示例 ==='); const queries = [ "牛仔裤配什么上衣?", // 简单查询 -> 快速响应模式 "请详细分析不同场合下牛仔裤的搭配技巧,包括颜色、款式、配饰等方面", // 复杂查询 -> 深度搜索模式 "有哪些适合春季的牛仔裤搭配方案?", // 列举查询 -> 高召回率模式 "比较直筒牛仔裤和紧身牛仔裤的搭配区别" // 比较查询 -> 高召回率模式 ]; for (const query of queries) { const optimizedConfig = RagConfigOptimizer.autoOptimize(query, DEFAULT_RAG_GROUNDING_CONFIG); console.log(`查询: "${query}"`); console.log('自动优化配置:', { max_retrieval_results: optimizedConfig.max_retrieval_results, relevance_threshold: optimizedConfig.relevance_threshold }); const result = await queryRagGrounding(query, { customConfig: optimizedConfig }); if (result.success) { console.log(`检索结果数量: ${result.data?.grounding_metadata?.sources?.length || 0}`); console.log(`响应时间: ${result.totalTime}ms\n`); } } } /** * 示例 3: 基于反馈的动态调整 */ async function feedbackBasedOptimization() { console.log('=== 反馈优化示例 ==='); let currentConfig = DEFAULT_RAG_GROUNDING_CONFIG; const query = "夏季牛仔裤搭配建议"; // 第一次查询 let result = await queryRagGrounding(query, { customConfig: currentConfig }); console.log('初始查询结果数量:', result.data?.grounding_metadata?.sources?.length || 0); // 模拟用户反馈:结果太少 currentConfig = RagConfigOptimizer.adjustBasedOnFeedback(currentConfig, 'too_few_results'); console.log('调整后配置 (结果太少):', { max_retrieval_results: currentConfig.max_retrieval_results, relevance_threshold: currentConfig.relevance_threshold }); // 第二次查询 result = await queryRagGrounding(query, { customConfig: currentConfig }); console.log('调整后查询结果数量:', result.data?.grounding_metadata?.sources?.length || 0); // 模拟用户反馈:结果不相关 currentConfig = RagConfigOptimizer.adjustBasedOnFeedback(currentConfig, 'irrelevant_results'); console.log('再次调整后配置 (结果不相关):', { max_retrieval_results: currentConfig.max_retrieval_results, relevance_threshold: currentConfig.relevance_threshold }); // 第三次查询 result = await queryRagGrounding(query, { customConfig: currentConfig }); console.log('最终查询结果数量:', result.data?.grounding_metadata?.sources?.length || 0); } /** * 示例 4: 领域特定过滤器 */ async function domainSpecificFiltering() { console.log('=== 领域过滤示例 ==='); const baseConfig = DEFAULT_RAG_GROUNDING_CONFIG; // 应用时尚领域过滤器 const fashionConfig: RagGroundingConfig = { ...baseConfig, search_filter: RagConfigOptimizer.createDomainFilter('fashion'), max_retrieval_results: 25, relevance_threshold: 0.4 }; console.log('时尚领域配置:', { search_filter: fashionConfig.search_filter, max_retrieval_results: fashionConfig.max_retrieval_results }); const result = await queryRagGrounding( "职场穿搭建议", { customConfig: fashionConfig } ); if (result.success) { console.log('领域过滤后的结果数量:', result.data?.grounding_metadata?.sources?.length || 0); } } /** * 示例 5: 性能对比测试 */ async function performanceComparison() { console.log('=== 性能对比示例 ==='); const query = "牛仔裤搭配技巧"; const configs = [ { name: '默认配置', config: DEFAULT_RAG_GROUNDING_CONFIG }, { name: '快速响应', config: RagConfigOptimizer.applyScenario(DEFAULT_RAG_GROUNDING_CONFIG, RagConfigOptimizer.SCENARIOS.FAST_RESPONSE) }, { name: '高召回率', config: RagConfigOptimizer.applyScenario(DEFAULT_RAG_GROUNDING_CONFIG, RagConfigOptimizer.SCENARIOS.HIGH_RECALL) }, { name: '深度搜索', config: RagConfigOptimizer.applyScenario(DEFAULT_RAG_GROUNDING_CONFIG, RagConfigOptimizer.SCENARIOS.DEEP_SEARCH) } ]; for (const { name, config } of configs) { const startTime = Date.now(); const result = await queryRagGrounding(query, { customConfig: config }); const endTime = Date.now(); console.log(`${name}:`, { 检索数量: result.data?.grounding_metadata?.sources?.length || 0, 响应时间: `${endTime - startTime}ms`, 配置: { max_results: config.max_retrieval_results, threshold: config.relevance_threshold } }); } } /** * 示例 6: 配置解释和建议 */ function configurationGuidance() { console.log('=== 配置指导示例 ==='); const scenarios = Object.entries(RagConfigOptimizer.SCENARIOS); scenarios.forEach(([key, scenario]) => { const config = RagConfigOptimizer.applyScenario(DEFAULT_RAG_GROUNDING_CONFIG, scenario); const explanation = RagConfigOptimizer.getConfigExplanation(config); console.log(`${scenario.name}:`); console.log(` 描述: ${scenario.description}`); console.log(` 配置说明: ${explanation}`); console.log(` 适用场景: ${getUseCaseExamples(key)}\n`); }); } function getUseCaseExamples(scenarioKey: string): string { const examples = { HIGH_RECALL: "复杂查询、研究分析、需要全面信息的场景", HIGH_PRECISION: "精确匹配、专业咨询、质量优于数量的场景", BALANCED: "日常对话、一般性查询、大多数应用场景", FAST_RESPONSE: "实时聊天、快速问答、移动端应用", DEEP_SEARCH: "学术研究、详细分析、专业报告生成" }; return examples[scenarioKey as keyof typeof examples] || "通用场景"; } // 运行示例 async function runAllExamples() { try { await scenarioBasedOptimization(); await autoOptimization(); await feedbackBasedOptimization(); await domainSpecificFiltering(); await performanceComparison(); configurationGuidance(); } catch (error) { console.error('示例运行失败:', error); } } // 导出示例函数 export { scenarioBasedOptimization, autoOptimization, feedbackBasedOptimization, domainSpecificFiltering, performanceComparison, configurationGuidance, runAllExamples };