Class SemanticSearchService

java.lang.Object
sk.iway.iwcm.rag.search.SemanticSearchService

@Service public class SemanticSearchService extends Object
Service for semantic search over document embeddings. Embeds the query, searches pgvector, and returns results aggregated by document.
  • Constructor Details

  • 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 text
      domainId - domain to search in (null for all)
      language - language filter (null for all)
      maxResults - maximum number of unique documents to return
      entityType - entity type to filter by
      request - 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 descending
      minimumSimilarity - - 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()