📖 本章预览
本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。
第10章 RAG 进阶:检索质量调优秘籍
实战场景:我们以"企业内部技术文档问答系统"为贯穿案例。公司有 500+ 篇技术文档(Spring Boot 规范、数据库设计规范、部署手册、故障排查手册等),需要让员工通过自然语言提问获取精准答案。
10.1 实战案例背景与基础设施
10.1.1 项目结构
rag-advanced-demo/
├── src/main/java/com/example/rag/
│ ├── RagAdvancedApplication.java // 启动类
│ ├── config/
│ │ └── RagConfig.java // RAG 配置
│ ├── model/
│ │ ├── SearchResult.java // 检索结果
│ │ ├── QAResult.java // 问答结果
│ │ └── EvalReport.java // 评估报告
│ ├── search/
│ │ ├── SearchStrategyFactory.java // 检索策略工厂
│ │ ├── SimpleVectorSearch.java // 基础向量检索
│ │ ├── HybridSearchService.java // 混合检索
│ │ ├── HydeSearchService.java // HyDE 检索
│ │ ├── MultiQuerySearchService.java // 多查询检索
│ │ └── ReRankService.java // 重排序服务
│ ├── pipeline/
│ │ ├── RagPipeline.java // RAG 管道编排
│ │ └── ContextWindowManager.java // 上下文窗口管理
│ ├── eval/
│ │ └── RagEvaluator.java // RAG 评估
│ └── controller/
│ └── RagController.java // REST 接口
└── src/main/resources/
└── application.yml
10.1.2 基础配置
# application.yml
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-plus
temperature: 0.1
embedding:
options:
model: text-embedding-v3
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimensions: 1024
datasource:
url: jdbc:postgresql://localhost:5432/rag_demo
username: postgres
password: postgres
# 自定义 RAG 配置
rag:
default-top-k: 5
default-similarity-threshold: 0.7
rerank-candidate-count: 20
rerank-final-count: 5
context-max-tokens: 3000
10.1.3 数据模型
package com.example.rag.model;
import java.util.List;
import java.util.Map;
/**
* 检索结果:封装检索到的文档及其评分
*/
public record SearchResult(
/** 检索到的文档文本 */
String text,
/** 相似度分数 */
double score,
/** 文档元数据(来源、页码等) */
Map<String, Object> metadata
) {}
package com.example.rag.model;
import java.util.List;
🔒 解锁完整内容
本章剩余内容需要解锁后查看
以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。
加入知识星球你将获得:
- ✅ 全部 26 章完整内容 + 持续更新
- ✅ 配套源码 + 实战项目
- ✅ 一对一答疑 + 面试辅导
- ✅ 简历优化 + 内推机会
📚 本章完整目录
以下为本章完整目录结构,加入知识星球即可解锁全部内容。