This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Saturday, 22 November 2025
Έψαξε ποτέ για "οδηγός προσαρμογής" και πήρε τίποτα, ακόμη και αν υπάρχει ένα άρθρο σχετικά με "δημοσίευση στην παραγωγή"; RAG (Αύξηση-Αυξανόμενη Γενιά) λύνει αυτό με την κατανόηση έννοια, όχι μόνο λέξεις-κλειδιά. Αυτή η σειρά σας δείχνει πώς RAG ήρθε για, πώς λειτουργεί κάτω από το καπό, και πώς να οικοδομήσουμε συστήματα παραγωγής. Από σημασιολογική αναζήτηση στο AI-powered Q&A με αναφορές[all with working C# code παραδείγματα.
Πλοήγηση σειράς: Αυτό είναι το μέρος 1 της σειράς RAG (Ανάκτηση-Αυξανόμενη Γενιά):
RAG (Retrieval-Augmented Generation) αναπτύχθηκε για να κάνει AI smartter την πρόσβαση LLMs σε πληροφορίες που δεν είχαν εκπαιδευτεί. Αλλά εδώ είναι τι είναι ενδιαφέρον: η τεχνολογία ανοίγει ευκαιρίες πέρα από AI chatbots. Εξουσιάζει σημασιολογική αναζήτηση σε ιστοσελίδες, συστάσεις περιεχομένου, τη βοήθεια συγγραφής, και τη διαχείριση της γνώσης.
Η διπλή φύση: RAG μπορεί να βοηθήσει τους πελάτες (καλύτερη αναζήτηση, ακριβείς απαντήσεις με αναφορές) ή να τους εκμεταλλευτεί (χειραγωγικές συστάσεις, θάψιμο αρνητικές κριτικές, surfaceing upsell περιεχόμενο). Η διαφορά δεν είναι η πρόθεση της τεχνολογίας. Μια σημασιολογική αναζήτηση που βοηθά τους χρήστες να βρουν αυτό που πραγματικά χρειάζονται; Μεγάλη. Μία που δίνει προτεραιότητα σε αυτό που σας κάνει τα περισσότερα χρήματα ενώ εμφανίζεται χρήσιμη; Αυτή είναι η σκοτεινή περιοχή μοτίβο, και αυτός είναι ο λόγος για την κατανόηση του πώς αυτό λειτουργεί μετράει.
Εδώ είναι η αλήθεια για το RAG: Ακούγεται τρομακτικό. Vector subbeddings; Transformer μοντέλα; KV caches; Αλλά όπως όλα τα άλλα στο λογισμικό, είναι ακριβώς σχετικά με την κατανόηση πώς λειτουργεί. Δεν χρειάζεται να ξέρετε τα μαθηματικά πίσω από τις αρχιτεκτονικές μετασχηματιστών περισσότερο από ό, τι θα πρέπει να καταλάβετε συναρμολόγηση για να γράψετε C#.
ΠΟΔΑ σε τρία στάδια:
Τα υπόλοιπα είναι λεπτομέρειες εφαρμογής.
Αυτή η σειρά σας δείχνει πώς να οικοδομήσουμε τα συστήματα RAG με εργασία κώδικα C#. Δεν κουνάω το χέρι. Δεν υποθέσεις. Μόνο τα κομμάτια και πώς ταιριάζουν μαζί.
Τι θα μάθετε σε αυτή τη σειρά:
Αργότερα, θα σας δείξω επίσης πώς να δημιουργήσετε πλήρη συστήματα RAG συμπεριλαμβανομένων:
Αναδρομική-Αυξανόμενη Γενιά: Βρείτε σχετικές πληροφορίες και χρησιμοποιήστε τις.
flowchart LR
A[User Question] --> B[Retrieve Relevant Info]
B --> C[Retrieved Documents/Context]
C --> D[Generate Response]
A --> D
D --> E[Grounded, Accurate Answer]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Χωρίς ΚΓΠΕ: Ο χρήστης ρωτά → LLM μαντεύει από τη μνήμη → μπορεί να παραισθήσεις
Με τις ΚΓΠΕ: Ο χρήστης ρωτά → Βρείτε σχετικά έγγραφα → LLM απαντήσεις χρησιμοποιώντας αυτά τα έγγραφα → γειωμένο στην πραγματικότητα
// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps
// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs
Βασική διορατικότητα: Ξεχωριστή αποθήκευση γνώσεων (αναζήτηση) από τη λογική (LLM). Ενημερώστε τους γιατρούς σας, η αναζήτηση παραμένει τρέχουσα. Δεν απαιτείται επανεκπαίδευση.
Η κατανόηση αυτής της ιστορίας σας βοηθά να εκτιμήσετε γιατί RAG έχει σχεδιαστεί τον τρόπο με τον οποίο είναι ο τρόπος και τα προβλήματα που λύνει.
Αναζήτηση με βάση τις λέξεις-κλειδιά:
Το πρόβλημα: Αυτά ταιριάζουν. χαρακτήρες, όχι Σημασία. Αναζήτηση "ενορχήστρωση" και δεν θα βρείτε "Docker Swarm" εκτός αν εμφανίζονται αυτές οι ακριβείς λέξεις.
Watson (IBM, 2011):
Μοντέλα κατανόησης ανάγνωσης:
Transformers (2017): "Προσοχή είναι το μόνο που χρειάζεστε."
BERT (2018):
GPT-2/3 (2019/ 2020):
Αντιπροσωπείες διανυσματικών διανυσμάτων:
BART (Facebook AI, Οκτώβριος 2019):
M2M-100 (Facebook AI, Οκτώβριος 2020):
Παράδειγμα πραγματικού κόσμου: Μου Εργαλείο μετάφρασης νευρικών μηχανών χρησιμοποιεί το BART ως μοντέλο αυτόματης μετάφρασης όταν οι πρωτογενείς υπηρεσίες δεν είναι διαθέσιμες, δείχνοντας πώς αυτά τα μοντέλα που βασίζονται στον μετασχηματιστή έγιναν πρακτικά δομικά στοιχεία για τα συστήματα παραγωγής.
The synnal paper "Ανάκτηση-Αυξανόμενη Γενιά για Γνώση-Εντατικά καθήκοντα NLP" by Patrick Lewis et al. (Facebook AI Research) introducted επίσημα RAGs, building directly on BART:
Αυτό που συνδύασαν:
Τα αποτελέσματα: Τα συστήματα RAG ξεπέρασαν πολύ μεγαλύτερα μοντέλα σε εργασίες έντασης γνώσης ενώ ήταν πιο αποτελεσματικά και ενημερωμένα. Θα μπορούσατε να ενημερώσετε τη βάση γνώσεων χωρίς επανεκπαίδευση του μοντέλου.
Η ChatGPT, η GPT-4 και η Claude έκαναν τις ΚΓΠΕ απαραίτητες:
Σήμερα (2024-2025): Το RAG είναι το de facto πρότυπο για τα συστήματα AI παραγωγής που χρειάζονται ακρίβεια και δυνατότητα ελέγχου. Κάθε μεγάλη εταιρεία AI προσφέρει εργαλεία RAG.
Πριν βουτήξουμε βαθιά στις τεχνικές λεπτομέρειες (τις οποίες θα καλύψουμε στο Μέρος 2), ας κατανοήσουμε την υψηλή ροή εργασίας.
Τα συστήματα RAG λειτουργούν σε τρεις διαφορετικές φάσεις:
flowchart LR
A[Your Documents] --> B[Split into Chunks]
B --> C[Generate Embeddings]
C --> D[Store in Vector DB]
style C stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Τι συμβαίνει;
Βασική έννοια: Παρόμοια νοήματα παράγουν παρόμοια διανυσματικά μέσα, έτσι "δεξαμενή" και "πλατφόρμα μεταφοράς" καταλήγουν κοντά μαζί στο διανυσματικό χώρο.
flowchart LR
A[User Question] --> B[Generate Query Embedding]
B --> C[Search Vector DB]
C --> D[Top K Most Similar Chunks]
style B stroke:#f9f,stroke-width:2px
style C stroke:#bbf,stroke-width:2px
Τι συμβαίνει;
Γιατί δουλεύει: "Πώς μπορώ να αναπτύξω κοντέινερ;" (κατάληψη) είναι σημασιολογικά παρόμοια με κομμάτια σχετικά με την ανάπτυξη Docker, ακόμη και αν οι ακριβείς λέξεις διαφέρουν.
flowchart TB
A[User Question] --> B[Build Prompt]
C[Retrieved Context] --> B
B --> D[LLM]
D --> E[Generated Answer with Citations]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Τι συμβαίνει;
Η μαγεία: Το LLM δεν μπορεί να παραισθήσεις γεγονότα που δεν είναι στο πλαίσιο. Μπορεί μόνο να συνθέσει και να εξηγήσει τι παρέχεται.
Ας εντοπίσουμε ένα ερώτημα στο σύστημα:
Ο χρήστης ρωτά: "Πώς μπορώ να χρησιμοποιήσω Docker Compose;"
Βήμα 1 - Ανάκτηση:
Query embedding: [0.234, -0.891, 0.567, ...]
Search vector DB for similar embeddings...
Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)
Βήμα 2 - Γενιά:
Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...
Question: How do I use Docker Compose?
Answer (use the context above):"
LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."
Αποτέλεσμα: Ακριβής απάντηση με έμμεσες αναφορές από τα έγγραφά σας.
Η κατανόηση του πότε πρέπει να χρησιμοποιούνται οι ΚΓΠΕ (και πότε όχι) απαιτεί σύγκριση με εναλλακτικές λύσεις.
Φανταστείτε το RAG Ωραίος τόνος |--------|-----|-------------| | Ενημερώσεις γνώσεων □ Άμεση (απλά ενημέρωση της βάσης γνώσεων) □ Απαιτεί επανεκπαίδευση | Κόστος □ Χαμηλή (αποθήκευση + ενσωμάτωση) □ Υψηλή (χρόνος εκπαίδευσης GPU) □ | Ακρίβεια Μπορεί να έχει παραισθήσεις | Προσαρμογή Περιορίζεται στην ανάκτηση του μοντέλου Deep model adjustment | Εξηγησιμότητα □ Υψηλό (μπορεί να αναφέρει πηγές) □ Χαμηλό (μαύρο κουτί) | Το καλύτερο για Δραστηριότητα έντασης γνώσης ~ Style/format adjustment ~
Πότε να χρησιμοποιήσετε το Fine-Tuning:
Πότε να χρησιμοποιήσετε τις ΚΓΠΕ:
Μπορείς να συνδυάσεις και τα δύο; Καλή τύχη για το στυλ, Ράγκερ για τα γεγονότα.
Μοντέρνα LLMs καυχιούνται τεράστια παράθυρα πλαίσιο (GPT-4: 128K μάρκες, Claude: 200K μάρκες).
Προβλήματα με μακροχρόνιο πλαίσιο:
Όταν τα μεγάλα συμφραζόμενα βγάζουν νόημα:
Όταν RAG έχει νόημα:
Βέλτιστη πρακτική: Χρησιμοποιήστε τις ΚΓΠΕ για να επιλέξετε το πιο σχετικό περιεχόμενο και στη συνέχεια να χρησιμοποιήσετε μακρύ πλαίσιο για το εν λόγω υποσύνολο.
Λίγες-shot ώθηση (δινώντας παραδείγματα στην προτροπή) είναι μια απλή γραμμή βάσης.
Επείγον παράδειγμα:
Examples:
Q: What is Docker?
A: Docker is a containerization platform...
Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...
Q: What is my new question?
A: [LLM generates answer]
Περιορισμοί:
Βελτίωση των ΚΓΠΕ:
Μπορείτε να σκεφτείτε το RAG ως "αυτόματη λίγες στιγμές ώθησης σε κλίμακα."
Μπορείτε να συνδυάσετε RAG με την παραδοσιακή αναζήτηση πλήρους κειμένου χρησιμοποιώντας αμοιβαία Rank Fusion (RRF).
Γιατί υβριδικό;
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
// Run both searches in parallel
var semanticTask = SemanticSearchAsync(query, limit: 20);
var keywordTask = KeywordSearchAsync(query, limit: 20);
await Task.WhenAll(semanticTask, keywordTask);
var semanticResults = await semanticTask;
var keywordResults = await keywordTask;
// Combine using Reciprocal Rank Fusion
return ApplyRRF(semanticResults, keywordResults);
}
private List<SearchResult> ApplyRRF(
List<SearchResult> list1,
List<SearchResult> list2,
int k = 60)
{
var scores = new Dictionary<string, double>();
// Score from first list
for (int i = 0; i < list1.Count; i++)
{
var id = list1[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Score from second list
for (int i = 0; i < list2.Count; i++)
{
var id = list2[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Merge and sort by combined score
var allResults = list1.Concat(list2)
.GroupBy(r => r.Id)
.Select(g => g.First())
.OrderByDescending(r => scores[r.Id])
.ToList();
return allResults;
}
Τώρα που καταλαβαίνετε τι είναι RAG, από πού προήλθε, και πώς συγκρίνεται με εναλλακτικές λύσεις, εδώ είναι ο λόγος που έχει σημασία:
1. Δημοκρατισμός της AI
2. Πρακτική ακρίβεια
3. Πάντα Up-to-Date
4. Απόρρητο και έλεγχος
5. Ελαττωματικό κόστος
6. Ευέλικτες Εφαρμογές
Εντοπίσαμε την εξέλιξη του RAG:
Βασικές ιδέες από το Μέρος 1:
Το μοντέλο των τριών βημάτων:
Όλα τα άλλα είναι βελτιστοποίηση.
Τώρα καταλαβαίνεις. Τι είναι αυτό; Οι ΚΓΠΕ είναι, Γιατί; έχει σημασία, και όπου Αλλά πώς λειτουργεί κάτω από την κουκούλα;
Το Μέρος 2: RAG Αρχιτεκτονική και Εσωτερικά, θα βουτήξουμε βαθιά στις τεχνικές λεπτομέρειες:
Πλήρης αγωγός RAG:
Εσωτερικά LLM:
Τεχνικές βαθιές καταδύσεις:
Συνέχεια στο Μέρος 2: Αρχιτεκτονική και Εσωτερικά →
Μετά το Μέρος 2, θα είστε έτοιμοι για το Μέρος 3, όπου θα χτίσουμε πραγματικά συστήματα, θα λύσουμε κοινές προκλήσεις, και θα εξερευνήσουμε προηγμένες τεχνικές όπως το HyDE, το multi-query RAG και το πλαίσιο συμπίεσης.
Ιδρυτικές εφημερίδες:
Περαιτέρω ανάγνωση:
Επόμενος σε αυτή τη σειρά:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.