in tablestore-java-mcp-server-rag/tablestore-mcp-server/src/main/java/com/alicloud/openservices/tablestore/sample/service/TablestoreService.java [108:133]
public List<KnowledgeContent> searchKnowledge(SearchKnowledgeQuery request) {
String query = request.getQuery();
int size = request.getSize();
log.info("search knowledge query:[{}], size:{}", query, size);
float[] embedQuery = embeddingService.embed(query);
SearchQuery searchQuery = SearchQuery.newBuilder()
.query(QueryBuilders.bool()
.should(QueryBuilders.knnVector(embeddingField, Math.min(1000, size + 100), embedQuery))
//.should(QueryBuilders.match(textField, query)) // only vector search, later can try mix search
)
.getTotalCount(false)
.limit(size)
.offset(0)
.sort(new Sort(Collections.singletonList(new ScoreSort())))
.build();
SearchRequest searchRequest = SearchRequest.newBuilder()
.tableName(knowledgeStore)
.indexName(knowledgeIndex)
.searchQuery(searchQuery)
.returnAllColumns(true)
.build();
SearchResponse response = client.search(searchRequest);
log.info("search knowledge requestId:{}", response.getRequestId());
return searchResponseToKnowledgeContent(response);
}