You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.7 KiB
45 lines
1.7 KiB
# 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
|
|
|