SpringAI RAG 检索增强生成

SpringAI RAG 检索增强生成

  • [1. 文档](#1. 文档)
  • [2. 实现](#2. 实现)

1. 文档

https://docs.spring.io/spring-ai/reference/api/retrieval-augmented-generation.html

2. 实现

java 复制代码
//4.RAG
//1.用户提示词压缩,多轮对话中捕捉用户真实意图(大模型温度要低)
//2.用户提示词重写,澄清用户意图(大模型温度要低)
//3.用户提示词扩展,从多个角度捕捉用户意图
//4.文档检索(可以多源检索、元数据过滤、稠密&稀疏检索)
//5.文档合并,将多个文档源的文档合并
//6.重排序并移除低相关文档,压缩文档,满足大模型上下文窗口
//7.上下文生成
//8.允许大模型使用工具继续检索
FilterExpressionBuilder filterExpressionBuilder = new FilterExpressionBuilder();
RetrievalAugmentationAdvisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
    .queryTransformers(
        List.of(
            // 1. 提示词压缩
            CompressionQueryTransformer.builder().chatClientBuilder(ragChatClient.mutate()).build(),
            // 2. 提示词重写
            RewriteQueryTransformer.builder().chatClientBuilder(ragChatClient.mutate()).build()
        )
    )
    // 3. 提示词扩展
    .queryExpander(
        MultiQueryExpander.builder().chatClientBuilder(ragChatClient.mutate()).numberOfQueries(3).includeOriginal(true).build()
    )
    // 4. 文档检索
    .documentRetriever(
        VectorStoreDocumentRetriever.builder()
            .similarityThreshold(0.5)
            .topK(10)
            .filterExpression(
                filterExpressionBuilder.and(
                    filterExpressionBuilder.eq("tenantId", tenantId),
                    filterExpressionBuilder.eq("orgId", PBSContext.getUserContext().getUserModel().getCoId())
                ).build()
            )
            .vectorStore(vectorStore)
            .build()
    )
    // 5. 文档合并
    .documentJoiner(new ConcatenationDocumentJoiner())
    // 6. 重排序并移除低相关文档
    .documentPostProcessors(
        RerankerDocumentPostProcessor.builder().rerankModel(rerankModel).build()
    )
    // 7. 上下文生成
    .queryAugmenter(ContextualQueryAugmenter.builder()
        // 默认情况下,ContextualQueryAugmenter 不允许检索到的上下文为空。当发生这种情况时,它会指示模型不要回答用户查询。
        // 若启用 allowEmptyContext 选项,则允许模型在检索到的上下文为空时生成响应
        .allowEmptyContext(Boolean.TRUE)
        .build())
    .build();
相关推荐
怕浪猫1 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
七牛云行业应用2 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
高调的涵涵6 小时前
五个 Agent 工作区,worktrunk 实测
ai编程
qinglongcn6 小时前
Plan 从 DAG 退回线性清单——一个引擎设计教训
agent·ai编程
yz_aiks6 小时前
WorkBuddy 怎么做网页小游戏:深海钓鱼游戏 43 次对话、301 积分从一句话做到发布(附手机横屏踩坑)
人工智能·html5·ai编程·小游戏·workbuddy
小碗细面8 小时前
Magpie 实战教程:一个本地网关,让 Claude Code 跑 Kimi、Codex 跑 DeepSeek
aigc·ai编程
濮水大叔8 小时前
AI Vibe Coding 实战(三):把 SMS 开发方案落成 Spec 文档
ai编程·claude·vibecoding
threerocks12 小时前
2027 年最赚钱的 AI 创业方向
aigc·openai·ai编程
ZzT13 小时前
AI-SDLC 实践 01|用好 Claude Code/Codex 提供的六种能力
ai编程·claude
梯度下降者13 小时前
3天时间,我使用 Cursor 开发了一个提示词生成器
ai编程·next.js·cursor·产品开发·提示词生成器