Wrap synthesizer.synthesize() in try-catch to handle AttributeError gracefully
and fall back to returning raw documents when LLM synthesis fails.
This allows the chat feature to work even when there are Pydantic or llama-index
compatibility issues with TextNode attributes.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>