Trong bài viết này
Từ được đánh dấu có giải thích. Di chuột hoặc chạm để xem, hay mở từ điển AI.
Bạn hỏi “đổi địa chỉ giao hàng” và muốn tìm trang “chỉnh sửa nơi nhận đơn”. Hai câu ít trùng từ nhưng có thể gần nhau về nghĩa. Tìm kiếm vector biểu diễn chúng thành các dãy số, rồi dùng một phép đo để xếp những tài liệu có khả năng liên quan lên trước. Cosine similarity là một phép đo thường gặp trong bước này.
Đo góc thay vì độ dài
Với hai vector khác không, cosine bằng tích vô hướng chia cho tích độ dài của chúng. Công thức ngắn là cos(a,b) = dot(a,b) / (norm(a) × norm(b)). Kết quả nằm từ âm một đến một; hướng càng giống nhau thì giá trị càng gần một.
Thử ví dụ tự dựng trong hai chiều: câu hỏi có vector a = [1,0], tài liệu B có b = [3,0], tài liệu C có c = [1,1]. Cosine giữa A và B bằng một, dù B dài gấp ba. Cosine giữa A và C xấp xỉ 0,707. Đây là phép tính hình học minh họa, không phải embedding thật của các câu tiếng Việt.
Tài liệu Sentence Transformers về độ tương đồng ngữ nghĩa mô tả cách tạo embedding rồi tính độ tương đồng giữa các cặp văn bản, đồng thời phân biệt cosine với các phép đo khác. Bạn cần dùng phép đo phù hợp với mô hình và cấu hình chỉ mục đang chọn.
Từ một điểm số tới danh sách kết quả
Một luồng tìm kiếm đơn giản có thể viết như sau. Đây là mã giả, không phải cú pháp của thư viện cụ thể:
vector_cau_hoi = embed(cau_hoi)
ung_vien = tai_lieu_duoc_phep_doc()
diem = cosine(vector_cau_hoi, tung_vector_ung_vien)
ket_qua = sap_xep_giam_dan(diem).lay(5)
Đầu vào “đổi địa chỉ giao hàng” có thể trả về danh sách mong muốn: hướng dẫn sửa địa chỉ, điều kiện sửa trước đóng gói, rồi cách liên hệ hỗ trợ. Đầu ra cần giữ mã tài liệu và đoạn văn thật. Chỉ giữ năm con số sẽ không giúp người đọc kiểm tra điều kiện áp dụng.
RAG tìm các đoạn tài liệu liên quan, đưa chúng vào ngữ cảnh rồi tạo câu trả lời. Người đọc cần kiểm tra nguồn có thực sự hỗ trợ câu trả lời hay không.
↔ Vuốt ngang để xem toàn bộ sơ đồ.
01 / Nhận câu hỏi
Hệ thống nhận câu hỏi cùng phạm vi tài liệu mà người dùng được phép đọc.
02 / Tìm tài liệu
Bộ tìm kiếm lấy các đoạn có liên quan trong kho tài liệu được phép truy cập.
03 / Thêm ngữ cảnh
Câu hỏi, các đoạn tìm được và thông tin nguồn được đưa cho mô hình.
04 / Trả lời kèm nguồn
Mô hình tạo câu trả lời có căn cứ để đối chiếu. Nếu chưa đủ thông tin, hệ thống cần nói rõ.
Minh họa một luồng RAG cơ bản. Tìm thấy tài liệu không bảo đảm nội dung còn hiệu lực hoặc mô hình sử dụng đúng.
Hình minh họa cho thấy vị trí tìm kiếm trong RAG; nó không biểu diễn không gian vector hay cách tính góc. Trong hệ thống lớn, tìm ứng viên còn có thể dùng thuật toán gần đúng, nên danh sách trả về cần được đánh giá riêng.
Điểm cao không có nghĩa là câu trả lời đúng
“Được sửa địa chỉ sau khi đóng gói” và “Không được sửa địa chỉ sau khi đóng gói” có nhiều nội dung chung nhưng khác nhau ở điều kiện quyết định. Mô hình embedding có thể đặt chúng gần nhau. Bộ tìm kiếm tìm đoạn liên quan; việc xác định đoạn nào đúng, còn hiệu lực và phù hợp người dùng là bước khác.
Không nên diễn giải cosine 0,8 thành “80% chắc chắn đúng”. Giá trị phụ thuộc mô hình, dữ liệu và cách biểu diễn. Một ngưỡng hữu ích cho kho hướng dẫn sản phẩm có thể loại bỏ quá nhiều câu hỏi ở kho kiến thức khác.
Khi thay mô hình embedding, hãy tạo lại vector tài liệu và đánh giá lại ngưỡng. Không trộn vector từ hai mô hình chỉ vì chúng có cùng số chiều. Cùng kích thước không bảo đảm các tọa độ mang cùng ý nghĩa.
Bài tập: tìm những câu gần nhưng sai điều kiện
Tạo sáu đoạn hướng dẫn giả định: sửa địa chỉ trước đóng gói, sau đóng gói, hủy đơn, đổi số điện thoại, đổi phương thức nhận và tra cứu vận chuyển. Viết ba câu hỏi dùng từ đồng nghĩa, cùng hai câu chứa phủ định.
Với mỗi câu, ghi ba kết quả đầu, đoạn thật sự hỗ trợ đáp án và điều kiện dễ bị bỏ sót. Tiêu chí đạt là câu dùng từ đồng nghĩa tìm được đúng mục, đồng thời bạn chỉ ra được ít nhất một cặp gần nghĩa nhưng không thể thay thế nhau. Nếu chỉ xem điểm số mà chưa đọc đoạn văn, bài kiểm tra chưa hoàn thành.
Đọc tiếp tìm kiếm hybrid để kết hợp sự gần về nghĩa với nhu cầu khớp chính xác mã và từ khóa.