fix(rag): use SPARQL results for COUNT queries in streaming fast-path
- Fix bug where COUNT queries showed Qdrant result count (10) instead of actual SPARQL count (e.g., 204 musea in Noord-Holland) - Use sparql_results for count extraction in factual query fast-path - Also fix fallback COUNT/LIST handling to use sparql_results
This commit is contained in:
parent
eaf80ec756
commit
8a7ed757b8
1 changed files with 20 additions and 6 deletions
|
|
@ -4967,9 +4967,22 @@ class HeritageRAGPipeline(dspy.Module):
|
|||
ui_tmpl = template_result.ui_template.get(lang, template_result.ui_template.get("nl", ""))
|
||||
|
||||
# Build context for template rendering
|
||||
# CRITICAL: Use sparql_results for counts, NOT retrieved_results (Qdrant)
|
||||
# For COUNT queries, SPARQL returns [{"count": 204}]
|
||||
# For LIST queries, SPARQL returns the actual institutions
|
||||
# retrieved_results is from Qdrant vector search (max 10 results)
|
||||
if "count" in response_modes and sparql_results:
|
||||
# COUNT query - extract count from SPARQL result
|
||||
count_value = sparql_results[0].get("count", 0) if sparql_results else 0
|
||||
result_count = count_value
|
||||
else:
|
||||
# LIST/TABLE query - use SPARQL result count (not Qdrant limit)
|
||||
count_value = len(sparql_results) if sparql_results else len(retrieved_results)
|
||||
result_count = count_value
|
||||
|
||||
template_context = {
|
||||
"result_count": len(retrieved_results),
|
||||
"count": retrieved_results[0].get("count", len(retrieved_results)) if retrieved_results else 0,
|
||||
"result_count": result_count,
|
||||
"count": count_value,
|
||||
**(template_result.slots or {})
|
||||
}
|
||||
|
||||
|
|
@ -5015,12 +5028,13 @@ class HeritageRAGPipeline(dspy.Module):
|
|||
factual_answer_text = factual_answer_text.replace("{{" + key + "}}", str(value))
|
||||
|
||||
elif "count" in response_modes:
|
||||
# Count query
|
||||
count_value = retrieved_results[0].get("count", len(retrieved_results)) if retrieved_results else 0
|
||||
# Count query - use SPARQL results, NOT Qdrant results
|
||||
count_value = sparql_results[0].get("count", 0) if sparql_results else 0
|
||||
factual_answer_text = f"Aantal: {count_value}"
|
||||
else:
|
||||
# List/table query - simple result count
|
||||
factual_answer_text = f"Gevonden: {len(retrieved_results)} resultaten."
|
||||
# List/table query - use SPARQL result count (not Qdrant limit)
|
||||
result_count = len(sparql_results) if sparql_results else len(retrieved_results)
|
||||
factual_answer_text = f"Gevonden: {result_count} resultaten."
|
||||
|
||||
logger.info(f"[Streaming FAST-PATH] Generated factual answer: {factual_answer_text}")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue