Spring AI之检索增强生成(Retrieval Augmented Generation, RAG)


检索增强生成(RAG)是一种克服大型语言模型(LLM)在长文本生成 、事实准确性 和上下文感知 方面局限性的技术。
Spring AI 通过模块化架构支持 RAG,允许用户:

  • 构建自定义 RAG 流程;
  • 通过 Advisor API 使用开箱即用的 RAG 流程。

更多 RAG 概念详见Spring AI之AI概念一文。

顾问(Advisors)

Spring AI 通过 Advisor API 提供常见 RAG 流程的原生支持。

QuestionAnswerAdvisor

向量数据库存储了 AI 模型未直接学习的数据。当用户提问时,QuestionAnswerAdvisor 会从向量数据库检索与问题相关的文档,并将结果附加到用户输入中,为 AI 生成回复提供上下文。
使用示例 :

// 假设已将数据加载到 VectorStore
ChatResponse response = ChatClient.builder(chatModel)
        .build().prompt()
        .advisors(new QuestionAnswerAdvisor(vectorStore)) // 注入 RAG 顾问
        .user(userText)
        .call()
        .chatResponse();

参数配置 :

  • 过滤表达式 :通过 SQL 风格的字符串限制检索范围(如 type == ‘Spring’),支持动态配置。
  • 相似度阈值与 Top K :
// 配置相似度阈值为 0.8,返回前 6 个结果
var qaAdvisor = new QuestionAnswerAdvisor(
    this.vectorStore,
    SearchRequest.builder()
        .similarityThreshold(0.8d)
        .topK(6)
        .build()
);

动态过滤示例 :

// 运行时动态设置过滤条件
String content = chatClient.prompt()
    .user("请回答问题 XYZ")
    .advisors(a -> a.param(QuestionAnswerAdvisor.FILTER_EXPRESSION, "type == 'Spring'"))
    .call()
    .content();

RetrievalAugmentationAdvisor(实验性)

Spring AI 提供了基于模块化架构的 RetrievalAugmentationAdvisor ,支持开箱即用的常见 RAG 流程。
注意 :此功能为实验性,未来版本可能变更。

顺序 RAG 流程

基础 RAG:

Advisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
        .documentRetriever(VectorStoreDocumentRetriever.builder()
                .similarityThreshold(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NtK11KGXVkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值