📖 Nội dung bài học
Tăng Âm lượng↑
Giảm Âm lượng↓
Tua Tới→
Tua Lùi←
Phụ đề Bật/Tắtc
Toàn màn hình/Thoát Toàn màn hìnhf
Tắt tiếng/Bật tiếngm
Giảm Kích thước Phụ đề-
Tăng Kích thước Phụ đề+ hoặc =
Tua %0-9
Cài đặt Phụ đề Màu Phông chữ
Trắng
Độ trong suốt Phông chữ
100%
Kích thước Phông chữ
100%
Kiểu Phông chữ
Tóm tắt
Bây giờ chúng ta đã tìm hiểu các khái niệm cơ bản về RAG, phân chia văn bản (text chunking) và embeddings, hãy cùng xem xét quy trình RAG hoàn chỉnh từng bước một. Ví dụ này sẽ cho bạn thấy chính xác cách tất cả các thành phần này hoạt động cùng nhau để truy xuất thông tin liên quan và tạo phản hồi.
Bước 1: Phân chia văn bản nguồn
Đầu tiên, chúng ta lấy tài liệu nguồn và chia nó thành các phần nhỏ dễ quản lý. Trong ví dụ này, chúng ta sẽ sử dụng hai phần văn bản đơn giản:
- Phần 1: Nghiên cứu Y khoa - "Năm nay đã chứng kiến những bước tiến đáng kể trong hiểu biết của chúng ta về XDR-47, một 'lỗi' mà chúng ta chưa từng thấy trước đây."
- Phần 2: Kỹ thuật Phần mềm - "Bộ phận này đã dành nỗ lực đáng kể để nghiên cứu các vectơ lây nhiễm khác nhau trong các hệ thống phân tán của chúng ta."
Bước 2: Tạo Embeddings
Tiếp theo, chúng ta chuyển đổi từng phần văn bản thành các embeddings dạng số bằng cách sử dụng một mô hình embedding. Để dễ hiểu hơn, hãy tưởng tượng chúng ta có một mô hình embedding hoàn hảo, luôn trả về chính xác hai số và chúng ta biết mỗi số đại diện cho điều gì.

Trong mô hình tưởng tượng của chúng ta:
- Số đầu tiên đại diện cho mức độ văn bản nói về lĩnh vực y tế.
- Số thứ hai đại diện cho mức độ văn bản nói về kỹ thuật phần mềm.
Đối với phần nghiên cứu y khoa, chúng ta có thể nhận được [0.97, 0.34] - tập trung nhiều vào y tế nhưng có một số yếu tố phần mềm do từ "lỗi" (bug). Đối với phần kỹ thuật phần mềm, chúng ta nhận được [0.30, 0.97] - tập trung nhiều vào phần mềm nhưng có ẩn ý y tế từ "vectơ lây nhiễm" (infection vectors).
Chuẩn hóa (Normalization)
API embedding thường thực hiện một bước chuẩn hóa để điều chỉnh mỗi vector có độ lớn bằng 1.0. Bạn không cần phải lo lắng về các phép toán ở đây - nó được xử lý tự động. Điều này cho chúng ta các vector đã chuẩn hóa như [0.944, 0.331] và [0.295, 0.955].

Chúng ta có thể hình dung các embeddings này trên một đường tròn đơn vị, nơi mỗi điểm đại diện cho một phần văn bản của chúng ta.

Bước 3: Lưu trữ trong Cơ sở dữ liệu Vector
Chúng ta lưu trữ các embeddings này trong một cơ sở dữ liệu vector - một cơ sở dữ liệu chuyên biệt, được tối ưu hóa để lưu trữ, so sánh và tìm kiếm qua các danh sách số dài như embeddings của chúng ta.

Tại thời điểm này, chúng ta tạm dừng. Tất cả công việc cho đến nay là tiền xử lý, diễn ra trước thời hạn. Bây giờ chúng ta chờ người dùng gửi một truy vấn.
Bước 4: Xử lý Truy vấn Người dùng
Khi người dùng đặt câu hỏi như "Tôi tò mò về công ty. Đặc biệt, bộ phận kỹ thuật phần mềm đã làm gì trong năm nay?", chúng ta chạy truy vấn của họ qua cùng một mô hình embedding.

Truy vấn này được nhúng thành một cái gì đó như [0.1, 0.89] - điểm y tế thấp, điểm kỹ thuật phần mềm cao. Sau khi chuẩn hóa, chúng ta nhận được [0.112, 0.993].
Bước 5: Tìm Embeddings Tương tự
Chúng ta gửi embedding của truy vấn người dùng đến cơ sở dữ liệu vector của mình và yêu cầu nó tìm các embeddings đã lưu trữ tương tự nhất.

Cơ sở dữ liệu trả về phần kỹ thuật phần mềm vì đó là kết quả khớp gần nhất với những gì người dùng đã hỏi.
Cách hoạt động của Sự tương tự: Cosine Similarity
Cơ sở dữ liệu vector sử dụng cosine similarity để xác định các embeddings nào tương tự nhất. Điều này đo lường cosine của góc giữa hai vector.

Các điểm chính về cosine similarity:
- Kết quả dao động từ -1 đến 1.
- Các giá trị gần 1 có nghĩa là độ tương tự cao.
- Các giá trị gần -1 có nghĩa là rất khác nhau.
- 0 có nghĩa là vuông góc (không có mối quan hệ).
Trong ví dụ của chúng ta, cosine similarity giữa truy vấn người dùng và phần kỹ thuật phần mềm là 0.983 - độ tương tự rất cao. Độ tương tự với phần nghiên cứu y khoa chỉ là 0.398 - thấp hơn nhiều.
Khoảng cách Cosine (Cosine Distance)
Bạn sẽ thường thấy "cosine distance" trong tài liệu của cơ sở dữ liệu vector. Điều này đơn giản được tính bằng (1 - cosine similarity). Với cosine distance:
- Các giá trị gần 0 có nghĩa là độ tương tự cao.
- Các giá trị lớn hơn có nghĩa là ít tương tự hơn.
Điều chỉnh này làm cho các con số dễ diễn giải hơn trong nhiều ngữ cảnh.
Bước 6: Tạo Prompt Cuối cùng
Cuối cùng, chúng ta lấy câu hỏi của người dùng và phần văn bản liên quan nhất mà chúng ta tìm thấy, kết hợp chúng thành một prompt và gửi đến Claude để nhận phản hồi.

Prompt có thể trông như thế này:
Trả lời câu hỏi của người dùng về tài liệu tài chính.
<user_question>
Có bao nhiêu lỗi mà các kỹ sư đã sửa trong năm nay?
</user_question>
<report>
## Phần 2: Kỹ thuật Phần mềm
Bộ phận này đã dành nỗ lực đáng kể để nghiên cứu các vectơ lây nhiễm khác nhau trong các hệ thống phân tán của chúng ta.
</report>
Và đó là quy trình RAG hoàn chỉnh! Hệ thống đã truy xuất thành công thông tin liên quan nhất dựa trên sự tương tự ngữ nghĩa và cung cấp nó làm ngữ cảnh để tạo ra một phản hồi chính xác.
🔁 Bài học liên quan
- Bài tiếp: Implementing the RAG flow
- Bài trước: Text embeddings
- Cùng section: Making a request · Multi-Turn conversations · Chat exercise
- Thuộc lộ trình: Path C
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/claude-with-the-anthropic-api/287764
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: 2026-04-23 · Chuẩn hoá: 2026-05-01