Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ def choose_tool(
override_kwargs: SearchToolOverrideKwargs = (
force_use_tool.override_kwargs or SearchToolOverrideKwargs()
)
override_kwargs.original_query = agent_config.inputs.prompt_builder.raw_user_query

using_tool_calling_llm = agent_config.tooling.using_tool_calling_llm
prompt_builder = state.prompt_snapshot or agent_config.inputs.prompt_builder
Expand Down
4 changes: 2 additions & 2 deletions backend/onyx/context/search/federated/slack_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ def build_slack_queries(query: SearchQuery, llm: LLM) -> list[str]:
time_cutoff = time_cutoff - timedelta(days=1)
time_filter = f" after:{time_cutoff.strftime('%Y-%m-%d')}"

# use llm to generate slack queries
prompt = SLACK_QUERY_EXPANSION_PROMPT.format(query=query.query)
# use llm to generate slack queries (use original query to use same keywords as the user)
prompt = SLACK_QUERY_EXPANSION_PROMPT.format(query=query.original_query)
try:
msg = HumanMessage(content=prompt)
response = llm.invoke([msg])
Expand Down
2 changes: 2 additions & 0 deletions backend/onyx/context/search/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ class SearchRequest(ChunkContext):
query: str

expanded_queries: QueryExpansions | None = None
original_query: str | None = None

search_type: SearchType = SearchType.SEMANTIC

Expand Down Expand Up @@ -205,6 +206,7 @@ class SearchQuery(ChunkContext):
precomputed_query_embedding: Embedding | None = None

expanded_queries: QueryExpansions | None = None
original_query: str | None


class RetrievalDetails(ChunkContext):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ def retrieval_preprocessing(

return SearchQuery(
query=query,
original_query=search_request.original_query,
processed_keywords=processed_keywords,
search_type=SearchType.KEYWORD if is_keyword else SearchType.SEMANTIC,
evaluation_type=llm_evaluation_type,
Expand Down
10 changes: 6 additions & 4 deletions backend/onyx/prompts/federated_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@
1. Remove stop-words and obvious noise.
2. Remove or down-weight meta-instructions (e.g., "show me", "summary of", "how do I") that are \
unlikely to appear in the target messages.
3. If the query has many keywords, produce several focused queries that keep related words together; \
3. Stick with words used in the original query. If you need to add implied keywords (e.g., "when did" -> "date"), \
create a separate query for it.
4. If the query has many keywords, produce several focused queries that keep related words together; \
never explode into single-word queries.
4. Preserve phrases that belong together (e.g., "performance issues"); a word may appear in multiple queries.
5. When unsure, produce both a broad and a narrow query.
6. If the user asks for X or Y, create separate queries for X and Y.
5. Preserve phrases that belong together (e.g., "performance issues"); a word may appear in multiple queries.
6. When unsure, produce both a broad and a narrow query.
7. If the user asks for X or Y, create separate queries for X and Y.

Here is the original query:
{{query}}
Expand Down
1 change: 1 addition & 0 deletions backend/onyx/tools/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class SearchQueryInfo(BaseModel):

# None indicates that the default value should be used
class SearchToolOverrideKwargs(BaseModel):
original_query: str | None = None
force_no_rerank: bool | None = None
alternate_db_session: Session | None = None
retrieved_sections_callback: Callable[[list[InferenceSection]], None] | None = None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ def run(
self, override_kwargs: SearchToolOverrideKwargs | None = None, **llm_kwargs: Any
) -> Generator[ToolResponse, None, None]:
query = cast(str, llm_kwargs[QUERY_FIELD])
original_query = None
precomputed_query_embedding = None
precomputed_is_keyword = None
precomputed_keywords = None
Expand All @@ -303,6 +304,7 @@ def run(
kg_sources = None
kg_chunk_id_zero_only = False
if override_kwargs:
original_query = override_kwargs.original_query
precomputed_is_keyword = override_kwargs.precomputed_is_keyword
precomputed_keywords = override_kwargs.precomputed_keywords
precomputed_query_embedding = override_kwargs.precomputed_query_embedding
Expand Down Expand Up @@ -398,6 +400,7 @@ def run(
precomputed_keywords=precomputed_keywords,
# add expanded queries
expanded_queries=expanded_queries,
original_query=original_query,
),
user=self.user,
llm=self.llm,
Expand Down
Loading