Query Rewrite (查询重写)

查询重写是RAG系统中的一个重要优化技术,它能够将用户的原始查询转换成更加结构化和明确的形式。这种转换可以提高检索的准确性,并帮助系统更好地理解用户的真实意图。
Spring AI提供了RewriteQueryTransformer来实现查询重写功能。参考文档

构建重写组件(利用RewriteQueryTransformer)

@Component
public class QueryTransformerConfig {
    @Resource
    private QueryTransformer queryTransformer;
    public QueryTransformerConfig(ChatModel dashscopeChatModel){
        ChatClient.Builder builder = ChatClient.builder(dashscopeChatModel);
        queryTransformer = RewriteQueryTransformer.builder()
                .chatClientBuilder(builder)
                .build();
    }
    public String WriteRag(String prompt){
        Query query = new Query(prompt);
        Query transform = queryTransformer.transform(query);
        return transform.text();
    }
}

1.通过构造函数传递 ChatModel (这里使用alibaba 的dashscopeChatModel 模型)

ChatClient.Builder builder = ChatClient.builder(dashscopeChatModel);

2.利用RewriteQueryTransformer 构造相关查询转换器

 queryTransformer = RewriteQueryTransformer.builder()
                .chatClientBuilder(builder)
                .build();

3.通过Query对象利用QueryTransformer的transform将prompt提示词进行重写

    public String WriteRag(String prompt){
        Query query = new Query(prompt);
        Query transform = queryTransformer.transform(query);
        return transform.text();
    }

4.最后在测试类中自动注入 该组件实现内容重写

 @Test
    void doChatWithRag() {
        String chatId = UUID.randomUUID().toString();
        String message = "我已经结婚了,但是婚后关系不太亲密,怎么办?";
        String ReWriteen = queryTransformerConfig.WriteRag(message);
        String answer =  loveApp.doChatWithRag(ReWriteen, chatId);
        }

5.实现效果

在这里插入图片描述

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐