Search & RAG — Cẩm nang
Tài liệu học tập về retrieval, viết cho việc tối ưu sản phẩm AI Agent thật.
Mọi con số trong tài liệu này là số đo thật trên corpus 50 tài liệu tiếng Việt
(data/corpus.jsonl) và golden set 24 truy vấn 4 lớp (data/goldenset.jsonl) —
không phải số dẫn từ bài báo. Code sinh ra chúng đã được gỡ khỏi repo để repo này
thuần tài liệu học; bảng số baseline ở Phụ lục — Lộ trình & baseline.
Toàn bộ là Markdown, không có bước build: file bạn đọc chính là file nguồn. Mỗi mục là một file riêng, có điều hướng ⬅ trước · ⬆ mục lục · sau ➡ ở cuối trang. Chuỗi điều hướng đó đi thẳng từ mục đầu của Phần 1 tới trang cuối của Phụ lục — đọc theo nó là đọc đúng thứ tự.
Mỗi trang có mục Đọc thêm ở cuối, dẫn tới blog/paper/tài liệu gốc cho đúng chủ đề trang đó — ưu tiên nguồn tiếng Việt, kèm nguồn tiếng Anh khi cần bản gốc hoặc bản chặt chẽ hơn. Danh sách nguồn cho phần metrics gom ở Phần 2 — 10. Nguồn tham khảo.
Nguyên tắc xuyên suốt
Phần tiêu đề “Nguyên tắc xuyên suốt”- Không đo thì không tối ưu. Mọi thay đổi report trên cùng một golden set.
- Mỗi kỹ thuật phải trả giá. Ghi nhận đồng thời: chất lượng, latency, chi phí.
- Điểm mù đối xứng. Mỗi phương pháp đều có lớp truy vấn nó thua. Học là học nhận ra lớp đó, không phải học “cái nào tốt nhất”.
- Thứ tự ưu tiên đã được đo: dữ liệu & tokenization ≫ kiến trúc ≫ siêu tham số.
Nguyên tắc 1 quyết định thứ tự của cẩm nang: metrics đứng ngay sau nhập môn, trước mọi kỹ thuật. Phần nào cũng giả định bạn đã có thước đo trong tay.
Cẩm nang được tổ chức thế nào
Phần tiêu đề “Cẩm nang được tổ chức thế nào”Phần 4 nêu tầng và tóm tắt; phần riêng đào sâu cơ chế. Tầng 3 → Phần 5. Tầng 5 → Phần 6 → Phần 7 (bản hiện thực cụ thể trong một database thật).
Vì vậy bạn sẽ gặp cùng một chủ đề hai lần, ở hai độ sâu khác nhau — đó là chủ ý, không phải trùng lặp. Tầng 3 và Tầng 5 ở lại Phần 4: rút chúng ra thì chuỗi tầng thủng.
Mục lục
Phần tiêu đề “Mục lục”| Phần | Nội dung | Số mục |
|---|---|---|
| 1 — Nhập môn | Không giả định biết gì trước đó. Inverted index và BM25 tính bằng tay trên giấy | 10 |
| 2 — Metrics | recall, nDCG, ý nghĩa thống kê, bảy lỗi phương pháp — thước đo trước, tối ưu sau | 12 |
| 3 — Nền tảng kỹ thuật | Bên trong một search engine: postings, fuzzy search, prefix/wildcard, top-k | 16 |
| 4 — Lý thuyết | 11 tầng của retrieval hiện đại, xếp theo thứ tự phụ thuộc. Tầng 0 và 1 là 80% giá trị | 12 |
| 5 — Reranker | Đào sâu Tầng 3: cross-encoder, ColBERT, LLM reranker, chi phí và latency | 15 |
| 6 — Vector index & ANN | Đào sâu Tầng 5: quantization vector và ANN đồ thị (HNSW, IVF) | 2 |
| 7 — Qdrant | Một vector database thật: mô hình dữ liệu, segment, filterable HNSW, vận hành | 21 |
| 8 — Áp vào sản phẩm AI Agent | 10 việc xếp theo ROI | 1 |
| Phụ lục | Lộ trình & baseline · Sổ tay công thức · Sai số của tài liệu | 3 |
Mỗi README của phần liệt kê từng trang trong phần đó. Trang này chỉ nói về phần.
Đường tắt
Phần tiêu đề “Đường tắt”Thứ tự tuyến tính ở trên là mặc định. Bốn trường hợp đáng rẽ ngang:
- Đang định cắm reranker vào sản phẩm → đọc 5.4 — Trần recall@k trước cả Phần 5. Mục đó trả lời bạn có nên tiêu tiền hay không, trước khi bạn tiêu.
- Đang vận hành vector database và nghi ngờ mất recall → đọc 7.8 — Filterable HNSW. Đây là chỗ nhiều hệ RAG mất recall âm thầm mà không có lỗi nào báo ra.
- Cần ra quyết định gấp cho sản phẩm → đọc Phần 8 trước, rồi quay lại tầng tương ứng khi cần.
- Đã làm RAG nhưng chưa hiểu sâu → đọc 1.3 Ba nhân vật rất dễ lẫn và 1.9 “Tốt” nghĩa là gì trước khi đi tiếp: rất nhiều người làm RAG lẫn ba loại model, và đo bằng sai metric.
Bài tập
Phần tiêu đề “Bài tập”Lý thuyết không thay được việc tự vấp. Làm bài trước khi đọc tầng lý thuyết của nó.
- Bài tập 01 — Xây một hệ thống Inverted Index — làm sau khi đọc 1.6 và 1.7.
Dữ liệu kèm theo
Phần tiêu đề “Dữ liệu kèm theo”data/corpus.jsonl— 50 tài liệu tiếng Việt, 12 chủ đề. Cố tình chứa mã định danh (E2003,POST /v1/transactions,sk_live,AES-256,99,9%) để lỗi tokenizer lộ ra thay vì im lặng.data/goldenset.jsonl— 24 truy vấn, 4 lớp × 6, relevance có mức (2/1/0). Lớp A lexical/exact · B paraphrase · C multi-hop · D phủ định-abstention.
Đây là golden set mà mọi con số trong cẩm nang được đo trên.
Về code
Phần tiêu đề “Về code”Repo từng có labs/ — code sinh ra các số trong cẩm nang. Đã gỡ để repo thuần tài
liệu học. Xem lại khi cần:
git show ada36f4:labs/lab01_lexical/lexical.pygit show ada36f4:labs/common/metrics.pyNhật ký quá trình và số liệu chi tiết nằm trong dev/ — thư mục làm việc, không được
commit vào repo (xem .gitignore). Các con số đã chốt đều được dẫn lại trong docs/,
nên bạn không cần dev/ để đọc cẩm nang.