| | <!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"> |
| | |
| | <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> |
| |
|
| | |
| | <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> |
| |
|
| | |
| | <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"> |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| | |
| | |
| | <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> |
| |
|
| | |
| | <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> |
| |
|
| | |
| | <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> |
| |
|
| | |
| | <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 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>© 2023 Chatbot Architecture. All rights reserved.</p> |
| | </div> |
| | </div> |
| | </footer> |
| |
|
| | <script> |
| | |
| | AOS.init({ |
| | duration: 1000, |
| | once: true |
| | }); |
| | |
| | |
| | feather.replace(); |
| | |
| | |
| | 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> |
| |
|