feat(rag): modularize knowledge retrieval pipeline

This commit is contained in:
zhuyongxin
2026-07-06 17:06:05 +08:00
parent a375daead7
commit cf3333d607
38 changed files with 2981 additions and 1033 deletions
@@ -0,0 +1,38 @@
package com.superbiz.agent.service;
import com.superbiz.agent.dto.KnowledgeQuery;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Converts a raw Agent query into retrieval-control hints.
*/
@Service
public class KnowledgeQueryTransformer {
private final KnowledgeIndexService knowledgeIndexService;
public KnowledgeQueryTransformer(KnowledgeIndexService knowledgeIndexService) {
this.knowledgeIndexService = knowledgeIndexService;
}
public KnowledgeQuery transform(String rawQuery) {
String normalized = rawQuery == null ? "" : rawQuery.trim();
KnowledgeIndexService.L0Hint hint = knowledgeIndexService.analyzeQuery(normalized);
return KnowledgeQuery.builder()
.originalQuery(normalized)
.rewrittenQuery(normalized)
.domainHints(safeList(hint.domains()))
.matchedKeywords(safeList(hint.matchedKeywords()))
.entities(safeList(hint.entities()))
.categoryFilter(hint.singleDomainOrNull())
.l0Titles(safeList(hint.titles()))
.l0MatchCount(hint.matches() == null ? 0 : hint.matches().size())
.build();
}
private List<String> safeList(List<String> values) {
return values == null ? List.of() : values;
}
}