1. 简介

RAG即Retrieval-Augmented Generation,译为检索增强生成

简单说:先查私有知识库,再交给大模型回答

核心流程 4 步

  1. 用户提问
  2. 检索:把问题转向量,从  向量库捞出相关文档
  3. 拼接:把问题 + 查到的资料一起发给大模型
  4. 生成:模型依据参考资料给出精准答案

解决的问题

  1. 弥补大模型知识截止时间,能用上最新业务资料
  2. 接入企业私有文档、本地数据,模型不会凭空瞎编
  3. 不用微调模型,低成本让 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 向量库查资料,把查到的资料交给大模型 ,让大模型“带着资料回答”

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐