This directory contains a complete example application: a mini research assistant that uses RAG (Retrieval-Augmented Generation) with validation.
Main implementation of the research assistant with helper functions.
Key Features:
- Session management with caching
- Guardian model integration for safety
- Custom validation functions
- Word count constraints
- Subset validation for citations
Document context and RAG document definitions.
Package initialization and exports.
- Complete Application: Full-featured research assistant
- RAG Integration: Retrieval-augmented generation workflow
- Multi-Model Setup: Using different models for different tasks
- Validation Pipeline: Multiple validation requirements
- Safety Checks: Guardian model for content safety
- Custom Requirements: Domain-specific validation logic
- Caching: Efficient session reuse with
@cache
User Query
↓
Document Retrieval (RAG)
↓
Generation with Context
↓
Validation:
- Word count check
- Citation validation
- Safety check (Guardian)
↓
Result
@cache
def get_session():
"""Get M session (change model here)."""
return MelleaSession(backend=OllamaModelBackend(model_ids.IBM_GRANITE_4_MICRO_3B))
@cache
def get_guardian_session():
"""Get M session for the guardian model."""
return MelleaSession(backend=OllamaModelBackend(model_ids.IBM_GRANITE_GUARDIAN_3_0_2B))def create_check_word_count(max_words: int) -> Callable[[str], bool]:
"""Generate a maximum-word-count validation function."""
def cc(s: str):
return len(s.split()) <= max_words
return cc
def is_a_true_subset_of_b(a: list[str], b: list[str]) -> bool:
"""Check if a is true subset of b."""
# Citation validation logicThis example demonstrates best practices for building production applications:
- Separation of Concerns: Different modules for different responsibilities
- Reusable Components: Helper functions that can be used across the app
- Multi-Model Architecture: Using specialized models for specific tasks
- Comprehensive Validation: Multiple layers of validation
- Caching: Performance optimization with session caching
- See
rag/for RAG examples - See
safety/for Guardian examples - See
mellea/stdlib/requirements/for validation patterns