243 lines
5.4 KiB
Markdown
243 lines
5.4 KiB
Markdown
# 5.RAG-Chat-Application-Playbook.md
|
||
|
||
> Tài liệu này mô tả **tầng RAG Chat** xây dựng trên Search (file 4). Mục tiêu là:
|
||
> - Giúp **AI trả lời đúng – có dẫn chứng – không hallucinate**
|
||
> - Giúp **người dùng cuối dễ hiểu, dễ tin, dễ dùng**
|
||
> - Có thể dùng làm **tài liệu tham khảo khi soạn Hướng dẫn sử dụng (User Guide)**
|
||
>
|
||
> File được viết để **AI agent đọc là triển khai được**, **con người đọc là hiểu và sử dụng được**.
|
||
|
||
---
|
||
|
||
## Mục lục
|
||
1. RAG Chat là gì trong hệ thống này?
|
||
2. Nguyên tắc thiết kế RAG Chat
|
||
3. Kiến trúc tổng thể RAG Chat
|
||
4. Vai trò của Search trong RAG
|
||
5. Luồng xử lý câu hỏi (End‑to‑End)
|
||
6. Prompt Strategy (Quan trọng nhất)
|
||
7. Context Assembly & Citation
|
||
8. Tránh Hallucination & Guardrails
|
||
9. Trải nghiệm người dùng (UX Guidelines)
|
||
10. Các chế độ Chat khuyến nghị
|
||
11. Permission propagation
|
||
12. Logging & Explainability
|
||
13. Checklist triển khai & Checklist hướng dẫn sử dụng
|
||
|
||
---
|
||
|
||
## 1. RAG Chat là gì trong hệ thống này?
|
||
|
||
**RAG (Retrieval‑Augmented Generation)** = AI **KHÔNG tự nghĩ**, mà:
|
||
1. Tìm dữ liệu liên quan trong hệ thống Search
|
||
2. Chỉ dùng dữ liệu đó để trả lời
|
||
3. Luôn nói rõ **lấy thông tin từ đâu**
|
||
|
||
Trong hệ thống này:
|
||
- ❌ Chat **không** thay thế Search
|
||
- ✅ Chat **dựa hoàn toàn trên Search**
|
||
|
||
---
|
||
|
||
## 2. Nguyên tắc thiết kế RAG Chat
|
||
|
||
1. **Search‑first, LLM‑second**
|
||
2. **Không có dữ liệu → không trả lời**
|
||
3. **Trả lời = Nội dung + Dẫn chứng**
|
||
4. **Ngôn ngữ rõ ràng, không học thuật thừa**
|
||
5. **Người dùng luôn có thể click mở tài liệu gốc**
|
||
|
||
---
|
||
|
||
## 3. Kiến trúc tổng thể RAG Chat
|
||
|
||
```text
|
||
User Question
|
||
│
|
||
▼
|
||
Query Understanding
|
||
│
|
||
▼
|
||
Search Layer (OpenSearch)
|
||
│
|
||
├─ Top K chunks (ACL‑aware)
|
||
▼
|
||
Context Assembly
|
||
│
|
||
▼
|
||
LLM (Answer generation)
|
||
│
|
||
▼
|
||
Answer + Citations
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Vai trò của Search trong RAG
|
||
|
||
Search quyết định:
|
||
- AI **được phép biết gì**
|
||
- AI **không được phép bịa gì**
|
||
|
||
Quy tắc:
|
||
- LLM **chỉ được dùng context do Search trả về**
|
||
- Không cho LLM truy cập internet / training data
|
||
|
||
---
|
||
|
||
## 5. Luồng xử lý câu hỏi (End‑to‑End)
|
||
|
||
```text
|
||
[User hỏi]
|
||
↓
|
||
[Normalize câu hỏi]
|
||
↓
|
||
[Hybrid Search (keyword + vector)]
|
||
↓
|
||
[Lọc theo permission user]
|
||
↓
|
||
[Chọn top K chunks]
|
||
↓
|
||
[Build context + citation map]
|
||
↓
|
||
[LLM sinh câu trả lời]
|
||
↓
|
||
[Trả lời + link tài liệu]
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Prompt Strategy (Rất quan trọng)
|
||
|
||
### 6.1 System Prompt (bắt buộc)
|
||
|
||
```text
|
||
Bạn là trợ lý tra cứu tài liệu nội bộ.
|
||
Bạn CHỈ được trả lời dựa trên thông tin được cung cấp trong CONTEXT.
|
||
Nếu CONTEXT không đủ, hãy trả lời:
|
||
"Tôi không tìm thấy thông tin trong các tài liệu hiện có."
|
||
Mỗi câu trả lời phải kèm theo nguồn trích dẫn.
|
||
```
|
||
|
||
---
|
||
|
||
### 6.2 User Prompt Template
|
||
|
||
```text
|
||
CÂU HỎI:
|
||
{{user_question}}
|
||
|
||
CONTEXT:
|
||
{{retrieved_chunks}}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.3 Output Format (khuyến nghị)
|
||
|
||
```text
|
||
TRẢ LỜI NGẮN GỌN:
|
||
...
|
||
|
||
CHI TIẾT:
|
||
...
|
||
|
||
NGUỒN THAM KHẢO:
|
||
- Tài liệu A – trang 5
|
||
- Tài liệu B – trang 12
|
||
```
|
||
|
||
➡️ Format này **rất phù hợp để đưa vào User Guide**.
|
||
|
||
---
|
||
|
||
## 7. Context Assembly & Citation
|
||
|
||
### 7.1 Context Assembly
|
||
- Giữ đúng thứ tự logic
|
||
- Không quá dài (token budget)
|
||
- Mỗi chunk có ID và nguồn
|
||
|
||
### 7.2 Citation Object
|
||
|
||
```json
|
||
{
|
||
"chunk_id": "...",
|
||
"file_name": "...",
|
||
"page": 7,
|
||
"url": "..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Tránh Hallucination & Guardrails
|
||
|
||
✅ BẮT BUỘC:
|
||
- Nếu không có chunk phù hợp → không trả lời
|
||
- Không "suy luận thêm" ngoài context
|
||
|
||
✅ Câu trả lời chuẩn khi không đủ dữ liệu:
|
||
> "Hiện tại tôi không tìm thấy thông tin trong các tài liệu nội bộ để trả lời câu hỏi này."
|
||
|
||
---
|
||
|
||
## 9. Trải nghiệm người dùng (UX Guidelines)
|
||
|
||
### 9.1 Người dùng nên cảm nhận gì?
|
||
- AI **đáng tin**
|
||
- Nói **giống đồng nghiệp biết tài liệu**, không giống chatbot chung chung
|
||
|
||
### 9.2 UX khuyến nghị
|
||
- Mỗi đoạn trả lời có nút "Mở tài liệu"
|
||
- Highlight đoạn liên quan trong PDF
|
||
|
||
---
|
||
|
||
## 10. Các chế độ Chat khuyến nghị
|
||
|
||
| Mode | Mô tả | Đối tượng |
|
||
|----|------|----------|
|
||
| Tra cứu nhanh | Trả lời ngắn + link | Nhân viên |
|
||
| Giải thích | Có diễn giải | Đào tạo |
|
||
| So sánh | So nhiều tài liệu | Quản lý |
|
||
|
||
---
|
||
|
||
## 11. Permission Propagation
|
||
|
||
Nguyên tắc:
|
||
- Chat **không trả về thứ Search không trả**
|
||
- Không lộ tên file tồn tại nếu user không có quyền
|
||
|
||
---
|
||
|
||
## 12. Logging & Explainability
|
||
|
||
Lưu lại:
|
||
- Question
|
||
- Retrieved chunks
|
||
- Answer
|
||
- Citation
|
||
|
||
➡️ Phục vụ audit, cải tiến prompt, training nội bộ
|
||
|
||
---
|
||
|
||
## 13. Checklist triển khai & Checklist hướng dẫn sử dụng
|
||
|
||
### 13.1 Checklist kỹ thuật
|
||
✅ Search trước Chat
|
||
✅ Prompt chặt chẽ
|
||
✅ Citation bắt buộc
|
||
✅ Permission end‑to‑end
|
||
|
||
### 13.2 Checklist cho User Guide
|
||
✅ Giải thích AI làm gì / không làm gì
|
||
✅ Hướng dẫn đọc citation
|
||
✅ Cách phản hồi khi AI không tìm thấy dữ liệu
|
||
|
||
---
|
||
|
||
*Kết thúc RAG Chat Playbook. Đây là tầng trên cùng của hệ thống.*
|