Trong nhiều thập kỷ, tìm kiếm đồng nghĩa với việc so khớp từ ngữ. Bạn nhập một thuật ngữ, và công cụ tìm kiếm sẽ trả về các trang chứa chính xác thuật ngữ đó. Việc truy xuất dữ liệu bằng AI hoạt động theo cách khác. Thay vì hỏi "trang này có chứa những từ này hay không," nó hỏi "đoạn văn này có đồng nghĩa với câu hỏi hay không." Nó thực hiện điều này bằng cách chuyển đổi văn bản thành các con số, gọi là embeddings, để mã hóa ý nghĩa, sau đó so sánh mức độ gần nhau của những con số đó trong không gian. Hiểu được sự chuyển dịch này là nền tảng để được tìm thấy bởi các hệ thống AI, bởi vì nội dung truyền tải đúng thông điệp bằng các từ ngữ khác nhau giờ đây có thể chiến thắng, và nội dung nhồi nhét từ khóa nhưng rỗng tuếch về ý nghĩa có thể thất bại.
So khớp từ khóa tìm kiếm từ ngữ; embeddings tìm kiếm ý nghĩa
Tìm kiếm từ khóa truyền thống, thường được vận hành bởi một thuật toán tên là BM25, chấm điểm một trang dựa trên tần suất xuất hiện các thuật ngữ chính xác của truy vấn, được tính trọng số theo mức độ hiếm gặp của các thuật ngữ đó. Nhược điểm của nó là khoảng cách từ vựng: nếu người tìm kiếm hỏi về 'automobile' và trang của bạn chỉ ghi 'car,' hệ thống từ khóa đơn thuần có thể bỏ lỡ hoàn toàn kết quả phù hợp. Việc truy xuất dựa trên embedding được xây dựng để thu hẹp khoảng cách đó bằng cách so sánh ý nghĩa thay vì các từ ngữ bề mặt, nhờ đó các từ đồng nghĩa và diễn giải có thể khớp nối ngay cả khi không có từ vựng nào trùng khớp. Đây là hành vi đã được chứng minh của các mô hình truy xuất dày đặc (dense retrieval models), không phải là suy đoán.
Một embedding là một danh sách các con số giúp định vị văn bản trên bản đồ ý nghĩa
Một mô hình embedding, thường là một transformer như bộ mã hóa dạng BERT, chuyển đổi một đoạn văn bản thành một danh sách số có độ dài cố định gọi là dense vector. Văn bản có ý nghĩa tương đồng sẽ tạo ra các vector tương tự nhau, do đó các con số này hoạt động như tọa độ trên một bản đồ khổng lồ nơi các ý tưởng liên quan tập hợp lại với nhau. Các chiều kích thước chính xác không thể đọc được bởi con người, và không có một con số đơn lẻ nào ánh xạ trực tiếp đến một khái niệm cụ thể; ý nghĩa được phân bổ trên toàn bộ vector. Đây là lý do tại sao hai câu có cách diễn đạt khác nhau về cùng một chủ đề lại nằm gần nhau ngay cả khi chúng không chia sẻ bất kỳ từ khóa nào.
Độ tương đồng được đo bằng khoảng cách, thường là cosine similarity
Để trả lời một câu hỏi, hệ thống sẽ thực hiện embedding truy vấn thành một vector, rồi tìm kiếm các vector nội dung được lưu trữ nằm gần nó nhất. Độ gần thường được đo bằng cosine similarity, phương pháp so sánh góc giữa hai vector thay vì độ dài của chúng, hoặc bằng dot product liên quan. Bởi vì việc so sánh từng vector một với hàng triệu vector khác là rất chậm, các hệ thống thực tế sử dụng tìm kiếm Approximate Nearest Neighbor (ANN), giúp tìm ra các vector gần đúng nhất nhanh hơn nhiều so với việc quét chính xác. Đánh đổi lại là một tổn thất nhỏ về độ chính xác (thường ở mức chấp nhận được) để đổi lấy sự gia tăng lớn về tốc độ.
Việc đối khớp diễn ra ở cấp độ phân đoạn, không phải toàn bộ trang
Các hệ thống truy xuất AI thường không thực hiện embedding toàn bộ trang như một đơn vị duy nhất. Đầu tiên, chúng chia nhỏ tài liệu thành các phân đoạn (chunk) nhỏ hơn, thường trong khoảng vài trăm token, thường có một số phần gối lên nhau giữa các phân đoạn để ý nghĩa không bị cắt đứt ở ranh giới. Mỗi phân đoạn nhận được một embedding riêng của nó, và việc truy xuất sẽ cạnh tranh theo từng phân đoạn. Điều này có nghĩa là một đoạn văn rõ ràng, độc lập có thể được đưa vào câu trả lời của AI ngay cả khi phần còn lại của trang không liên quan, đó là lý do tại sao các phần được cấu trúc tốt, tập trung lại quan trọng hơn các bức tường văn bản dài dằng dặc không phân hóa.
Hầu hết các hệ thống thực tế kết hợp cả hai phương pháp, thay vì chỉ sử dụng embedding đơn độc
Embedding rất mạnh về mặt ý nghĩa nhưng yếu hơn ở độ chính xác tuyệt đối, chẳng hạn như khớp với một mã sản phẩm cụ thể, số dòng máy hoặc tên riêng. Vì lý do đó, hầu hết các hệ thống truy xuất thực tế sử dụng tìm kiếm hybrid, chạy tìm kiếm từ khóa (BM25) cùng với tìm kiếm dense vector và hợp nhất hai danh sách xếp hạng, thường bằng phương pháp gọi là Reciprocal Rank Fusion để kết hợp các kết quả theo thứ hạng thay vì theo các điểm số không tương thích. Nhiều quy trình sau đó thêm một bước reranking trong đó một mô hình phức tạp hơn sẽ chấm điểm lại các ứng viên hàng đầu. Bài học thực tiễn rút ra là các thuật từ chính xác vẫn rất quan trọng bên cạnh một ý nghĩa rõ ràng; đó không phải là sự lựa chọn duy nhất một trong hai.
- Hệ thống truy xuất AI đối khớp ý nghĩa chứ không chỉ các từ ngữ chính xác, do đó nội dung trả lời một câu hỏi một cách rõ ràng vẫn có thể được tìm thấy ngay cả khi nội dung đó sử dụng từ vựng khác với người tìm kiếm.
- Một embedding là một dense vector, một danh sách các con số, trong đó các ý nghĩa tương tự nhau sẽ tạo ra các vector gần nhau; độ gần thường được đo bằng cosine similarity và được tăng tốc bằng tìm kiếm Approximate Nearest Neighbor.
- Việc đối khớp thường diễn ra ở cấp độ phân đoạn, vì vậy các phần tập trung và độc lập khoảng vài trăm từ sẽ giúp các hệ thống AI dễ dàng truy xuất và trích dẫn hơn so với văn bản dài không phân hóa.
- Hầu hết các hệ thống thực tế sử dụng tìm kiếm hybrid (từ khóa cộng với embedding) và thường có thêm bước reranking, vì vậy các thuật từ chính xác như tên gọi và số kiểu máy vẫn rất quan trọng bên cạnh ý nghĩa ngữ nghĩa rõ ràng.
- Ý nghĩa thực tiễn đối với khả năng hiển thị: hãy viết tự nhiên về khái niệm thực tế, cấu trúc nội dung thành các phân đoạn rõ ràng và giữ nguyên các định danh chính xác thay vì chỉ phụ thuộc vào việc lặp lại từ khóa.
