本地 RAG 知识库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

74 lines
2.8 KiB

package com.wok.supportbot;
import com.wok.supportbot.rag.preretrieval.CompressionQueryRewriter;
import com.wok.supportbot.rag.preretrieval.MultiQueryExpanderRewriter;
import com.wok.supportbot.rag.preretrieval.RewriteQueryRewriter;
import com.wok.supportbot.rag.preretrieval.TranslationQueryRewriter;
import org.junit.jupiter.api.Test;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class QueryTransformerTests {
@Autowired
private TranslationQueryRewriter translationQueryRewriter;
@Autowired
private CompressionQueryRewriter compressionQueryRewriter;
@Autowired
private MultiQueryExpanderRewriter multiQueryExpanderRewriter;
@Autowired
private RewriteQueryRewriter rewriteQueryRewriter;
@Test
void testRewriteQueryRewriter() {
// 构造输入
String originalQuery = "我想买一部拍照效果好的手机";
// 执行
String rewritten = rewriteQueryRewriter.doQueryRewrite(originalQuery);
// 输出结果
System.out.println("重写结果:" + rewritten);
}
@Test
public void testTranslationQueryRewriter() {
String prompt = "I want to buy a lightweight laptop suitable for students.";
String result = translationQueryRewriter.doQueryRewrite(prompt);
System.out.println("Translation result: " + result);
}
@Test
public void testCompressionQueryRewriter() {
// 当前追问,用户说得很模糊
String prompt = "那这款的电池续航如何?";
// 多轮上下文,用户逐渐缩小目标
List<Message> history = List.of(
new UserMessage("我想买一台适合出差用的轻薄笔记本"),
new AssistantMessage("你可以看看戴尔 XPS 13,性能不错而且轻便"),
new UserMessage("能不能推荐一款支持长续航的?"),
new AssistantMessage("荣耀 MagicBook X16 电池续航表现优秀,适合长时间外出使用")
);
// 执行压缩
String result = compressionQueryRewriter.doQueryRewrite(prompt, history);
// 输出压缩后的独立查询
System.out.println("Compression result: " + result);
}
@Test
public void testMultiQueryExpanderRewriter() {
String prompt = "推荐一些适合夏天穿的男士T恤";
List<String> expandedQueries = multiQueryExpanderRewriter.doQueryRewrite(prompt);
System.out.println("Expanded queries:");
expandedQueries.forEach(System.out::println);
}
}