Spring AI Alibaba零基础速成(7) ---- RAG
·
1. 简介
RAG即Retrieval-Augmented Generation,译为检索增强生成
简单说:先查私有知识库,再交给大模型回答
核心流程 4 步
- 用户提问
- 检索:把问题转向量,从 向量库捞出相关文档
- 拼接:把问题 + 查到的资料一起发给大模型
- 生成:模型依据参考资料给出精准答案
解决的问题
- 弥补大模型知识截止时间,能用上最新业务资料
- 接入企业私有文档、本地数据,模型不会凭空瞎编
- 不用微调模型,低成本让 AI 懂专属业务内容
2. 使用
把数据存入向量数据库
@Configuration
public class InitVectorDatabaseConfig {
@Autowired
private VectorStore vectorStore;
@Value("classpath:writingSkill.txt")
private Resource opsFile;
@PostConstruct
public void init() {
//1. 读取文件
TextReader textReader = new TextReader(opsFile);
textReader.setCharset(StandardCharsets.UTF_8);
//2. 把长文档切成一段一段短文本(方便 AI 处理)
List<Document> list = new TokenTextSplitter().transform(textReader.read());
//3.写入向量数据库
vectorStore.add(list);
}
}
@RestController
public class RAGController {
@Resource
private ChatClient chatClient;
@Resource
private VectorStore vectorStore;
@GetMapping("/chat")
public Flux<String> chat(String msg) {
String systemInfo = "你是一个作家,了解各种写作技巧,根据用户的需求指导用户写作技巧,最好写2到3条示例给用户看";
RetrievalAugmentationAdvisor advisor = RetrievalAugmentationAdvisor
.builder()
.documentRetriever(
VectorStoreDocumentRetriever
.builder()
.vectorStore(vectorStore)
.build()
).build();
return chatClient.prompt().system(systemInfo).user(msg).advisors(advisor).stream().content();
}
}
RetrievalAugmentationAdvisor = RAG 核心组件 作用:自动去 Redis 向量库查资料,把查到的资料交给大模型 ,让大模型“带着资料回答”
更多推荐




所有评论(0)