added additional verificaton if keywords already provided in query param do not run the generation process;
This commit is contained in:
@@ -719,8 +719,7 @@ async def kg_query(
|
|||||||
if cached_response is not None:
|
if cached_response is not None:
|
||||||
return cached_response
|
return cached_response
|
||||||
|
|
||||||
# Extract keywords using extract_keywords_only function which already supports conversation history
|
hl_keywords, ll_keywords = await get_keywords_from_query(
|
||||||
hl_keywords, ll_keywords = await extract_keywords_only(
|
|
||||||
query, query_param, global_config, hashing_kv
|
query, query_param, global_config, hashing_kv
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -816,6 +815,37 @@ async def kg_query(
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
async def get_keywords_from_query(
|
||||||
|
query: str,
|
||||||
|
query_param: QueryParam,
|
||||||
|
global_config: dict[str, str],
|
||||||
|
hashing_kv: BaseKVStorage | None = None,
|
||||||
|
) -> tuple[list[str], list[str]]:
|
||||||
|
"""
|
||||||
|
Retrieves high-level and low-level keywords for RAG operations.
|
||||||
|
|
||||||
|
This function checks if keywords are already provided in query parameters,
|
||||||
|
and if not, extracts them from the query text using LLM.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
query: The user's query text
|
||||||
|
query_param: Query parameters that may contain pre-defined keywords
|
||||||
|
global_config: Global configuration dictionary
|
||||||
|
hashing_kv: Optional key-value storage for caching results
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A tuple containing (high_level_keywords, low_level_keywords)
|
||||||
|
"""
|
||||||
|
if not query_param.hl_keywords.empty() and not query_param.ll_keywords.empty():
|
||||||
|
return query_param.hl_keywords, query_param.ll_keywords
|
||||||
|
|
||||||
|
# Extract keywords using extract_keywords_only function which already supports conversation history
|
||||||
|
hl_keywords, ll_keywords = await extract_keywords_only(
|
||||||
|
query, query_param, global_config, hashing_kv
|
||||||
|
)
|
||||||
|
return hl_keywords, ll_keywords
|
||||||
|
|
||||||
|
|
||||||
async def extract_keywords_only(
|
async def extract_keywords_only(
|
||||||
text: str,
|
text: str,
|
||||||
param: QueryParam,
|
param: QueryParam,
|
||||||
@@ -956,8 +986,7 @@ async def mix_kg_vector_query(
|
|||||||
# 2. Execute knowledge graph and vector searches in parallel
|
# 2. Execute knowledge graph and vector searches in parallel
|
||||||
async def get_kg_context():
|
async def get_kg_context():
|
||||||
try:
|
try:
|
||||||
# Extract keywords using extract_keywords_only function which already supports conversation history
|
hl_keywords, ll_keywords = await get_keywords_from_query(
|
||||||
hl_keywords, ll_keywords = await extract_keywords_only(
|
|
||||||
query, query_param, global_config, hashing_kv
|
query, query_param, global_config, hashing_kv
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2034,16 +2063,13 @@ async def query_with_keywords(
|
|||||||
Query response or async iterator
|
Query response or async iterator
|
||||||
"""
|
"""
|
||||||
# Extract keywords
|
# Extract keywords
|
||||||
hl_keywords, ll_keywords = await extract_keywords_only(
|
hl_keywords, ll_keywords = await get_keywords_from_query(
|
||||||
text=query,
|
query=query,
|
||||||
param=param,
|
query_param=param,
|
||||||
global_config=global_config,
|
global_config=global_config,
|
||||||
hashing_kv=hashing_kv,
|
hashing_kv=hashing_kv,
|
||||||
)
|
)
|
||||||
|
|
||||||
param.hl_keywords = hl_keywords
|
|
||||||
param.ll_keywords = ll_keywords
|
|
||||||
|
|
||||||
# Create a new string with the prompt and the keywords
|
# Create a new string with the prompt and the keywords
|
||||||
ll_keywords_str = ", ".join(ll_keywords)
|
ll_keywords_str = ", ".join(ll_keywords)
|
||||||
hl_keywords_str = ", ".join(hl_keywords)
|
hl_keywords_str = ", ".join(hl_keywords)
|
||||||
|
Reference in New Issue
Block a user