Package sk.iway.iwcm.rag.search
Class SemanticSearchService
java.lang.Object
sk.iway.iwcm.rag.search.SemanticSearchService
Service for semantic search over document embeddings.
Embeds the query, searches pgvector, and returns results aggregated by document.
-
Constructor Summary
ConstructorsConstructorDescriptionSemanticSearchService(EmbeddingService embeddingService, VectorStore vectorStore, RagEmbeddingStatService ragEmbeddingStatService, RagService ragService) -
Method Summary
Modifier and TypeMethodDescriptionfilterResultsBySimilarity(List<SemanticSearchResult> sortedResults, double minimumSimilarity, int minimumResultCount) Filter and sort semantic search results based on similarity thresholds and minimum result count.booleansearch(String query, Integer domainId, String language, int maxResults, RagEntityType entityType, jakarta.servlet.http.HttpServletRequest request) Search for documents similar to the query text.
-
Constructor Details
-
SemanticSearchService
@Autowired public SemanticSearchService(EmbeddingService embeddingService, VectorStore vectorStore, RagEmbeddingStatService ragEmbeddingStatService, RagService ragService)
-
-
Method Details
-
search
public List<SemanticSearchResult> search(String query, Integer domainId, String language, int maxResults, RagEntityType entityType, jakarta.servlet.http.HttpServletRequest request) Search for documents similar to the query text. Returns unique document IDs ordered by best chunk similarity.- Parameters:
query- search query textdomainId- domain to search in (null for all)language- language filter (null for all)maxResults- maximum number of unique documents to returnentityType- entity type to filter byrequest- current request with component PageParams and rootGroup attributes- Returns:
- list of document IDs with their best similarity scores
-
filterResultsBySimilarity
public List<SemanticSearchResult> filterResultsBySimilarity(List<SemanticSearchResult> sortedResults, double minimumSimilarity, int minimumResultCount) Filter and sort semantic search results based on similarity thresholds and minimum result count. Uses an adaptive similarity threshold based on the top result to allow for more results when the top similarity is low.- Parameters:
sortedResults- - list of results sorted by similarity descendingminimumSimilarity- - absolute minimum similarity threshold (0.0 to 1.0)minimumResultCount- - minimum number of results to return regardless of similarity (0 for no minimum)- Returns:
- list of filtered semantic search results
-
isAvailable
public boolean isAvailable()
-