vithacocf's picture
Kiến trúc Hệ thống Chatbot Multi-Tenant với Dynamic Routing & RAG
856e273 verified
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kiến trúc Hệ thống Chatbot Multi-Tenant</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Inter', sans-serif;
scroll-behavior: smooth;
}
.hero-gradient {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.section-gradient {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
.architecture-diagram {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
}
.process-step {
transition: all 0.3s ease;
}
.process-step:hover {
transform: scale(1.05);
}
</style>
</head>
<body class="bg-gray-50">
<!-- Hero Section -->
<section id="hero" class="min-h-screen flex items-center justify-center relative overflow-hidden">
<div id="vanta-bg" class="absolute inset-0 z-0"></div>
<div class="container mx-auto px-6 py-20 relative z-10">
<div class="text-center text-white" data-aos="fade-down" data-aos-duration="1000">
<h1 class="text-4xl md:text-6xl font-bold mb-6">Kiến trúc Hệ thống Chatbot Multi-Tenant</h1>
<p class="text-xl md:text-2xl mb-8">Dynamic Routing & RAG Integration</p>
<div class="flex justify-center gap-4">
<a href="#architecture" class="bg-white text-purple-700 px-6 py-3 rounded-lg font-semibold hover:bg-gray-100 transition">Xem Kiến trúc</a>
<a href="#features" class="border-2 border-white text-white px-6 py-3 rounded-lg font-semibold hover:bg-white hover:text-purple-700 transition">Tính năng</a>
</div>
</div>
</div>
</section>
<!-- System Goals Section -->
<section id="goals" class="py-20 bg-white">
<div class="container mx-auto px-6">
<div class="text-center mb-16" data-aos="fade-up">
<h2 class="text-3xl md:text-4xl font-bold text-gray-800 mb-4">Mục tiêu Hệ thống</h2>
<p class="text-xl text-gray-600">Hỗ trợ Multi-Tenant với khả năng cấu hình động mạnh mẽ</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="feature-card bg-gray-50 p-8 rounded-xl shadow-md border border-gray-100" data-aos="fade-up" data-aos-delay="100">
<div class="text-blue-500 mb-4">
<i data-feather="settings" class="w-12 h-12"></i>
</div>
<h3 class="text-xl font-semibold mb-3">Cấu hình Động</h3>
<p class="text-gray-600">Thêm/sửa topic, intent, prompt, backend mà không cần deploy lại hệ thống</p>
</div>
<div class="feature-card bg-gray-50 p-8 rounded-xl shadow-md border border-gray-100" data-aos="fade-up" data-aos-delay="200">
<div class="text-green-500 mb-4">
<i data-feather="database" class="w-12 h-12"></i>
</div>
<h3 class="text-xl font-semibold mb-3">RAG Integration</h3>
<p class="text-gray-600">Truy xuất dữ liệu từ API backend và knowledge base nội bộ</p>
</div>
<div class="feature-card bg-gray-50 p-8 rounded-xl shadow-md border border-gray-100" data-aos="fade-up" data-aos-delay="300">
<div class="text-purple-500 mb-4">
<i data-feather="archive" class="w-12 h-12"></i>
</div>
<h3 class="text-xl font-semibold mb-3">Logging & Analytics</h3>
<p class="text-gray-600">Lưu trữ đầy đủ session & message logs để training và phân tích</p>
</div>
</div>
</div>
</section>
<!-- Architecture Overview -->
<section id="architecture" class="py-20 architecture-diagram text-white">
<div class="container mx-auto px-6">
<div class="text-center mb-16" data-aos="fade-up">
<h2 class="text-3xl md:text-4xl font-bold mb-4">Kiến trúc Tổng thể</h2>
<p class="text-xl">Dynamic Routing & Multi-Tenant Architecture</p>
</div>
<div class="relative" data-aos="zoom-in">
<div class="grid grid-cols-1 md:grid-cols-5 gap-6 items-center">
<!-- Tenants -->
<div class="bg-white/20 p-6 rounded-lg text-center backdrop-blur-sm">
<i data-feather="users" class="w-10 h-10 mx-auto mb-4"></i>
<h3 class="font-semibold">Tenants</h3>
<p class="text-sm mt-2">Khách hàng/Tổ chức</p>
</div>
<!-- Arrow -->
<div class="hidden md:flex justify-center">
<i data-feather="arrow-right" class="w-8 h-8"></i>
</div>
<div class="md:hidden flex justify-center py-4">
<i data-feather="arrow-down" class="w-8 h-8"></i>
</div>
<!-- Dynamic Router -->
<div class="bg-white/20 p-6 rounded-lg text-center backdrop-blur-sm">
<i data-feather="navigation" class="w-10 h-10 mx-auto mb-4"></i>
<h3 class="font-semibold">Dynamic Router</h3>
<p class="text-sm mt-2">Topic Mapping</p>
</div>
<!-- Arrow -->
<div class="hidden md:flex justify-center">
<i data-feather="arrow-right" class="w-8 h-8"></i>
</div>
<div class="md:hidden flex justify-center py-4">
<i data-feather="arrow-down" class="w-8 h-8"></i>
</div>
<!-- RAG/APIs Layer -->
<div class="bg-white/20 p-6 rounded-lg text-center backdrop-blur-sm">
<i data-feather="layers" class="w-10 h-10 mx-auto mb-4"></i>
<h3 class="font-semibold">RAG/APIs Layer</h3>
<p class="text-sm mt-2">Data Retrieval</p>
</div>
<!-- Arrow -->
<div class="hidden md:flex justify-center">
<i data-feather="arrow-right" class="w-8 h-8"></i>
</div>
<div class="md:hidden flex justify-center py-4">
<i data-feather="arrow-down" class="w-8 h-8"></i>
</div>
<!-- Post-Processing -->
<div class="bg-white/20 p-6 rounded-lg text-center backdrop-blur-sm">
<i data-feather="cpu" class="w-10 h-10 mx-auto mb-4"></i>
<h3 class="font-semibold">Post-Processing</h3>
<p class="text-sm mt-2">Data Formatting</p>
</div>
<!-- Arrow -->
<div class="hidden md:flex justify-center">
<i data-feather="arrow-right" class="w-8 h-8"></i>
</div>
<div class="md:hidden flex justify-center py-4">
<i data-feather="arrow-down" class="w-8 h-8"></i>
</div>
<!-- AI Interaction -->
<div class="bg-white/20 p-6 rounded-lg text-center backdrop-blur-sm">
<i data-feather="message-circle" class="w-10 h-10 mx-auto mb-4"></i>
<h3 class="font-semibold">AI Interaction</h3>
<p class="text-sm mt-2">User Output</p>
</div>
</div>
</div>
</div>
</section>
<!-- Key Components -->
<section id="components" class="py-20 bg-gray-50">
<div class="container mx-auto px-6">
<div class="text-center mb-16" data-aos="fade-up">
<h2 class="text-3xl md:text-4xl font-bold text-gray-800 mb-4">Thành phần Chính</h2>
<p class="text-xl text-gray-600">Các module cốt lõi của hệ thống</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="100">
<div class="flex items-center mb-4">
<div class="bg-blue-100 p-3 rounded-lg">
<i data-feather="user-check" class="w-6 h-6 text-blue-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Tenants</h3>
</div>
<p class="text-gray-600">Đại diện cho khách hàng hoặc tổ chức sử dụng hệ thống với cấu hình riêng biệt</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="150">
<div class="flex items-center mb-4">
<div class="bg-green-100 p-3 rounded-lg">
<i data-feather="folder" class="w-6 h-6 text-green-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Topics</h3>
</div>
<p class="text-gray-600">Chức năng hoặc chủ đề chatbot xử lý với config endpoint, intents, prompts</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="200">
<div class="flex items-center mb-4">
<div class="bg-purple-100 p-3 rounded-lg">
<i data-feather="navigation" class="w-6 h-6 text-purple-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Router Configs</h3>
</div>
<p class="text-gray-600">Xác định routing logic và mapping intent → backend với confidence threshold</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="250">
<div class="flex items-center mb-4">
<div class="bg-yellow-100 p-3 rounded-lg">
<i data-feather="cpu" class="w-6 h-6 text-yellow-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Agent Configs</h3>
</div>
<p class="text-gray-600">Cấu hình model AI với llm_provider, llm_model, system_prompt và parameters</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="300">
<div class="flex items-center mb-4">
<div class="bg-red-100 p-3 rounded-lg">
<i data-feather="git-merge" class="w-6 h-6 text-red-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Pipeline</h3>
</div>
<p class="text-gray-600">Retriever → LLM → Post-processor workflow để xử lý và format dữ liệu</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-md" data-aos="fade-up" data-aos-delay="350">
<div class="flex items-center mb-4">
<div class="bg-indigo-100 p-3 rounded-lg">
<i data-feather="database" class="w-6 h-6 text-indigo-600"></i>
</div>
<h3 class="text-lg font-semibold ml-4">Sessions & Logs</h3>
</div>
<p class="text-gray-600">Quản lý session và lưu trữ hội thoại, entity, intent, response time</p>
</div>
</div>
</div>
</section>
<!-- Process Flow -->
<section id="process" class="py-20 bg-white">
<div class="container mx-auto px-6">
<div class="text-center mb-16" data-aos="fade-up">
<h2 class="text-3xl md:text-4xl font-bold text-gray-800 mb-4">Quy trình Xử lý Yêu cầu</h2>
<p class="text-xl text-gray-600">7 bước xử lý từ request đến response</p>
</div>
<div class="grid md:grid-cols-7 gap-4">
<div class="process-step bg-blue-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="100">
<div class="bg-blue-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">1</span>
</div>
<h3 class="font-semibold text-sm mb-1">Nhận Request</h3>
<p class="text-xs text-gray-600">POST/GET API</p>
</div>
<div class="process-step bg-green-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="150">
<div class="bg-green-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">2</span>
</div>
<h3 class="font-semibold text-sm mb-1">Xác định Tenant + Topic</h3>
<p class="text-xs text-gray-600">Load config</p>
</div>
<div class="process-step bg-purple-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="200">
<div class="bg-purple-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">3</span>
</div>
<h3 class="font-semibold text-sm mb-1">Routing & Intent Detection</h3>
<p class="text-xs text-gray-600">AI + Rule-based</p>
</div>
<div class="process-step bg-yellow-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="250">
<div class="bg-yellow-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">4</span>
</div>
<h3 class="font-semibold text-sm mb-1">RAG Pipeline</h3>
<p class="text-xs text-gray-600">Retriever → LLM</p>
</div>
<div class="process-step bg-red-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="300">
<div class="bg-red-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">5</span>
</div>
<h3 class="font-semibold text-sm mb-1">Post-processing</h3>
<p class="text-xs text-gray-600">Format kết quả</p>
</div>
<div class="process-step bg-indigo-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="350">
<div class="bg-indigo-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">6</span>
</div>
<h3 class="font-semibold text-sm mb-1">AI Interaction</h3>
<p class="text-xs text-gray-600">Follow-up QA</p>
</div>
<div class="process-step bg-gray-50 p-4 rounded-lg text-center" data-aos="fade-up" data-aos-delay="400">
<div class="bg-gray-500 text-white rounded-full w-10 h-10 flex items-center justify-center mx-auto mb-2">
<span class="font-bold">7</span>
</div>
<h3 class="font-semibold text-sm mb-1">Ghi log</h3>
<p class="text-xs text-gray-600">Sessions + message_logs</p>
</div>
</div>
</div>
</section>
<!-- Benefits Section -->
<section id="benefits" class="py-20 section-gradient text-white">
<div class="container mx-auto px-6">
<div class="text-center mb-16" data-aos="fade-up">
<h2 class="text-3xl md:text-4xl font-bold mb-4">Ưu điểm Kiến trúc</h2>
<p class="text-xl">Dynamic, Multi-Tenant, Scalable & RAG-ready</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="100">
<i data-feather="refresh-cw" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">Dynamic & Config-driven</h3>
<p>Thêm topic/intent/backend mà không cần deploy lại hệ thống</p>
</div>
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="200">
<i data-feather="users" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">Multi-tenant</h3>
<p>Mỗi tenant có thể chọn model & pipeline riêng biệt</p>
</div>
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="300">
<i data-feather="server" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">Multi-backend</h3>
<p>Một topic có thể gọi nhiều hệ thống backend khác nhau</p>
</div>
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="400">
<i data-feather="database" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">RAG-ready</h3>
<p>Dễ dàng tích hợp knowledge base và vector search</p>
</div>
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="500">
<i data-feather="trending-up" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">Scalable</h3>
<p>Mở rộng nhiều agent & pipeline phức tạp</p>
</div>
<div class="bg-white/10 p-6 rounded-xl backdrop-blur-sm" data-aos="fade-up" data-aos-delay="600">
<i data-feather="git-branch" class="w-10 h-10 mb-4"></i>
<h3 class="text-xl font-semibold mb-3">Version Control</h3>
<p>Prompts & config có thể versioned và quản lý</p>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="bg-gray-900 text-white py-12">
<div class="container mx-auto px-6">
<div class="text-center">
<h3 class="text-2xl font-bold mb-4">Kiến trúc Hệ thống Chatbot Multi-Tenant</h3>
<p class="text-gray-400 mb-6">Dynamic Routing & RAG Integration</p>
<div class="flex justify-center space-x-4">
<a href="#" class="text-gray-400 hover:text-white transition">
<i data-feather="github" class="w-6 h-6"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition">
<i data-feather="twitter" class="w-6 h-6"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white transition">
<i data-feather="linkedin" class="w-6 h-6"></i>
</a>
</div>
</div>
<div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-400">
<p>&copy; 2023 Chatbot Architecture. All rights reserved.</p>
</div>
</div>
</footer>
<script>
// Initialize AOS
AOS.init({
duration: 1000,
once: true
});
// Initialize Feather Icons
feather.replace();
// Initialize Vanta.js
VANTA.GLOBE({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x3f51b5,
backgroundColor: 0x0
});
</script>
</body>
</html>