| name | grading |
| description | Evaluates document relevance to queries using binary scoring (yes/no) with reasoning. Use when filtering retrieved documents, determining relevance for answer generation, or when the user mentions grading, filtering, or document quality. |
Document Grading
Instructions
Grade documents for relevance using the functions in components/grader.py. The grading uses Claude API with structured outputs for consistent binary decisions.
Default workflow:
- Retrieve documents from ChromaDB or web search
- Call
grade_documents(query, documents) to grade all documents
- Call
filter_relevant_documents(graded_docs) to get only relevant ones
- Check if
len(relevant_docs) == 0 to trigger retry logic
Key functions:
graded_docs = grade_documents(query, documents)
relevant_docs = filter_relevant_documents(graded_docs)
result = grade_document(query, document)
Grading returns:
relevant: Boolean (True/False)
reasoning: Explanation of decision
Critical for adaptive retry: When ALL documents are graded as not relevant (len(relevant_docs) == 0), the pipeline triggers query rewriting and retry.
Implementation: components/grader.py, uses GRADING_MODEL from config.py (default: Haiku 4.5), temperature 0.
Examples
Example 1: Standard grading workflow
from components.grader import grade_documents, filter_relevant_documents
from tools.chromadb_tool import query_chromadb
docs = query_chromadb("gaming laptops", top_k=5)
graded = grade_documents("gaming laptops", docs)
relevant = filter_relevant_documents(graded)
Example 2: Triggering retry
docs = query_chromadb("fast computer", top_k=5)
graded = grade_documents("fast computer", docs)
relevant = filter_relevant_documents(graded)
Example 3: In adaptive RAG pipeline
graded_documents = grade_documents(current_query, retrieved_documents)
relevant_documents = filter_relevant_documents(graded_documents)
if len(relevant_documents) == 0:
if num_retries < RETRY_LIMIT:
rewrite_result = rewrite_query(current_query, previous_context)
current_query = rewrite_result['rewritten_query']
num_retries += 1
else:
generate_answer(original_query, relevant_documents)