Φίλες και φίλοι του Vibecoding Greece, σήμερα θα μιλήσουμε για κάτι που αλλάζει τα πάντα: πώς μετατρέπουμε ένα «γενικό» AI μοντέλο σε έναν εξειδικευμένο ψηφιακό υπάλληλο που ξέρει τη δουλειά σας, μιλάει τη γλώσσα σας και δουλεύει με τα δεδομένα σας.
Ο οδηγός απευθύνεται σε δύο κοινότητες:
| User Case | Κλάδος | Πρόκληση |
|---|---|---|
| 🎨 Sunny Design Ltd | Creative Studio | Το AI να μιλάει με το καλλιτεχνικό μας ύφος |
| 🏨 George's Boutique Hotel | Τουρισμός | Το AI να απαντά σε ερωτήσεις πελατών 24/7 |
| 📦 Milano Logistica | Logistics | Το AI να βρίσκει ακριβείς κωδικούς παραγγελιών |
Το Retrieval-Augmented Generation (RAG) δίνει στο μοντέλο πρόσβαση στα δικά σας δεδομένα — PDFs, βάσεις δεδομένων, emails — χωρίς να το επανεκπαιδεύσουμε. Σκεφτείτε το σαν να δίνετε σε έναν νέο υπάλληλο ένα εγχειρίδιο πριν ξεκινήσει δουλειά.
Το Fine-Tuning — συγκεκριμένα το LoRA — αλλάζει το ύφος και τη συμπεριφορά του μοντέλου. Σκεφτείτε το σαν να εκπαιδεύετε έναν υπάλληλο να μιλάει με συγκεκριμένο τόνο: φιλικό, επαγγελματικό, καλλιτεχνικό.
| Ανάγκη | Λύση | Παράδειγμα |
|---|---|---|
| «Θέλω το AI να ξέρει τα προϊόντα μου» | RAG | George's Hotel: τιμές δωματίων, παροχές |
| «Θέλω το AI να μιλάει σαν εμένα» | LoRA | Sunny Design: καλλιτεχνικό ύφος |
| «Θέλω και τα δύο» | RAG + LoRA | Milano Logistica: δεδομένα + ύφος |
| Τύπος δεδομένων | Για RAG | Για Fine-Tuning | Παράδειγμα |
|---|---|---|---|
| PDFs / Word docs | ✅ | ❌ | Οδηγοί, contracts, FAQs |
| Emails / Slack | ✅ | ✅ | Επικοινωνία με πελάτες |
| Βάσεις δεδομένων (SQL) | ✅ | ❌ | Παραγγελίες, απογραφή |
| Διάλογοι (Q&A pairs) | ❌ | ✅ | Παραδείγματα σωστής απάντησης |
| Spreadsheets (CSV/Excel) | ✅ | ❌ | Τιμοκατάλογοι, πολιτικές |
Τι αφαιρούμε: Headers/footers, disclaimers και legal boilerplate, κενές σελίδες, διπλότυπο περιεχόμενο.
Τι κρατάμε: Ουσιώδες περιεχόμενο, σαφείς τίτλους και δομή, αριθμητικά δεδομένα (τιμές, ημερομηνίες, κωδικοί).
Εργαλείο: Unstructured.io — αυτόματο parsing και cleaning για PDFs, Word, HTML, εικόνες.
Το chunking χωρίζει τα κείμενα σε μικρά κομμάτια για το RAG. Είναι κρίσιμο και συχνά αγνοείται.
| Μέθοδος | Πότε | Παράδειγμα |
|---|---|---|
| Fixed-size (512 tokens) | Γρήγορο setup | FAQ docs |
| Sentence-based | Φυσικό κείμενο | Hotel guide |
| Semantic (embeddings) | Πολύπλοκα έγγραφα | Legal contracts |
| Hierarchical | Δομημένα docs | Technical manuals |
Τα πιο διαδεδομένα formats:
Πόσα δείγματα χρειάζεσαι;
| Στόχος | Ελάχιστο | Ιδανικό |
|---|---|---|
| Αλλαγή τόνου/ύφους | 50 | 200–500 |
| Εξειδικευμένη γνώση domain | 200 | 500–2000 |
| Πλήρης custom behavior | 500 | 2000+ |
Εργαλείο annotation: Argilla — web UI για annotation, review και διαχείριση datasets.
Το RAG είναι η καρδιά ενός enterprise AI system. Επιτρέπει στο μοντέλο να απαντάει με βάση τα δικά σου δεδομένα, όχι τη γενική γνώση του.
Ο Vector Search (semantic) βρίσκει έννοιες: «ποιο είναι το καλύτερο κρασί;» → «red wine recommendations». Ο BM25 (keyword) βρίσκει ακριβείς λέξεις: «κωδικός #12345». Ο συνδυασμός τους — Hybrid Search — δίνει μέγιστη ακρίβεια.
Πηγή: Elasticsearch Hybrid Search Guide
Αφού το RAG βρει τα top-20 σχετικά chunks, ένα Cross-Encoder τα ξαναβαθμολογεί για να κρατήσει τα top-5. Είναι κρίσιμο για technical queries όπως κωδικούς παραγγελιών.
Εργαλείο: SBERT Cross-Encoder
RAG only — Gemma 3 4B — AnythingLLM
Dataset: Οδηγός ξενοδοχείου (PDF), τιμοκατάλογος (Excel), FAQ (Word) σε 3 γλώσσες.
Δεν χρειάζεται fine-tuning — το RAG αρκεί.
RAG + Re-ranking — Qwen3 30B — LlamaIndex
Dataset: Export από ERP σε CSV/JSON, πολιτικές αποστολών σε PDF.
Hybrid Search + Cross-Encoder για μέγιστη ακρίβεια σε κωδικούς παραγγελιών.
Το 90% των επιχειρήσεων δεν έχουν έτοιμα datasets. Η λύση: χρησιμοποιείς ένα ισχυρότερο μοντέλο (Teacher = Qwen3 30B) για να παράγει δεδομένα για το μικρότερο (Student = Gemma 3 4B).
Παίρνεις τα έγγραφά σου και ζητάς από το Qwen3 30B να δημιουργήσει ρεαλιστικά ζεύγη Ερώτησης-Απάντησης. Ζήτα 5 ζεύγη ανά chunk, με ποικιλία στη διατύπωση (formal, informal, urgent). Η απάντηση πρέπει να προέρχεται αυστηρά από το κείμενο — όχι από γενική γνώση. Output: JSONL format.
Ξεκινάς με 5–10 χειροκίνητα παραδείγματα (seeds) και ζητάς επέκταση. Ιδανικό για τη Sunny Design: δίνεις 3 παραδείγματα creative director απαντήσεων και ζητάς 10 νέα με ακριβώς το ίδιο minimalist, confident ύφος.
Αν έχεις λίγα δείγματα, τα πολλαπλασιάζεις: κάθε ερώτηση ξαναγράφεται σε 5 διαφορετικές διατυπώσεις — formal/informal, σύντομη/αναλυτική, τεχνική/απλή.
datasketch library. Κατώφλι ομοιότητας: 70%.Εργαλείο: distilabel — το κορυφαίο open-source framework για synthetic data pipelines.
Όταν θέλεις το μοντέλο να μιλάει με συγκεκριμένο ύφος, χρησιμοποιείς Parameter-Efficient Fine-Tuning (PEFT).
| Hyperparameter | Τι κάνει | Τιμή εκκίνησης |
|---|---|---|
r (rank) | Χωρητικότητα adapter — μεγαλύτερο = πιο ισχυρό | 16–64 |
lora_alpha | Scaling factor — συνήθως 2×r | 32–128 |
lora_dropout | Regularization για αποφυγή overfitting | 0.05–0.1 |
learning_rate | Βήμα εκμάθησης | 2e-4 |
num_epochs | Πόσες φορές βλέπει το dataset | 3–5 |
| Μοντέλο | Method | VRAM | GPU |
|---|---|---|---|
| Gemma 3 4B | QLoRA (4-bit) | ~6GB | RTX 3060 / 4060 |
| Gemma 3 4B | LoRA (16-bit) | ~12GB | RTX 3080 / 4070 |
| Qwen3 30B | QLoRA (4-bit) | ~20GB | RTX 4090 |
| Qwen3 30B | LoRA (16-bit) | ~60GB+ | 2× A100 / cloud |
50 seed examples (creative director replies) → distilabel → 500 synthetic pairs → QLoRA Gemma 3 4B με Unsloth → Creative Director voice στο Slack bot της εταιρείας.
Το μοντέλο ξεχνάει τις γενικές γνώσεις του και γίνεται υπερ-ειδικευμένο στο dataset σου. Αν εκπαιδεύσεις με δεδομένα logistics, μπορεί να ξεχάσει πώς να μιλάει Ελληνικά. Το LoRA δεν έχει αυτό το πρόβλημα γιατί τα original weights παραμένουν παγωμένα.
Ο ταχύτερος inference engine για LLMs. Χρησιμοποιεί PagedAttention για να εξυπηρετεί πολλαπλούς χρήστες ταυτόχρονα με ελάχιστο VRAM waste.
Διαχείριση πολλαπλών μοντέλων και adapters μέσω ενός API — ακριβώς σαν OpenAI API. Ιδανικό για το George's Hotel: Adapter Α για Ελληνικά, Β για Αγγλικά, Γ για Γερμανικά — auto-routing ανά γλώσσα χρήστη.
Μην μαντεύεις αν το RAG σου δουλεύει. Μέτρα το.
| Metric | Τι μετράει | Τι σημαίνει χαμηλή τιμή |
|---|---|---|
| Faithfulness | Η απάντηση βασίζεται στο context; | Το μοντέλο «φαντάζεται» πληροφορίες |
| Answer Relevancy | Η απάντηση αφορά την ερώτηση; | Irrelevant ή off-topic απαντήσεις |
| Context Precision | Το retrieved context είναι σχετικό; | Χαμηλή ποιότητα retrieval |
| Context Recall | Βρέθηκε όλη η απαραίτητη πληροφορία; | Missing chunks — αναθεώρησε το chunking |
| Φάση | Τι κάνεις | Εργαλείο | Χρόνος |
|---|---|---|---|
| Α — Data Collection | Μάζεμα εγγράφων, exports, emails | Φάκελοι, Drive | 1–2 μέρες |
| Β — Data Cleaning | Καθαρισμός PDFs, αφαίρεση θορύβου | Unstructured.io | 1–2 μέρες |
| Γ — RAG Implementation | Setup vector store + hybrid search | AnythingLLM / LlamaIndex | 3–5 μέρες |
| Δ — Synthetic Data | Παραγωγή Q&A pairs με teacher model | distilabel + Qwen3 30B | 2–3 μέρες |
| Ε — Fine-Tuning | LoRA/QLoRA adapter training | Unsloth / Axolotl | 1–2 μέρες |
| Ζ — Production | Deploy με vLLM + LiteLLM proxy | vLLM + LiteLLM | 3–5 μέρες |
| Η — Evaluation | Μέτρηση RAGAS metrics + iteration | RAGAS | Συνεχές |
Συνολικά: ~3–4 εβδομάδες για αρχάριους | ~1–2 εβδομάδες για developers.
ollama pull gemma3:4b