Chuyển đến nội dung
Lộ trình ClaudeGiai đoạn 07Building with the Claude APIRAG căn bảnMở bản đồ

RAG căn bản: hỏi đáp trên chính tài liệu của bạn

Tích hợp & APINâng cao7 phút đọc

Retrieval Augmented Generation nghe phức tạp nhưng bản chất chỉ một câu: tìm đúng vài đoạn liên quan trong kho tài liệu, đưa vào prompt, để Claude trả lời DỰA TRÊN chúng. Guide này cho bạn bản đồ toàn tuyến trước khi viết dòng code đầu tiên.

Bạn sẽ học được
  • Nắm hai pha của RAG: chuẩn bị một lần và phục vụ mỗi câu hỏi
  • Chọn cách cắt tài liệu (chunking) không phá vỡ ngữ nghĩa
  • Biết khi nào cần hybrid search thay vì chỉ semantic
Bạn cần gì
  • Biết Python cơ bản
  • Một kho tài liệu thật muốn hỏi đáp

Vì sao không nhét hết vào context

Context window lớn nhưng hữu hạn — và như bài Working Memory của khóa AI Capabilities chỉ ra, nhồi càng nhiều thứ không liên quan, chất lượng càng giảm. RAG đảo ngược bài toán: thay vì đưa TẤT CẢ, chỉ đưa phần LIÊN QUAN — mỗi câu hỏi một bộ ngữ cảnh riêng, nhỏ và trúng.

Pha 1 — chuẩn bị kho (chạy một lần)

Chất lượng RAG được định đoạt phần lớn ở bước cắt: chunk cắt ngang giữa một điều khoản sẽ không bao giờ được tìm thấy trọn vẹn.

  • Cắt tài liệu thành chunk: mỗi chunk một khối ngữ nghĩa trọn vẹn
  • Embed từng chunk: biến văn bản thành vector số đại diện ý nghĩa
  • Lưu vào vector store cùng metadata (nguồn, trang, ngày)

Cắt theo cấu trúc, không theo độ dài mù

Cách cắt tồi nhất là đếm đủ N ký tự rồi chặt. Cách tốt: tôn trọng cấu trúc tài liệu — theo đề mục, điều khoản, đoạn — và cho hai chunk kề nhau chồng lấn một phần để không mất ngữ cảnh ở đường cắt.

# cắt theo heading, chồng lấn 15%
chunks = split_by_headings(doc)          # mỗi mục một chunk
chunks = merge_small(chunks, min_tokens=200)
chunks = add_overlap(chunks, ratio=0.15) # giữ mạch ở biên

Pha 2 — phục vụ mỗi câu hỏi

Hai câu lệnh trong prompt — "chỉ dựa trên" và "nói rõ nếu thiếu" — là van an toàn chống bịa, đáng giá hơn mọi tinh chỉnh khác.

q_vec   = embed(cau_hoi)
hits    = vector_store.search(q_vec, top_k=5)
context = "\n\n".join(h.text for h in hits)

prompt = f"""Chỉ dựa trên các trích đoạn sau để trả lời.
Nếu không đủ thông tin, nói rõ "tài liệu không đề cập".
Với mỗi ý, ghi nguồn [số trang].

<trich_doan>{context}</trich_doan>

Câu hỏi: {cau_hoi}"""

Hybrid search: khi semantic thôi là chưa đủ

Semantic search giỏi bắt Ý ("nghỉ phép năm" tìm ra "chế độ nghỉ hằng năm") nhưng hay trượt các chuỗi cần khớp CHÍNH XÁC: mã sản phẩm, số điều luật, tên riêng hiếm. Giải pháp chuẩn: chạy song song BM25 (khớp từ khóa) và gộp kết quả hai bên. Dấu hiệu bạn cần nó: người dùng hỏi bằng mã/ID mà hệ thống trả về đoạn "na ná".

Đánh giá trước khi tin

Trước khi khoe demo, hãy chấm điểm: 20 câu hỏi thật kèm đáp án mong muốn, chạy qua pipeline, đếm bao nhiêu câu trả lời đúng VÀ dẫn đúng nguồn. Con số này là baseline — mọi tinh chỉnh (đổi cách cắt, tăng top_k, thêm BM25) phải chứng minh bằng điểm số tăng, không bằng cảm giác.

Nội dung này có hữu ích không?
Kiểm tra kiến thức

Củng cố những gì bạn vừa học

3 câu trắc nghiệm · đạt từ 70% · câu hỏi và đáp án xáo trộn mỗi lần.

Hội thoại chia sẻ

Cộng đồng đang hỏi Claude điều gì?

Xem tất cả
Nền tảng

Claude khác ChatGPT và Gemini ở điểm nào?

Không có “tốt nhất” chung — chọn theo việc cần làm. Claude mạnh ở lập luận dài, bám ngữ cảnh và viết tự nhiên.

Ẩn danh312
Nền tảng

Nên chọn mô hình Claude nào để khỏi lãng phí chi phí?

Haiku cho việc nhẹ và nhanh, Sonnet cân bằng, Opus cho suy luận sâu. Đừng mặc định dùng model mạnh nhất.

Ẩn danh148
Nền tảng

Người mới nên bắt đầu với Claude từ đâu?

Mười tình huống thật trong ngày đầu: tóm tắt, viết nháp, phân tích file, brainstorm — thấy giá trị ngay, không cần khoá học.

Ẩn danh96
Chat

Làm sao giữ Claude bám đúng ý qua nhiều lượt trò chuyện?

Nhắc lại mục tiêu khi nối mạch, đổi hướng thật rõ ràng, và yêu cầu Claude tóm tắt hiểu biết trước khi đi tiếp.

Ẩn danh274
Chat

Projects trong Claude thật sự dùng để làm gì?

Gom tài liệu và chỉ dẫn một lần, mọi hội thoại cùng chung nền — hết cảnh dán lại bối cảnh mỗi lần mở chat.

Ẩn danh121
Chat

Tóm tắt tài liệu dài mà không đánh rơi ý chính?

Yêu cầu giữ lập luận thay vì liệt kê; chỉ định độ dài và góc nhìn cần giữ để bản tóm không cắt bừa.

Ẩn danh89
Cowork

Claude Cowork tự làm việc trên máy mình như thế nào?

Cùng kiến trúc agent với Claude Code nhưng ngay trong app desktop: mô tả kết quả, Claude thao tác trên tệp và app của bạn.

Ẩn danh203
Cowork

Tự động hoá báo cáo tuần bằng Claude ra sao?

Gộp số liệu → viết diễn giải → xuất nháp, rồi đóng gói cả chuỗi thành một câu lệnh lặp lại được cho tuần sau.

Ẩn danh167
Cowork

Giao việc nền cho Claude khi mình làm việc khác được không?

Được, với tác vụ không cần ngồi canh: giao rõ tiêu chí hoàn thành rồi theo dõi và nhận kết quả sau.

Ẩn danh78
Code

Claude Code khác gì gợi ý code trong IDE?

Nó đọc cả dự án, chạy lệnh và tự sửa qua nhiều bước — là một agent lập trình, không phải autocomplete.

Ẩn danh341
Code

Viết CLAUDE.md thế nào để agent hiểu codebase?

Ghi rõ quy ước, cấu trúc thư mục và ranh giới không được đụng — “sổ tay dự án” là chìa khoá cho kết quả ổn định.

Ẩn danh189
Code

Quy trình sửa lỗi với Claude Code gồm những bước nào?

Đưa log → agent lần theo dấu vết → đề xuất bản vá → kiểm chứng bằng test. Một vòng khép kín gọn gàng.

Ẩn danh156
Code

Dùng Claude review pull request có đáng không?

Rất đáng: một con mắt thứ hai không mệt mỏi, rà logic, bảo mật và hiệu năng trên từng thay đổi trước khi merge.

Ẩn danh112
Design

Làm sao dựng giao diện chạy được chỉ bằng mô tả?

Nói ra thứ bạn hình dung → nhận một Artifact bấm được → tinh chỉnh ngay trong cùng hội thoại. Vòng lặp thiết kế cực ngắn.

Ẩn danh298
Design

Brief Claude thế nào để có bộ slide chỉn chu?

Một thông điệp mỗi slide, cấu trúc mạch lạc; đưa dàn ý trước rồi để Claude soạn phần trình bày.

Ẩn danh134
Design

Prototype tương tác nhanh để thử ý tưởng?

Một bản mẫu bấm được trong vài phút giúp cả đội thấy ý tưởng và phản hồi sớm, trước khi vẽ kỹ hay code thật.

Ẩn danh92
Plugins & Skills

MCP là gì và tại sao nó quan trọng?

Một chuẩn mở để Claude nói chuyện với công cụ và dữ liệu bên ngoài — hiểu nó là mở khoá cả hệ sinh thái.

Ẩn danh256
Plugins & Skills

Cài MCP server đầu tiên nên bắt đầu từ đâu?

Filesystem và GitHub là hai server nền tảng để Claude đọc tệp và làm việc trên repo — lộ trình cài từng bước.

Ẩn danh118
Plugins & Skills

Agent Skills giải quyết vấn đề gì?

Đóng gói chỉ dẫn lặp lại thành một Skill — Claude tự gọi khi cần, khỏi phải dán lại đoạn hướng dẫn dài mỗi lần.

Ẩn danh97
Plugins & Skills

Gọi Claude API bằng Python bắt đầu ra sao?

Từ khoá API đến câu trả lời đầu tiên trong khoảng mười dòng code — nền tảng để xây mọi thứ tiếp theo.

Ẩn danh84

Đăng ký nhận bản tin

Chọn chủ đề bạn quan tâm — nhận bài viết chọn lọc và thông báo sự kiện gửi thẳng vào hộp thư.

Bảo mật thông tin. Hủy đăng ký bất cứ lúc nào. Chính sách bảo mật