📖 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ữ
Arial
Cạnh Ký tự
Không có
Màu Viền
Đen
Màu Nền
Đen
Độ trong suốt Nền
50%
Màu Cửa sổ
Đen
Độ trong suốt Cửa sổ
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, chia nhỏ văn bản và embeddings, hãy cùng xem xét quy trình RAG hoàn chỉnh từng bước. Ví dụ chi tiết này sẽ cho bạn thấy chính xác cách tất cả các thành phần kết hợp với nhau trong một triển khai thực tế.
Bước 1: Chia nhỏ 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 nhiều nỗ lực để 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ố. Để 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ố thứ nhất: Mức độ văn bản nói về y học
- Số thứ hai: Mức độ văn bản nói về kỹ thuật phần mềm
Vì vậy, phần nghiên cứu y khoa của chúng ta nhận được [0.97, 0.34] - rất y khoa, có phần liên quan đến phần mềm do từ "bug". Phần kỹ thuật phần mềm nhận được [0.30, 0.97] - tập trung mạnh vào phần mềm, nhưng "infection vectors" (vectơ lây nhiễm) có ý nghĩa y khoa.
Chuẩn hóa
Trước khi lưu trữ các embeddings này, chúng sẽ trải qua quá trình chuẩn hóa để điều chỉnh mỗi vector có độ lớn là 1.0. Điều này thường được xử lý tự động bởi API embedding của bạn, nhưng điều quan trọng là phải hiểu rằng nó xảy ra.

Sau khi chuẩn hóa, các embeddings của chúng ta trở thành [0.944, 0.331] và [0.295, 0.955]. Chúng ta có thể hình dung chúng trên một đường tròn đơn vị, nơi cả hai điểm đều nằm chính xác trên cạnh của đường tròn.

Bước 3: Lưu trữ trong Cơ sở dữ liệu Vector
Các embeddings đã chuẩn hóa được lưu trữ trong cơ sở dữ liệu vector - một loại 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ý xảy ra trước thời điểm đó. 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ọ thông qua cùng một mô hình embedding.

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

Nhưng làm thế nào cơ sở dữ liệu xác định "gần nhất"? Nó sử dụng độ tương đồng cosine.
Độ tương đồng Cosine
Cơ sở dữ liệu vector tính toán cosine của góc giữa các vector để đo lường sự tương đồng. Điều này cho chúng ta một số giữa -1 và 1:

- 1.0 = các vector chỉ theo cùng một hướng (rất tương tự)
- 0.0 = các vector vuông góc (không liên quan)
- -1.0 = các vector chỉ theo hướng đối lập (rất khác biệt)
Trong ví dụ của chúng ta:
- Truy vấn người dùng so với Kỹ thuật Phần mềm: độ tương đồng cosine = 0.983 (rất tương tự!)
- Truy vấn người dùng so với Nghiên cứu Y khoa: độ tương đồng cosine = 0.398 (ít tương tự hơn)
Khoảng cách Cosine
Bạn sẽ thường thấy "khoảng cách cosine" trong tài liệu của cơ sở dữ liệu vector. Đây đơn giản là 1 - độ tương đồng cosine, điều này đảo ngược thang đo để các số nhỏ hơn có nghĩa là tương tự hơn:
- 0.0 = rất tương tự
- 1.0 = vuông góc
- 2.0 = hoàn toàn đối lập
Bước 6: Xây dựng 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 (phần kỹ thuật phần mềm) và kết hợp chúng thành một prompt cho Claude:

Trả lời câu hỏi của người dùng về tài liệu tài chính.
<user_question>
Kỹ sư đã sửa bao nhiêu lỗi trong năm nay?
</user_question>
<report>
## Phần 2: Kỹ thuật Phần mềm
Bộ phận này đã dành nhiều nỗ lực để 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 đã thành công tìm thấy ngữ cảnh liên quan nhất cho câu hỏi kỹ thuật phần mềm của người dùng và cung cấp nó cho Claude để tạo ra một phản hồi có thông tin.
Quá trình này xảy ra tự động mỗi khi người dùng gửi một truy vấn, cho phép Claude trả lời các câu hỏi dựa trên tài liệu cụ thể của bạn thay vì chỉ dựa trên kiến thức đào tạo chung của nó.
🔁 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-google-vertex/289190
- © 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