Interface RAGService

  • All Known Implementing Classes:
    RAGServiceImpl

    public interface RAGService
    Basic services for retrieval augmented generation (RAG).
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      List<String> collectSearchKeywords​(String querytext, org.apache.sling.api.resource.Resource rootResource)
      Processes a query to have the AI suggest a couple of search keywords for use with the other methods that might find the most relevant results.
      List<org.apache.sling.api.resource.Resource> orderByEmbedding​(String querytext, List<org.apache.sling.api.resource.Resource> resources, org.apache.sling.api.SlingHttpServletRequest request, org.apache.sling.api.SlingHttpServletResponse response, org.apache.sling.api.resource.Resource rootResource)
      Finds the resources whose markdown approximation has embeddings that are the most similar to the querytext embedding.
      String ragAnswer​(String querytext, List<org.apache.sling.api.resource.Resource> resources, org.apache.sling.api.SlingHttpServletRequest request, org.apache.sling.api.SlingHttpServletResponse response, @NotNull org.apache.sling.api.resource.Resource rootResource, int limitRagTexts)
      Answer a question with RAG from the given resources, e.g.
      List<String> searchRelated​(org.apache.sling.api.resource.Resource root, String querytext, int limit)
      Returns a list of up to limit paths that might be related to the query.
    • Method Detail

      • searchRelated

        @Nonnull
        List<String> searchRelated​(@Nullable
                                   org.apache.sling.api.resource.Resource root,
                                   @Nullable
                                   String querytext,
                                   int limit)
                            throws javax.jcr.RepositoryException
        Returns a list of up to limit paths that might be related to the query. We search for the whole query, andy quoted strings inside and then for all single words in the query, scored. The paths are returned in descending order of lucene score.
        Parameters:
        root - the root resource to search in
        querytext - the query text
        limit - the maximum number of paths to return
        Returns:
        a list of paths to jcr:content nodes, empty if no results or any of the parameters don't fit.
        Throws:
        javax.jcr.RepositoryException
      • orderByEmbedding

        @Nonnull
        List<org.apache.sling.api.resource.Resource> orderByEmbedding​(@Nullable
                                                                      String querytext,
                                                                      @Nonnull
                                                                      List<org.apache.sling.api.resource.Resource> resources,
                                                                      @Nonnull
                                                                      org.apache.sling.api.SlingHttpServletRequest request,
                                                                      @Nonnull
                                                                      org.apache.sling.api.SlingHttpServletResponse response,
                                                                      @Nonnull
                                                                      org.apache.sling.api.resource.Resource rootResource)
                                                               throws javax.jcr.RepositoryException
        Finds the resources whose markdown approximation has embeddings that are the most similar to the querytext embedding. Useable e.g. as filter after searchRelated(Resource, String, int).
        Parameters:
        querytext - the query text
        resources - the list of resources to search in
        request - the request to use when determining the markdown approximation - not modified
        response - the response to use when determining the markdown approximation - not modified
        rootResource - the root resource to search in
        Throws:
        javax.jcr.RepositoryException
      • ragAnswer

        @Nonnull
        String ragAnswer​(@Nullable
                         String querytext,
                         @Nonnull
                         List<org.apache.sling.api.resource.Resource> resources,
                         @Nonnull
                         org.apache.sling.api.SlingHttpServletRequest request,
                         @Nonnull
                         org.apache.sling.api.SlingHttpServletResponse response,
                         @NotNull
                         @NotNull org.apache.sling.api.resource.Resource rootResource,
                         int limitRagTexts)
        Answer a question with RAG from the given resources, e.g. found with searchRelated(Resource, String, int).
        Parameters:
        querytext - the query text
        resources - the list of resources to answer from
        request - the request to use when determining the markdown approximation - not modified
        response - the response to use when determining the markdown approximation - not modified
        rootResource - the root resource to find GPT configuration from
        limitRagTexts - the maximum number of RAG texts to consider
        Returns:
        the answer text
      • collectSearchKeywords

        @Nonnull
        List<String> collectSearchKeywords​(@Nullable
                                           String querytext,
                                           @Nonnull
                                           org.apache.sling.api.resource.Resource rootResource)
                                    throws javax.jcr.RepositoryException
        Processes a query to have the AI suggest a couple of search keywords for use with the other methods that might find the most relevant results.
        Parameters:
        querytext - the query text for which we find keywords
        rootResource - the root resource to find GPT configuration from
        Returns:
        a list of keywords
        Throws:
        javax.jcr.RepositoryException