Dựng trợ lý AI nội bộ trả lời câu hỏi về quy trình công ty (Slack/Telegram + RAG)
Tóm tắt
Kiến trúc: tài liệu nội bộ → chia đoạn + embedding → vector store; câu hỏi từ Slack/Telegram → tìm đoạn liên quan → Claude trả lời kèm link nguồn, không thấy thì nói không biết. Làm được bằng n8n hoặc vài trăm dòng code. Quan trọng nhất là phân quyền và cập nhật tài liệu.
“Quy trình xin nghỉ phép thế nào?”, “Môi trường staging deploy ở đâu?”, “Template báo giá mới nhất nằm đâu?” — những câu hỏi lặp lại này tiêu tốn thời gian của người trả lời lẫn người hỏi. Một trợ lý AI nội bộ trả lời dựa trên tài liệu công ty, ngay trong Slack hoặc Telegram, là một trong những ứng dụng AI có ROI rõ nhất. Bài này trình bày kiến trúc RAG, các quyết định thiết kế quan trọng và lộ trình triển khai 3 bước.
Kiến trúc tổng quan (RAG)
NẠP TÀI LIỆU (định kỳ)
Confluence / Google Drive / Notion / file nội bộ
→ làm sạch, chia đoạn (chunk)
→ (tuỳ chọn) thêm ngữ cảnh cho từng đoạn
→ tạo embedding + chỉ mục từ khoá → vector store (pgvector, Qdrant…)
TRẢ LỜI (mỗi câu hỏi)
Câu hỏi từ Slack/Telegram
→ tìm top-k đoạn liên quan (lọc theo quyền của người hỏi)
→ Claude trả lời CHỈ dựa trên các đoạn tìm được + kèm link nguồn
→ không thấy trong nguồn → nói "chưa có tài liệu"
→ ghi log câu hỏi chưa trả lời được → backlog cập nhật tài liệu
RAG (Retrieval-Augmented Generation) nghĩa là: trước khi model trả lời, hệ thống tìm những đoạn tài liệu liên quan và đưa vào prompt. Model trả lời dựa trên tài liệu của bạn thay vì “kiến thức chung”.
Có cần RAG không?
Anthropic gợi ý: nếu toàn bộ kho tài liệu nhỏ (dưới khoảng 200.000 token, tương đương vài trăm trang), có thể đưa nguyên kho vào prompt kết hợp prompt caching — đơn giản hơn nhiều so với dựng RAG. Phần đọc cache có giá chỉ bằng một phần nhỏ giá input thường. Khi kho tài liệu lớn hơn, mới cần tới retrieval.
Làm retrieval tốt hơn: Contextual Retrieval
Vấn đề kinh điển của RAG: một đoạn bị cắt ra khỏi tài liệu sẽ mất ngữ cảnh — ví dụ đoạn “doanh thu tăng 3%” không nói là công ty nào, quý nào. Kỹ thuật Contextual Retrieval của Anthropic thêm một câu ngữ cảnh ngắn (do model sinh) vào đầu mỗi đoạn trước khi tạo embedding và chỉ mục BM25. Kết quả Anthropic công bố:
| Kỹ thuật | Giảm tỉ lệ truy xuất thất bại |
|---|---|
| Contextual embeddings | 35% |
| Contextual embeddings + Contextual BM25 | 49% |
| Thêm bước reranking | tới 67% |
Chi phí sinh ngữ cảnh cho từng đoạn được giảm mạnh nhờ prompt caching (cache nguyên tài liệu, chỉ đổi đoạn cần mô tả).
Các quyết định thiết kế quan trọng
| Vấn đề | Khuyến nghị |
|---|---|
| Phân quyền | Gắn metadata quyền (phòng ban, cấp bậc) cho từng đoạn; lọc trước khi đưa vào prompt — không dựa vào việc dặn model “đừng tiết lộ” |
| Bịa câu trả lời | System prompt: chỉ trả lời từ nguồn được cung cấp; không có thì nói “chưa có tài liệu” và gợi ý người liên hệ |
| Tài liệu cũ | Đồng bộ định kỳ; hiển thị ngày cập nhật của nguồn trong câu trả lời |
| Dữ liệu nhạy cảm | Loại lương, hồ sơ nhân sự, dữ liệu khách hàng khỏi kho dùng chung |
| Trích nguồn | Mọi câu trả lời kèm link tài liệu gốc để người dùng tự kiểm chứng |
| Đo hiệu quả | Nút 👍/👎, tỉ lệ câu hỏi không trả lời được, top câu hỏi lặp lại |
Prompt hệ thống mẫu
Bạn là trợ lý nội bộ của công ty, trả lời câu hỏi về quy trình và tài liệu.
- Chỉ dùng thông tin trong bên dưới. Không dùng kiến thức bên ngoài.
- Nếu tài liệu không đủ để trả lời, nói rõ "Chưa có tài liệu về việc này"
và gợi ý hỏi phòng ban phụ trách.
- Cuối câu trả lời, liệt kê link nguồn đã dùng kèm ngày cập nhật.
- Trả lời ngắn gọn, dạng gạch đầu dòng nếu có nhiều bước.
Lộ trình 3 bước
- MVP (2–3 tuần): một phòng ban, 20–50 tài liệu, một kênh Slack. Làm bằng n8n (AI Agent + vector store) hoặc vài trăm dòng code.
- Đo 2 tuần: câu hỏi nào lặp lại nhiều, câu nào trả lời sai, câu nào không có tài liệu → đó chính là backlog cập nhật tài liệu.
- Mở rộng: thêm nguồn, thêm phân quyền theo phòng ban, gắn vào quy trình onboarding nhân viên mới.
Áp dụng thế nào?
- Dev: Bắt đầu bằng cách đưa nguyên bộ tài liệu nhỏ vào prompt có cache; chỉ dựng vector store khi kho vượt ngưỡng. Khi dựng RAG, thử Contextual Retrieval + reranking trước khi đổi model.
- Tech Lead: Thiết kế phân quyền ngay từ đầu — sửa sau rất tốn kém và rủi ro rò rỉ thông tin là có thật.
- PM / HR / Ops: Danh sách “câu hỏi chưa trả lời được” là tài sản quý: nó cho biết tài liệu nào đang thiếu. Giao người chịu trách nhiệm xử lý backlog này hằng tuần.