Skip to content

Commit

Permalink
Lightspeed core architecture
Browse files Browse the repository at this point in the history
  • Loading branch information
tisnik committed Feb 9, 2025
1 parent 37c3295 commit 73debaa
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
Binary file added docs/lightspeed_core_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 86 additions & 0 deletions docs/lightspeed_core_architecture.uml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
//
// vim:syntax=plantuml
//

// Generate PNG image with architecture diagram by using the following command:
// java -jar plantuml.jar architecture_diagram.uml
//
// Generate SVG drawing with architecture diagram by using the following command:
// java -jar plantuml.jar -tsvg architecture_diagram.uml

@startuml
skin rose

header Architecture diagram for LightSpeed core
footer Copyright © 2025 Red Hat, Inc. Author: Pavel Tisnovsky

collections "Configuration" as configuration

package "LightSpeed core" as ols {
component "Quota checker" as quota_checker
component "FastAPI HTTP server" as http
component "Auth. check" as auth
component "Query handler" as handler
component "History" as history
component "Redactor" as redactor
component "Question\nvalidator" as question_validator
component "Document\nsummarizer" as document_summarizer
component "LLM providers registry" as llm_register
component "Configuration loader" as config_loader
http -> auth
auth -> handler
handler -d-> redactor
handler -d-> history
handler -d-> question_validator
handler -d-> document_summarizer
question_validator --> llm_register
document_summarizer --> llm_register
llm_register -[hidden]> config_loader
}

component "User data collector" as collector

collections "Agent\nAPI" as agent_api
collections "RAG\ninterface" as rag_interface
document_summarizer -[hidden]> rag_interface
database "RAG\ndatabase" as rag
database "Conversation\ncache" as cache
collections "LLM\ninterface" as llm_interface
component "LLM" as llm
collections "Auth.modules" as auth_modules
collections "Cache\ninterface" as cache_interface
database "Transcripts" as transcripts
document_summarizer -d-> rag_interface
rag_interface --> rag
history --> cache_interface : unified cache interface
cache_interface --> cache : configured cache\nimplementation
llm_register --> llm_interface : call LLM
llm_interface --> llm : call selected LLM
handler -> transcripts
handler --> quota_checker
transcripts -> collector
component "Metrics"
handler --> agent_api
component "Agent#1" as agent_1
component "Agent#2" as agent_2
agent_api --> agent_1
agent_api --> agent_2

auth -u-> auth_modules : "call selected authentication\nmodule to retrieve\nuser ID and user name"

collections "Flow control" as flow_control
configuration -u-> config_loader
flow_control -u-> config_loader

package "Red Hat VPN" {
[Ingress] as ingress
[Pipeline] as pipeline
database "Ceph\nbucket" as ceph
ingress --> pipeline : tarball
pipeline --> ceph : tarball
}

collector -> ingress
http -u-> Metrics : "expose metrics"

@enduml

0 comments on commit 73debaa

Please sign in to comment.