feat(rag): implement database routing in query endpoint
Log database routing decisions and add databases_used to response metadata. When template specifies databases: ["oxigraph"], Qdrant vector search is skipped.
This commit is contained in:
parent
35a057981c
commit
787f4dacb0
1 changed files with 7 additions and 2 deletions
|
|
@ -3020,9 +3020,13 @@ async def dspy_query(request: DSPyQueryRequest) -> DSPyQueryResponse:
|
|||
# Check if this is a factual query that can skip LLM (template-driven, not hardcoded)
|
||||
# Fast path rule: If "prose" is NOT in response_modes, LLM generation is skipped
|
||||
if template_result.matched and not template_result.requires_llm():
|
||||
# Log database routing decision
|
||||
databases_used = template_result.databases if hasattr(template_result, 'databases') else ["oxigraph", "qdrant"]
|
||||
qdrant_skipped = "qdrant" not in databases_used
|
||||
logger.info(
|
||||
f"[FAST-PATH] Template '{template_result.template_id}' uses response_modes={template_result.response_modes} - "
|
||||
f"skipping LLM generation (confidence={template_result.confidence:.2f})"
|
||||
f"[FAST-PATH] Template '{template_result.template_id}' uses response_modes={template_result.response_modes}, "
|
||||
f"databases={databases_used} - skipping LLM generation{', Qdrant skipped' if qdrant_skipped else ''} "
|
||||
f"(confidence={template_result.confidence:.2f})"
|
||||
)
|
||||
|
||||
# Execute SPARQL directly
|
||||
|
|
@ -3159,6 +3163,7 @@ async def dspy_query(request: DSPyQueryRequest) -> DSPyQueryResponse:
|
|||
"primary_type": viz_types[0] if viz_types else "table",
|
||||
"sparql_query": sparql_query,
|
||||
"response_modes": template_result.response_modes,
|
||||
"databases_used": databases_used, # For transparency/debugging
|
||||
},
|
||||
retrieved_results=sparql_results,
|
||||
query_type="factual",
|
||||
|
|
|
|||
Loading…
Reference in a new issue