检索增强生成RAG---查询重写
摘要:Spring AI框架中的查询重写功能通过RewriteQueryTransformer实现,能够优化用户查询以提高检索准确性。该功能通过构建QueryTransformer组件,使用ChatModel模型处理原始查询,将其转换为更结构化的形式。实现步骤包括:初始化ChatClient、构建重写转换器、执行查询转换等。测试结果显示,系统能有效处理用户输入(如婚姻关系问题)并生成更精准的查询语
·
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.实现效果

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