[PR #5954] docs(examples/rag/langgraph_agentic_rag): Fix infinite loop in document relevance grading and query rewriting #4739

Closed
opened 2026-02-20 17:50:40 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langchain-ai/langgraph/pull/5954

State: closed
Merged: No


Problem

The agentic RAG system could get stuck in infinite loops when:

  1. Retrieved documents are graded as "not relevant"
  2. START → agent → retrieve → grade_documents → rewrite → agent → retrieve → grade_documents → rewrite → ...
  3. Query gets rewritten
  4. Agent retrieves again with rewritten query
  5. Documents still graded as "not relevant"
  6. Process repeats indefinitely

Solution

Implemented retry limit mechanism with guaranteed termination:

  • Added rewrite_count tracking to prevent infinite cycles
  • Max 2 rewrites allowed before forcing generation
  • Early termination in grade_documents() when limit reached
  • Fallback strategy ensures user always gets a response

Changes Made

Core Logic Updates

  • grade_documents(): Added rewrite count check at function start
  • rewrite(): Added counter increment and proper variable ordering
  • Flow guarantee: System terminates within 3 total attempts maximum

Technical Details

# Before: Potential infinite loop
retrieve  grade  rewrite  retrieve  grade  rewrite  ...

# After: Guaranteed termination  
retrieve  grade  rewrite  retrieve  grade  rewrite  retrieve  grade  FORCE GENERATE 
**Original Pull Request:** https://github.com/langchain-ai/langgraph/pull/5954 **State:** closed **Merged:** No --- ## Problem The agentic RAG system could get stuck in infinite loops when: 1. Retrieved documents are graded as "not relevant" 2. START → agent → retrieve → grade_documents → rewrite → agent → retrieve → grade_documents → rewrite → ... 3. Query gets rewritten 4. Agent retrieves again with rewritten query 5. Documents still graded as "not relevant" 6. Process repeats indefinitely ## Solution Implemented retry limit mechanism with guaranteed termination: - **Added `rewrite_count` tracking** to prevent infinite cycles - **Max 2 rewrites allowed** before forcing generation - **Early termination** in `grade_documents()` when limit reached - **Fallback strategy** ensures user always gets a response ## Changes Made ### Core Logic Updates - **`grade_documents()`**: Added rewrite count check at function start - **`rewrite()`**: Added counter increment and proper variable ordering - **Flow guarantee**: System terminates within 3 total attempts maximum ### Technical Details ```python # Before: Potential infinite loop retrieve → grade → rewrite → retrieve → grade → rewrite → ... # After: Guaranteed termination retrieve → grade → rewrite → retrieve → grade → rewrite → retrieve → grade → FORCE GENERATE
yindo added the pull-request label 2026-02-20 17:50:40 -05:00
yindo closed this issue 2026-02-20 17:50:40 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langchain-ai/langgraph#4739