# AI Chatbot Architecture

Sơ đồ luồng xử lý thông tin nội bộ — từ lúc nhận request đến khi render kịch bản trả lời

100%
User tin nhắn
Tiếp nhận
Máy chủ FastAPI
Đã hỏi trước?
Cache Layer
MISS → Tiếp tục
Truy xuất ngữ cảnh
Postgres History + Persona
LANGGRAPH LOOP
AI Reasoning
Tool Call?
Cần data
Search DB
API Ext
↩ Lặp ReAct
Streaming Output
SSE Protocol
Background Tasks
Telemetry & DB Sync
Hoàn thành

#### Đầu vào — Nhận tin nhắn từ khách

Khách gửi tin nhắn qua cửa sổ chat trên web hoặc app. Hệ thống nhận được cả chữ lẫn ảnh — ví dụ khách chụp ảnh một chiếc áo và hỏi "có sản phẩm nào giống thế này không?", AI sẽ nhận diện được.

Hệ thống nhận diện khách bằng 2 cách song song:

• Khách đã đăng nhập → biết chính xác là ai (theo User ID)
• Khách vãng lai → nhận diện qua Device ID

Tại sao nhận diện 2 cách?
Nếu chỉ dùng tài khoản → khách chưa đăng nhập không chat được. Nếu chỉ dùng thiết bị → đổi điện thoại là mất hết lịch sử. Phối hợp cả hai giúp bao phủ 100% kịch bản duy trì định danh xuyên suốt.

#### Máy chủ tiếp nhận — I/O Không đồng bộ

Tin nhắn được gửi đến máy chủ FastAPI. Server chạy theo mô hình Async: khi đang chờ LLM phản hồi cho User A, luồng thực thi (thread) được giải phóng để tiếp nhận User B, C, D.

Tại sao quan trọng?
AI API layer tốn từ 2-15 giây để suy nghĩ. Nếu dùng kiến trúc đồng bộ (Sync), API sẽ bị block. Với FastAPI Async, hiệu năng xử lý đồng thời tăng lên gấp nhiều lần mà không nghẽn RAM máy chủ.

#### Kiểm tra Semantic Cache Cost Saving

Hệ thống dùng thuật toán Cosine Similarity check xem câu hỏi hiện hành có khớp với lịch sử vừa hỏi không (Cache Hit).

• Hit (Khớp) → Trả câu trả lời cũ ngay lập tức (0.1 giây), bypass toàn bộ AI.
• Miss (Mới) → Chuyển sang LLM xử lý bình thường.

#### Truy xuất Ngữ Cảnh (Context window)

LLM là stateless (không có trí nhớ). Server phải inject (tiêm) lại 2 luồng data vào prompt text:

1. Short-term (Hội thoại) — 10 tin nhắn gần nhất để duy trì tư duy của cuộc trò chuyện.

2. Long-term (Hồ sơ) — Vector search kéo các notes về sở thích kích cỡ, màu sắc của riêng User ID này.

#### Vòng Lặp ReAct Agent LangGraph Logic

Thay vì chat thẳng 1 chiều, AI đóng vai trò Tác nhân tư duy tự động (Agent). Nó tự suy luận xem cần tra cứu tool nào để trả lời.

#### Kỹ thuật Hybrid Search

Phương thức | Cách hoạt động | ✅ Ưu điểm | ❌ Nhược điểm
--- | --- | --- | ---
Vector (Semantic) | Mã hóa ý nghĩa câu -> Embedding -> Top N | Hiểu từ lóng, mơ hồ ("đi chơi") | Lọc sai giá trị tuyệt đối
Text-to-SQL | LLM viết câu lệnh WHERE price <= 500k | Chính xác 100% dữ liệu cứng | Chịu thua ngôn ngữ cảm xúc

#### Toolset đang gắn cho Agent

Elastic SearchKho sản phẩm DB
Vector RAGTri thức cẩm nang
Voucher DBData khuyến mãi
Realtime StockAPI Tồn kho ERP
Store LocatorChi nhánh gần nhất
Lead MagnetBook lịch tư vấn

#### Streaming Output

Vì vòng lặp Agent có thể tốn tận chục giây, hệ thống bắn tín hiệu Server-Sent Events (SSE) để render văn bản từng chữ một ngay khi AI đang trả lời.

#### Background Tasks Post-response

Lúc User đang đọc chữ, máy chủ xử lý tác vụ nền:

1. Lưu lịch sử DB Postgres

2. Push Telemetry data sang trung tâm đo lường Langfuse

3. Lưu Cache lại câu trả lời vừa sinh.

#### Hoàn tất chặng

Tin nhắn hiển thị hoàn chỉnh ở Frontend cùng các Block Product. Hệ thống standby chờ input tiếp theo.