Extracts Q&A pairs from PDF documents using GPU-accelerated language models with configurable difficulty and creativity parameters.
- PDF Extraction: PyMuPDF extracts raw text while preserving structure
- Chunking: Splits text into overlapping windows (default: 800 words, 100-word overlap)
- Chunk Scoring: Filters chunks based on information density and readability
Uses prompt templates to generate questions at different complexity levels:
- Basic: Direct factual questions about explicit information
- Intermediate: Analytical questions requiring understanding of relationships
- Advanced: Synthesis questions combining multiple concepts
- Conservative (T=0.3): Focused, literal questions with low variation
- Balanced (T=0.7): Standard technical questions with moderate creativity
- High Creativity (T=0.9): Exploratory questions with diverse phrasings
- Model Loading: Llama-3-8B-Instruct with FP16 precision
- Batch Processing: Processes multiple chunks simultaneously
- Memory Management: Optional 8-bit quantization for 24GB+ models
class PDFQAExtractor:
- load_model() # Initialize Llama-3 with GPU acceleration
- extract_text() # PDF → structured text chunks
- generate_qa() # Chunk → Q&A pairs via LLM
- filter_quality() # Remove low-quality outputs- Domain-specific vocabulary injection
- Context-aware question generation
- Answer grounding to source text
- Hallucination prevention through strict prompting
--difficulty-levels: basic, intermediate, advanced--temperature: Sampling randomness (0.1-1.0)--chunk-size: Text window size in words--batch-size: GPU memory vs speed tradeoff--quantize: Enable 8-bit model compression
{
"instruction": "What is the purpose of the preamp gain control?",
"input": "",
"output": "The preamp gain control adjusts input sensitivity...",
"source_chunk": "Original PDF text segment",
"difficulty": "basic",
"chunk_id": "chunk_042",
"quality_score": 0.87
}- L40S GPU: ~50 Q&A pairs/minute with quantization
- Memory Usage: 12-16GB VRAM (8-bit), 20-24GB (FP16)
- Quality vs Speed: Higher temperatures = more creativity but slower generation
- Per Difficulty Level: ~50-100 pairs from typical manual
- Total (3×3 Matrix): 500-1000 pairs across all combinations
- Quality Distribution: 70-80% meet basic quality thresholds
- Technical documentation → training data
- Domain-specific Q&A dataset creation
- Knowledge extraction from manuals
- Multi-level educational content generation