EA - Architektura referencyjna dla systemu Retrieval-Augmented Generation (RAG)

 Współczesne aplikacje AI coraz częściej wykorzystują koncepcję Retrieval-Augmented Generation (RAG) — połączenie mechanizmów wyszukiwania dokumentów z generatywnymi modelami językowymi (LLM).

Pozwala to tworzyć bardziej aktualne i wiarygodne odpowiedzi bez konieczności trenowania modeli na każdym nowym zbiorze danych.

W tym artykule przedstawię prostą referencyjną architekturę RAG, a także gotowy plik Structurizr DSL, dzięki któremu szybko wygenerujesz diagramy systemowe.



Główne komponenty systemu RAG

  • User Interface (UI) – aplikacja webowa lub mobilna dla użytkownika końcowego.

  • API Gateway – komponent obsługujący zapytania i zapewniająca bezpieczeństwo ruchu.

  • Orchestrator Service – moduł łączący zapytania do retrievera i LLM-a.

  • Retriever Service – odpowiedzialny za wyszukiwanie odpowiednich dokumentów.

  • LLM Service – model językowy generujący odpowiedzi w oparciu o dokumenty.

  • Document Database – baza danych dokumentów źródłowych.

  • Monitoring & Logging – infrastruktura monitoringu, alertowania i zbierania logów.

Schemat przepływu danych


[User] → [UI] → [API Gateway] → [Orchestrator Service] ↙ ↘ [Retriever Service] [LLM Service] ↓ ↓ [Document Database] [Monitoring Stack]

Structurizr DSL — pełny plik architektury

Poniżej znajdziesz kompletny plik .dsl, który możesz zaimportować np. do Structurizr Lite:


workspace { model { user = person "User" { description "Korzysta z aplikacji do wyszukiwania informacji i generowania odpowiedzi." } system = softwareSystem "Retrieval-Augmented Generation System" { description "System umożliwiający wyszukiwanie informacji i generowanie odpowiedzi na ich podstawie." ui = container "User Interface (UI)" { description "Interfejs webowy lub mobilny." technology "React / Angular / Flutter" } apiGateway = container "API Gateway" { description "Przyjmuje zapytania użytkownika, zarządza autoryzacją i ruchem." technology "NGINX / Kong" } orchestrator = container "Orchestrator Service" { description "Koordynuje przepływ danych między Retrieverem i LLM." technology "Spring Boot / Node.js" } retriever = container "Retriever Service" { description "Wyszukuje dokumenty w bazie danych." technology "Elasticsearch / Pinecone" } llmService = container "LLM Service" { description "Model językowy generujący odpowiedzi." technology "OpenAI API / Huggingface Model" } documentDB = container "Document Database" { description "Baza danych dokumentów." technology "PostgreSQL / MongoDB" } monitoring = container "Monitoring & Logging" { description "System do monitorowania i zbierania logów." technology "Prometheus + Grafana + ELK Stack" } user -> ui "Używa" "HTTPS" ui -> apiGateway "Wysyła zapytania" "HTTPS" apiGateway -> orchestrator "Przekazuje zapytanie" "HTTP/gRPC" orchestrator -> retriever "Pobiera dokumenty" "gRPC/REST" retriever -> documentDB "Zapytanie o dokumenty" "SQL/NoSQL" orchestrator -> llmService "Generuje odpowiedź" "HTTP/gRPC" orchestrator -> monitoring "Wysyła metryki" "Prometheus Exporter" llmService -> monitoring "Wysyła logi" "Logstash" } deploymentEnvironment "Production" { deploymentNode "Kubernetes Cluster" { deploymentNode "Namespace: rag-system" { containerInstance ui containerInstance apiGateway containerInstance orchestrator containerInstance retriever containerInstance llmService containerInstance documentDB containerInstance monitoring } } } } views { systemContext system { include user include system autolayout lr } container system { include * autolayout lr } deployment system "Production" { include * autolayout lr } theme default } }

Podsumowanie

Architektura referencyjna dla systemu RAG stanowi świetną bazę dla organizacji, które chcą budować aplikacje oparte o wyszukiwanie + generację treści.
Dzięki gotowym wzorcom i narzędziom takim jak Structurizr DSL, projektowanie systemów staje się szybkie, skalowalne i bardziej przejrzyste.

Komentarze