# from deepsearcher.configuration import vector_db, embedding_model, llm from deepsearcher import configuration from deepsearcher.vector_db.base import RetrievalResult def query(original_query: str, **kwargs) -> tuple[str, list[RetrievalResult]]: """ Query the knowledge base with a question and get an answer. This function uses the default searcher to query the knowledge base and generate an answer based on the retrieved information. Args: original_query: The question or query to search for. max_iter: Maximum number of iterations for the search process. Returns: A tuple containing: - The generated answer as a string - A list of retrieval results that were used to generate the answer """ default_searcher = configuration.default_searcher max_iter = kwargs.get("max_iter", 3) return default_searcher.query(original_query, max_iter=max_iter) def retrieve(original_query: str, max_iter: int | None = None) -> tuple[list[RetrievalResult], list[str]]: """ Retrieve relevant information from the knowledge base without generating an answer. This function uses the default searcher to retrieve information from the knowledge base that is relevant to the query. Args: original_query: The question or query to search for. max_iter: Maximum number of iterations for the search process. Returns: A tuple containing: - A list of retrieval results - A list of strings representing consumed tokens """ default_searcher = configuration.default_searcher retrieved_results, metadata = default_searcher.retrieve(original_query, max_iter=max_iter) return retrieved_results