Bỏ qua đến nội dung chính

Luồng RAG đầy đủ

📖 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][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

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?