flowchart TD
%% User / Client
subgraph UserClient["User / Client"]
U["User"]
App["Application / UI"]
end
U -->|ask question / prompt| App
App -->|query| Q["Query Processor"]
%% Online retrieval + generation
subgraph Online["Online: Retrieval & Generation"]
direction TB
Q --> QE["Query Encoder / Embedding Model"]
Q -->|optional textual search| BM25["BM25 / Lexical Search"]
QE -->|query vector| VectorDB["Vector DB"]
BM25 --> Hybrid["Hybrid Retriever (bm25 + dense)"]
VectorDB --> Hybrid
Hybrid --> TopK["Top-K Candidates"]
TopK --> Reranker["Cross-Encoder Reranker"]
Reranker --> ContextAssembler["Context Assembler\n(filter, dedupe, length budget)"]
ContextAssembler --> PromptBuilder["Prompt Builder / Template"]
PromptBuilder --> LLM["LLM (Reader / Generator)"]
LLM -->|answer| AppResponse["Formatted Response"]
AppResponse --> App
end
%% Offline ingestion & indexing
subgraph Offline["Offline: Ingestion & Indexing"]
direction TB
Sources["Data Sources"] --> Chunker["Chunker & Preprocessor\n(clean, OCR, lang-detect)"]
Chunker --> EmbeddingModel["Embedding Model\n(SBERT, text-embedding-3)"]
EmbeddingModel --> VectorDB
Chunker --> MetadataStore["(Metadata Store / DB)"]
MetadataStore --> VectorDB
Chunker --> Indexer["Indexing Scheduler & Updater"]
Indexer --> VectorDB
end
%% Supporting infra
subgraph Support["Supporting Services"]
direction TB
Cache["Result & Embedding Cache"]
Auth["Auth (Rate-limits, RBAC)"]
Monitoring["Monitoring (Logging, Metrics, Tracing)"]
Feedback["User Feedback / Clicks"]
Tools["External Tools / APIs"]
end
%% Connections to supporting infra
TopK --> Cache
Cache --> ContextAssembler
App --> Feedback
Feedback --> Indexer
LLM --> Tools
App --> Auth
Monitoring -.-> App
Monitoring -.-> LLM
Monitoring -.-> VectorDB
(唸”闊拓”) is an open-source (MIT license) scientific and technical publishing system built on 













