👋 Chào cả nhà,
Ở quý này, mình tập trung vào một đề bài rất thực tế: Xây dựng một ChatBOT hỗ trợ các câu hỏi hành chính nhân sự, giúp giảm tải cho phòng HCNS và cải thiện trải nghiệm cho nhân viên trong công ty khi cần tra cứu thông tin.
Vấn đề thực tế
Hiện nay, mỗi lần nhân viên hỏi các câu như:
"Thời gian nghỉ phép năm là bao nhiêu ngày?"
"Chế độ bảo hiểm y tế có hỗ trợ khám ở bệnh viện ABC không?"
"Xin mẫu đơn xin nghỉ việc ở đâu?"
… thì các bạn HCNS thường trả lời thủ công, lặp đi lặp lại rất nhiều lần.
==> Chúng ta cần một BOT có thể tự động trả lời các câu hỏi dựa trên nội dung tài liệu chính sách nội bộ.
Giải pháp: RAG BOT + Slack + LLM
BOT sẽ hoạt động như sau:
- Nhân viên gửi câu hỏi trên Slack.
- BOT nhận câu hỏi, phân tích ý định.
- BOT truy vấn tài liệu chính sách (dạng PDF, Docx, Markdown…) qua Vector Database.
- BOT trả về câu trả lời từ LLM, dựa trên context truy xuất được.
Công nghệ sử dụng
Thành phần | Công nghệ |
---|---|
Slack Bot | Bolt (Slack SDK for Python) |
NLP/LLM | OpenAI GPT-4 / Azure OpenAI |
Truy vấn dữ liệu | RAG (Retrieval Augmented Generation) |
Vector Store | FAISS / ChromaDB |
Embedding | OpenAI Embedding / SentenceTransformers |
Tài liệu nguồn | File PDF, Docx, HTML, Markdown nội bộ |
Kiến trúc tổng thể

Demo đoạn code chính
1. Tạo Vector từ tài liệu nội bộ (PDF, DOCX…)
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
# Load documents
loader = DirectoryLoader("./docs", glob="**/*.pdf")
documents = loader.load()
# Chunk data
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = text_splitter.split_documents(documents)
# Convert to vector
embedding = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embedding)
# Save data
vectorstore.save_local("./vectorstore")
2. Xử lý câu hỏi từ Slack và tạo câu trả lời
from slack_bolt import App
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.vectorstores import FAISS
# Load vector store
vectorstore = FAISS.load_local("./vectorstore", OpenAIEmbeddings())
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4", temperature=0.2),
retriever=vectorstore.as_retriever(search_type="similarity", k=3)
)
# Slack Bot Init
app = App(token="SLACK_BOT_TOKEN", signing_secret="SLACK_SIGNING_SECRET")
@app.message(".*")
def handle_message(message, say):
query = message["text"]
response = qa_chain.run(query)
say(response)
if __name__ == "__main__":
app.start(port=3000)
Một số tips thực tế
- Chia nhỏ tài liệu tốt sẽ cải thiện đáng kể chất lượng RAG.
- Với các policy dạng biểu mẫu, nên kết hợp cả URL hoặc file attach.
- Có thể thêm giao diện admin để cập nhật tài liệu mới dễ dàng.
- Tích hợp với Azure OpenAI nếu yêu cầu bảo mật cao.
Roadmap tiếp theo
- MVP với Slack + LLM + FAISS
- Thêm chức năng tạo ticket khi BOT không biết câu trả lời
- Triển khai xác thực phân quyền tài liệu
- Thống kê câu hỏi được hỏi nhiều nhất
Kết luận
BOT hành chính này là một ví dụ thực tế cho ứng dụng của RAG + LLM nội bộ, giúp giảm tải cho các bộ phận back-office và cải thiện trải nghiệm cho toàn bộ công ty.
Anh em team nào cũng có thể bắt đầu ngay với tài liệu của đội mình!
Tài liệu tham khảo
Để mọi người có thể hiểu rõ hơn về các khái niệm và công nghệ sử dụng trong BOT hành chính nhân sự này, mình đã tổng hợp một số tài liệu tham khảo dưới đây:
Retrieval Augmented Generation (RAG)
RAG Paper (Facebook AI)
Giới thiệu mô hình RAG kết hợp truy xuất và sinh văn bản trong NLP.
Blog: What is RAG and Why You Should Care (Pinecone)
Giải thích dễ hiểu về RAG và ứng dụng thực tế.
Large Language Models (LLM)
OpenAI GPT API Docs
Hướng dẫn sử dụng GPT-4 với API.
LangChain Documentation
Framework để xây dựng ứng dụng với LLM + dữ liệu nội bộ.
Vector Database & Embedding
FAISS by Facebook AI
Thư viện tối ưu tìm kiếm vector độ lớn lớn.
Intro to Embeddings – OpenAI
Giải thích cách hoạt động của embedding và cách sử dụng với API.
Slack Bot Development
Slack Bolt for Python (Official Docs)
SDK chính thức để xây dựng Slack Bot.
Build a Slackbot with Python and Bolt
Các dự án tham khảo mã nguồn mở
AI-powered HR FAQ Bot (sample)