When using the QueryEngineTool, is it possible to add additional parameters in addition to the query string (similar to how this is done with FunctionTool) so that ReAct agent calls it with separate parameters. For example, as a FunctionTool I have def _search_events(query_string: str = None, start: str = None, end: str = None, venue: str = None, top_k: int = 25) -> str: """ Search for events by name, and happening at a specified venue, and occurring between start and end datetime. One or more parameters are required. Use this for requests that should get all events for a given set of parameters. """ [The code pre-filters the results with SQL based on venue and start values, then performs a vector search over the filtered events.]
Basically, I'd like to convert the FunctionTool to a QueryEngineTool. I'm not clear on how the start, end, and venue variables a) will be indicated to the ReAct agent and b) can be passed down to the QueryEngine and Retriever
The general idea is to use SQL to provide context which needs full/accurate data, but to use local vector search for stuff that doesn't, and then rerank the results and send to the LLM.
I ended up doing that. However, it meant I couldn't incorporate the ReRanker. Well, I did end up incorporating it via the low-level api, but that seemed kind of awkward. In any case, I ended up not using the reranker, because the results were already sorted by similarity, and the reranker results were actually worse.