- Tác giả
- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
Cách triển khai Semantic Search thực tế với Python + FAISS + Sentence Transformers
1. Giới thiệu
Trong nhiều năm, công cụ tìm kiếm truyền thống (keyword-based search) hoạt động dựa trên việc so khớp chuỗi ký tự — ví dụ, nếu bạn gõ “lập trình viên Python”, hệ thống sẽ tìm các tài liệu chứa đúng cụm từ đó. Tuy nhiên, con người không luôn nói cùng một cách. Một người có thể hỏi “ai viết phần mềm bằng Python?” – dù ý nghĩa tương tự, nhưng các từ khác nhau khiến tìm kiếm truyền thống bỏ sót nhiều kết quả.
Đây chính là lúc Semantic Search (tìm kiếm ngữ nghĩa) xuất hiện.
2. Semantic Search là gì?
Semantic Search là kỹ thuật giúp máy tính hiểu ý nghĩa (semantics) của câu truy vấn và nội dung tài liệu, thay vì chỉ so sánh ký tự. Thay vì tìm kiếm “keyword giống nhau”, Semantic Search tìm kiếm “ý nghĩa tương tự nhau”.
Công nghệ này sử dụng Embedding vectors (vector biểu diễn) — biến câu, đoạn văn, hoặc tài liệu thành vector số học, rồi đo độ tương đồng (cosine similarity) giữa các vector để xác định mức độ liên quan.
3. Quy trình hoạt động của Semantic Search
Quy trình này thường gồm 5 bước chính:
Bước 1. Nhập dữ liệu (Documents)
Thu thập dữ liệu nội bộ, tài liệu PDF, hướng dẫn sử dụng, email, ghi chú, hoặc database text.
Bước 2. Tiền xử lý (Preprocessing)
- Làm sạch dữ liệu (loại bỏ ký tự đặc biệt, HTML, tag, metadata)
- Chia nhỏ văn bản (chunking) — ví dụ: 512 hoặc 1024 token mỗi đoạn để phù hợp với mô hình embedding.
Bước 3. Tạo Embedding
Sử dụng mô hình embedding (ví dụ: text-embedding-3-large
, all-MiniLM-L6-v2
, hoặc sentence-transformers
) để chuyển mỗi đoạn văn thành vector trong không gian nhiều chiều (thường 768 hoặc 1536 chiều).
Bước 4. Lưu trữ vector
Lưu các vector này vào Vector Database như:
- FAISS (Meta)
- Pinecone
- Weaviate
- Milvus
- Chroma
Bước 5. Truy vấn tìm kiếm
Khi người dùng đặt câu hỏi, hệ thống:
- Biến câu hỏi thành vector embedding.
- So sánh vector câu hỏi với các vector tài liệu trong database.
- Lấy ra các đoạn có độ tương đồng cao nhất.
- (Tùy chọn) Gửi kết quả này đến mô hình ngôn ngữ (LLM) để tạo câu trả lời tự nhiên.
4. Ví dụ thực tế
Tình huống: Người dùng hỏi:
“Làm sao để deploy ứng dụng NestJS lên AWS EC2?”
Semantic Search sẽ hiểu rằng các đoạn có chứa “triển khai NestJS trên EC2”, “cài đặt backend trên AWS”, “chạy ứng dụng NodeJS trên server cloud” đều liên quan ngữ nghĩa, và trả về đúng nội dung mong muốn — dù không chứa từ khóa “deploy”.
5. Các vấn đề thường gặp và cách xử lý
❌ 1. Câu bị đứt đoạn hoặc mất ngữ cảnh
Nguyên nhân: Chunking quá nhỏ → ngữ nghĩa không đầy đủ. Cách xử lý:
- Dùng overlapping window khi chunk (ví dụ: 512 token, overlap 100).
- Sử dụng sentence-aware chunking để không cắt giữa câu.
❌ 2. Context bị sai lệch
Nguyên nhân: Embedding không đủ “ngữ cảnh” hoặc vector database chưa cập nhật. Cách xử lý:
- Dùng mô hình embedding mạnh hơn (
text-embedding-3-large
hoặcbge-large
). - Làm mới database định kỳ nếu tài liệu thay đổi thường xuyên.
❌ 3. Kết quả sai hoặc lặp lại
Nguyên nhân: Không có bước ranking (xếp hạng). Cách xử lý:
- Dùng hybrid search: kết hợp keyword search + semantic search.
- Áp dụng re-ranking models (như
cross-encoder/ms-marco-MiniLM-L-6-v2
).
6. Best Practices
Mục tiêu | Cách thực hiện |
---|---|
Giữ ngữ cảnh tự nhiên | Dùng chunk overlapping (50–100 token) |
Tăng độ chính xác | Dùng mô hình embedding hiện đại, fine-tune nếu cần |
Giảm latency | Lưu vector vào FAISS hoặc Pinecone với index tối ưu |
Tối ưu truy vấn | Chuẩn hóa câu hỏi người dùng bằng NLP trước khi embed |
Hiệu quả lâu dài | Triển khai RAG (Retrieval-Augmented Generation) để kết hợp LLM |
7. Semantic Search trong hệ thống RAG
Semantic Search là linh hồn của RAG (Retrieval-Augmented Generation). Trong RAG, Semantic Search đảm nhận phần “Retrieval” — tức là tìm đoạn nội dung liên quan nhất từ tài liệu nội bộ, sau đó LLM (như LLaMA, GPT, Mistral, Claude...) sẽ đọc và tạo câu trả lời chính xác, tự nhiên.
8. Kết luận
Semantic Search đã mở ra kỷ nguyên tìm kiếm thông minh hơn, nơi máy tính không chỉ “nhìn thấy từ khóa” mà còn “hiểu được ý nghĩa”. Nó là nền tảng cho nhiều ứng dụng hiện đại như RAG Chatbot, hệ thống hỏi đáp nội bộ doanh nghiệp, công cụ tìm tài liệu học tập, và các trợ lý ảo AI thông minh.