聊聊Spring AI的RAG

本文主要研究一下Spring AI的RAG

Sequential RAG Flows

Naive RAG

Advisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
        .documentRetriever(VectorStoreDocumentRetriever.builder()
                .similarityThreshold(0.50)
                .vectorStore(vectorStore)
                .build())
        .queryAugmenter(ContextualQueryAugmenter.builder()
                .allowEmptyContext(true)
                .build())
        .build();

String answer = chatClient.prompt()
        .advisors(retrievalAugmentationAdvisor)
        .user(question)
        .call()
        .content();

allowEmptyContext为true告诉大模型不回答context为empty的问题

Advanced RAG

Advisor retrievalAugmentationAdvisor = RetrievalAugmentationAdvisor.builder()
        .queryTransformers(RewriteQueryTransformer.builder()
                .chatClientBuilder(chatClientBuilder.build().mutate())
                .build())
        .documentRetriever(VectorStoreDocumentRetriever.builder()
                .similarityThreshold(0.50)
                .vectorStore(vectorStore)
                .build())
        .build();

String answer = chatClient.prompt()
        .advisors(retrievalAugmentationAdvisor)
        .user(question)
        .call()
        .content();

Advanced RAG可以设置queryTransformers来进行查询转换

Modular RAG

Spring AI受Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks启发实现了Modular RAG,主要分为如下几个阶段:Pre-Retrieval、Retrieval、Post-Retrieval、Generation

Pre-Retrieval

增强和转换用户输入,使其更有效地执行检索任务,解决格式不正确的查询、query 语义不清晰、或不受支持的语言等。

1. QueryAugmenter 查询增强

使用附加的上下文数据信息增强用户query,提供大模型回答问题时的必要上下文信息;

  • ContextualQueryAugmenter使用上下文来增强query
QueryAugmenter augmenter = ContextualQueryAugmenter. builder()    
		.allowEmptyContext(false)    
		.build(); 
Query augmentedQuery = augmenter.augment(query, documents);

2. QueryTransformer 查询改写

因为用户的输入通常是片面的,关键信息较少,不便于大模型理解和回答问题。因此需要使用prompt调优手段或者大模型改写用户query;
当使用QueryTransformer时建议设置比较低的temperature(比如0.0)来确保结果的准确性
它有CompressionQueryTransformer、RewriteQueryTransformer、TranslationQueryTransformer三种实现

  • CompressionQueryTransformer使用大模型来压缩会话历史
Query query = Query.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值