Spaces:
Running
title: Graphics Guide / Design Assistant
emoji: ๐
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
short_description: RAG-powered graphics and design assistant for data visualization
license: mit
๐ Graphics Guide / Design Assistant
A RAG-powered AI assistant that helps users select appropriate visualizations and provides technical implementation guidance for creating effective information graphics. Built with Supabase PGVector and Hugging Face Inference Providers, powered by a knowledge base of graphics research and design principles.
โจ Features
- ๐ฏ Design Recommendations: Get tailored visualization suggestions based on your intent and data characteristics
- ๐ Research-Backed Guidance: Access insights from academic papers and design best practices
- ๐ Context-Aware Retrieval: Semantic search finds the most relevant examples and knowledge for your needs
- ๐ API Access: Built-in REST API for integration with external applications
- ๐ฌ Chat Interface: User-friendly conversational interface
- โก Technical Implementation: Practical guidance on tools, techniques, and code examples
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Gradio UI + API Endpoints โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ
โ RAG Pipeline โ
โ โข Query Understanding โ
โ โข Document Retrieval (PGVector) โ
โ โข Response Generation (LLM) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโดโโโโโโโโโโโ
โ โ
โโโโโผโโโโโโโโโโโโ โโโโโโโผโโโโโโโโโโโโโ
โ Supabase โ โ HF Inference โ
โ PGVector DB โ โ Providers โ
โ (198 docs) โ โ (Llama 3.1) โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
๐ Quick Start
Local Development
Clone the repository
git clone <your-repo-url> cd graphics-llmInstall dependencies
pip install -r requirements.txtSet up environment variables
cp .env.example .env # Edit .env with your credentialsRequired variables:
SUPABASE_URL: Your Supabase project URLSUPABASE_KEY: Your Supabase anon keyHF_TOKEN: Your Hugging Face API token (for LLM generation)JINA_API_KEY: Your Jina AI API token (for embeddings)
Run the application
python app.pyThe app will be available at
http://localhost:7860
Hugging Face Spaces Deployment
- Create a new Space on Hugging Face
- Push this repository to your Space
- Set environment variables in Space settings:
SUPABASE_URLSUPABASE_KEYHF_TOKENJINA_API_KEY
- Deploy - The Space will automatically build and launch
๐ Usage
Chat Interface
Simply ask your design questions:
"What's the best chart type for showing trends over time?"
"How do I create an effective infographic for complex data?"
"What are best practices for data visualization accessibility?"
The assistant will provide:
- Design recommendations based on your intent
- WHY each visualization type is suitable
- HOW to implement it (tools, techniques, code)
- Best practices from research and examples
- Accessibility and effectiveness considerations
API Access
This app automatically exposes REST API endpoints for external integration.
Python Client:
from gradio_client import Client
client = Client("your-space-url")
result = client.predict(
"What's the best chart for time series?",
api_name="/recommend"
)
print(result)
JavaScript Client:
import { Client } from "@gradio/client";
const client = await Client.connect("your-space-url");
const result = await client.predict("/recommend", {
message: "What's the best chart for time series?"
});
console.log(result.data);
cURL:
curl -X POST "https://your-space.hf.space/call/recommend" \
-H "Content-Type: application/json" \
-d '{"data": ["What's the best chart for time series?"]}'
Available Endpoints:
/call/recommend- Main design recommendation assistant/gradio_api/openapi.json- OpenAPI specification
๐๏ธ Database
The app uses Supabase with PGVector extension to store and retrieve document chunks from graphics research and examples.
Database Schema:
CREATE TABLE document_embeddings (
id BIGINT PRIMARY KEY,
source_type TEXT, -- pdf, url, or image
source_id TEXT, -- filename or URL
title TEXT,
content_type TEXT, -- text or image
chunk_index INTEGER,
chunk_text TEXT,
page_number INTEGER,
embedding VECTOR(1024), -- 1024-dimensional vectors
metadata JSONB,
word_count INTEGER,
image_metadata JSONB,
created_at TIMESTAMPTZ
);
Knowledge Base Content:
- Research papers on data visualization
- Design principles and best practices
- Visual narrative techniques
- Accessibility guidelines
- Chart type selection guidance
- Real-world examples and case studies
๐ ๏ธ Technology Stack
- UI/API: Gradio - Automatic API generation
- Vector Database: Supabase with PGVector extension
- Embeddings: Jina-CLIP-v2 (1024-dimensional)
- LLM: Hugging Face Inference Providers - Llama 3.1
- Language: Python 3.9+
๐ Project Structure
graphics-llm/
โโโ app.py # Main Gradio application
โโโ requirements.txt # Python dependencies
โโโ .env.example # Environment variables template
โโโ README.md # This file
โโโ src/
โโโ __init__.py
โโโ vectorstore.py # Supabase PGVector connection
โโโ rag_pipeline.py # RAG pipeline logic
โโโ llm_client.py # Inference Provider client
โโโ prompts.py # Design recommendation prompt templates
โ๏ธ Configuration
Environment Variables
See .env.example for all available configuration options.
Required:
SUPABASE_URL- Supabase project URLSUPABASE_KEY- Supabase anon keyHF_TOKEN- Hugging Face API token (for LLM generation)JINA_API_KEY- Jina AI API token (for Jina-CLIP-v2 embeddings)
Optional:
LLM_MODEL- Model to use (default: meta-llama/Llama-3.1-8B-Instruct)LLM_TEMPERATURE- Generation temperature (default: 0.2)LLM_MAX_TOKENS- Max tokens to generate (default: 2000)RETRIEVAL_K- Number of documents to retrieve (default: 5)EMBEDDING_MODEL- Embedding model (default: jina-clip-v2)
Supported LLM Models
meta-llama/Llama-3.1-8B-Instruct(recommended)meta-llama/Meta-Llama-3-8B-InstructQwen/Qwen2.5-72B-Instructmistralai/Mistral-7B-Instruct-v0.3
๐ฐ Cost Considerations
Hugging Face Inference Providers
- Free tier: $0.10/month credits
- PRO tier: $2.00/month credits + pay-as-you-go
- Typical cost: ~$0.001-0.01 per query
- Recommended budget: $10-50/month for moderate usage
Supabase
- Free tier sufficient for most use cases
- PGVector operations are standard database queries
Hugging Face Spaces
- Free CPU hosting available
- GPU upgrade: ~$0.60/hour (optional, not required)
๐ฎ Future Enhancements
- Multi-turn conversation with memory
- Code generation for visualization implementations
- Interactive visualization previews
- User-uploaded data analysis
- Export recommendations as PDF/markdown
- Community-contributed examples
- Support for more design domains (UI/UX, print graphics)
๐ค Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
๐ License
MIT License - See LICENSE file for details
๐ Acknowledgments
- Knowledge base includes research papers on data visualization and information design
- Built to support designers, journalists, and data practitioners
๐ Support
For issues or questions:
- Open an issue on GitHub
- Check the Hugging Face Spaces documentation
- Review the Gradio documentation
Built with โค๏ธ for the design and visualization community