3.17 Tìm kiếm và truy xuất thông tin
Tổng quan và động lực
Sớm hay muộn, ai đó gõ vài từ vào một ô và mong hệ thống của bạn tìm đúng thứ. Cái ô đó đơn giản một cách đánh lừa. Đằng sau nó là một trong những kỷ luật lâu đời và phong phú nhất của ngành tính toán: truy xuất thông tin, khoa học tìm các mục liên quan trong một bộ sưu tập lớn từ một yêu cầu không chính xác. Tìm kiếm không phải một tính năng bạn gắn thêm vào sản phẩm muộn màng; nó là một mối quan tâm của hệ thống với mô hình dữ liệu riêng, các chế độ thất bại riêng, câu chuyện mở rộng riêng, và cách sai riêng của nó. Khi tìm kiếm tốt, mọi người tìm thấy thứ họ cần và hầu như không để ý. Khi tìm kiếm tệ, họ bỏ đi, hoặc tệ hơn, họ kết luận thứ họ muốn không tồn tại.
Chương này coi tìm kiếm là kiến trúc hạng nhất. Nó nằm cạnh các quyết định dữ liệu và lưu trữ của chương 3.4, vì một chỉ mục tìm kiếm là một kho chuyên biệt được tối ưu cho truy vấn, khác với hệ thống ghi nhận sở hữu sự thật. Nó dựa vào các ý tưởng lưu đệm và phân phối của chương 3.15, vì kết quả tìm kiếm và gợi ý nhạy cảm với độ trễ và lưu đệm được. Và nay nó chồng lấn nhiều với công việc trí tuệ nhân tạo sinh tạo của chương 6.3, vì truy xuất hiện đại cung cấp cho các mô hình ngôn ngữ lớn ngữ cảnh chúng cần để trả lời tốt.
Với các đội lớn, tìm kiếm là nơi độ liên quan, độ mới và quy mô va chạm. Một danh mục doanh nghiệp với hàng chục triệu mục, một cổng hồ sơ chính phủ chịu trách nhiệm trước công chúng, một cơ sở tri thức hỗ trợ phải đưa ra đúng bài viết giải quyết một phiếu: mỗi cái đòi hỏi tìm kiếm được đo, điều chỉnh và vận hành với cùng sự chặt chẽ như bất kỳ hệ thống sản xuất nào. Rủi ro là cụ thể. Một cơ quan thuế mà tìm kiếm không tìm được đúng biểu mẫu vào hạn nộp hồ sơ, hoặc một cổng y tế chôn vùi hướng dẫn liên quan dưới nhiễu, làm thất vọng người dùng theo cách xói mòn niềm tin vào tổ chức đằng sau.
Các nguyên tắc chính
- Coi chỉ mục tìm kiếm là một kho phái sinh, tách biệt khỏi hệ thống ghi nhận của bạn.
- Độ liên quan là một chất lượng đo được, không phải chuyện khẩu vị; hãy đánh giá nó bằng dữ liệu.
- Khớp với cách người ta thực sự gõ: sai chính tả, cụt lủn và mơ hồ.
- Kết hợp truy xuất từ vựng và ngữ nghĩa; không cái nào một mình bao quát mọi truy vấn.
- Thiết kế đường ống lập chỉ mục cho độ mới, không chỉ cho lần nạp ban đầu.
- Đánh giá ngoại tuyến bằng các phán đoán và trực tuyến bằng hành vi thực, và dùng cả hai.
- Mở rộng tìm kiếm có chủ đích bằng mảnh và bản sao, và quan sát nó như bất kỳ dịch vụ nào.
Khuyến nghị
Bắt đầu với chỉ mục đảo ngược và đường ống phân tích
Động cơ ở trái tim của tìm kiếm cổ điển là chỉ mục đảo ngược: một ánh xạ từ mỗi thuật ngữ đến danh sách các tài liệu chứa nó, hình ảnh phản chiếu của một tài liệu liệt kê các thuật ngữ của nó. Hỏi “invoice refund” và động cơ giao danh sách đăng của “invoice” với danh sách đăng của “refund” trong vài mili giây, bất kể bạn giữ bao nhiêu triệu tài liệu. Cấu trúc dữ liệu này là lý do tìm kiếm có cảm giác tức thì, và hiểu nó giải thích phần lớn những gì tìm kiếm làm tốt và không tốt.
Chỉ mục chỉ tốt bằng văn bản bạn nạp vào, và đó là việc của bộ phân tích. Phân tích chạy theo các giai đoạn. Trước tiên, tách từ chia một luồng văn bản thành các thuật ngữ, khó hơn việc tách theo khoảng trắng khi bạn gặp dấu câu, dấu gạch nối, và những ngôn ngữ như tiếng Trung không phân định từ. Rồi chuẩn hóa viết thường, bỏ dấu, và gộp các biến thể. Rồi rút gọn từ gốc hoặc người anh em chính xác hơn của nó là chuẩn hóa từ vựng đưa “running,” “ran” và “runs” về một gốc chung để truy vấn cho một từ khớp các từ còn lại. Xử lý từ dừng, mở rộng từ đồng nghĩa và nhận diện ngôn ngữ hoàn thiện bức tranh. Quy tắc cứu bạn khỏi đau đớn: phân tích lúc lập chỉ mục và lúc truy vấn phải khớp nhau, vì một thuật ngữ chỉ được tìm thấy nếu cả hai phía chuẩn hóa nó giống nhau.
Hiểu xếp hạng độ liên quan trước khi điều chỉnh nó
Tìm các tài liệu khớp là nửa dễ. Sắp xếp chúng để cái tốt nhất nằm trên cùng là nửa khó, và nó được gọi là xếp hạng. Con ngựa thồ truyền thống là TF-IDF, viết tắt của tần suất thuật ngữ nhân tần suất tài liệu nghịch đảo: một thuật ngữ có trọng lượng hơn khi nó xuất hiện nhiều trong một tài liệu (tần suất thuật ngữ) và khi nó hiếm trong toàn bộ bộ sưu tập (tần suất tài liệu nghịch đảo), nên “photosynthesis” nặng hơn “the.” Hầu hết các động cơ hiện đại mặc định dùng Okapi BM25, một cải tiến làm bão hòa tần suất thuật ngữ (lần xuất hiện thứ mười thêm ít so với lần thứ chín) và chuẩn hóa theo độ dài tài liệu để tài liệu dài không thắng chỉ nhờ kích thước. Bạn không cần suy ra công thức, nhưng bạn nên biết có một núm vặn, nó có mặc định có nguyên tắc, và thay đổi nó đổi kết quả nào xếp hạng đầu.
Đánh giá chất lượng bằng hai từ của lĩnh vực này. Độ chính xác là tỷ lệ kết quả trả về có liên quan; độ phủ là tỷ lệ tất cả kết quả liên quan mà bạn đã trả về. Chúng đánh đổi lẫn nhau. Nới lỏng truy vấn để bắt mọi khớp có thể thì độ chính xác giảm khi nhiễu len vào; siết chặt để có tập kết quả sạch thì độ phủ giảm khi các khớp tốt rơi mất. Mỗi quyết định về độ liên quan, từ dung sai lỗi gõ đến mở rộng từ đồng nghĩa, là một canh bạc về vị trí dọc đường cong đó mà người dùng của bạn muốn, và câu trả lời khác nhau cho một kho lưu trữ pháp lý (ưu tiên độ phủ, không bỏ sót gì) so với một cửa hàng (ưu tiên độ chính xác, cho thấy người thắng cuộc).
Đầu tư vào hiểu truy vấn
Người dùng không gõ theo cách tài liệu của bạn được viết. Họ viết sai chính tả, viết tắt, tìm một từ đồng nghĩa bạn chưa lập chỉ mục, và nhét ba ý định vào bốn từ. Hiểu truy vấn là tầng bắc cầu khoảng cách đó, và nó hoàn vốn hơn hầu như bất cứ thứ gì khác. Thêm từ đồng nghĩa được tuyển chọn và khai thác để “laptop” tìm thấy “notebook” và “heart attack” tìm thấy “myocardial infarction.” Thêm dung sai lỗi gõ qua khoảng cách chỉnh sửa, số thay đổi một ký tự giữa hai chuỗi, để “reciept” vẫn tìm thấy biên lai. Phát hiện thực thể và ý định để “flights to Paris under $500” được định tuyến đến đúng bộ lọc thay vì một túi từ.
Hãy xử lý các truy vấn khó nhất có chủ đích. Tìm kiếm một chuỗi chính xác hiếm, như số đơn hàng hay trích dẫn điều luật, muốn khớp chính xác và không mở rộng thông minh. Một câu hỏi ngôn ngữ tự nhiên mơ hồ muốn điều ngược lại. Hãy định tuyến chúng khác nhau thay vì ép một hành vi lên cả hai. Và luôn thiết kế trường hợp không có kết quả: khi một truy vấn không trả về gì, hãy nới lỏng nó, gợi ý lựa chọn thay thế, hoặc quay về một khớp rộng hơn, vì một trang trống là cách nhanh nhất để mất một người dùng.
Thêm khía cạnh, tự hoàn thành và lọc có cấu trúc
Tìm kiếm không chỉ là một danh sách xếp hạng. Tìm kiếm theo khía cạnh cho phép người dùng thu hẹp kết quả theo thuộc tính có cấu trúc: thương hiệu, khoảng giá, phòng ban, ngày, loại tài liệu. Khía cạnh biến một tập kết quả choáng ngợp thành một cuộc trò chuyện có hướng dẫn, và chúng kiêm điều hướng. Chúng phụ thuộc vào dữ liệu của bạn được gán thuộc tính sạch, là một khoản đầu tư chất lượng dữ liệu ở thượng nguồn tìm kiếm, và chúng tương tác với xếp hạng, vì một bộ lọc đổi tập ứng viên mà bộ xếp hạng thấy.
Tự hoàn thành và gợi ý định hình truy vấn trước cả khi nó được gửi. Một bộ gợi ý tốt đề xuất các truy vấn thật, giá trị cao khi người dùng gõ, sửa chính tả sớm, và nêu bật các ý định phổ biến hoặc đang thịnh hành. Nó cực kỳ nhạy cảm với độ trễ (mỗi lần gõ phím là một yêu cầu) và hưởng lợi trực tiếp từ các mẫu lưu đệm của chương 3.15. Gợi ý cũng lái mọi người về những truy vấn bạn xử lý tốt, lặng lẽ nâng độ liên quan tổng thể. Hãy coi bộ gợi ý là một chỉ mục nhỏ riêng với xếp hạng riêng, được điều chỉnh trên nhật ký truy vấn thay vì nội dung tài liệu.
Kết hợp tìm kiếm từ vựng và vector
Tìm kiếm cổ điển khớp từ. Nó không thể biết “car” và “automobile” cùng nghĩa trừ khi bạn nói với nó, và nó vấp trên các câu hỏi diễn đạt theo cách tài liệu của bạn không bao giờ dùng. Tìm kiếm vector giải quyết điều này bằng cách biểu diễn văn bản dưới dạng nhúng, một vector số dày đặc do một mô hình học máy tạo ra sao cho các nghĩa tương tự nằm gần nhau trong không gian vector. Truy xuất khi đó trở thành tìm láng giềng gần nhất trong không gian đó, và vì láng giềng gần nhất chính xác quá chậm ở quy mô lớn, các động cơ dùng thuật toán láng giềng gần nhất xấp xỉ (ANN) đánh đổi một chút độ chính xác lấy tăng tốc lớn. Tìm kiếm ngữ nghĩa kiểu này tìm đúng tài liệu ngay cả khi nó không chung từ nào với truy vấn.
Không cách tiếp cận nào thắng ở mọi nơi. Tìm kiếm từ vựng vượt trội ở thuật ngữ chính xác, tên, mã và từ khóa hiếm; nó minh bạch và rẻ để giải thích. Tìm kiếm vector vượt trội ở ý nghĩa, diễn đạt lại và câu hỏi ngôn ngữ tự nhiên, nhưng nó có thể bỏ lỡ một định danh chính xác và khó gỡ lỗi hơn. Mặc định mạnh cho các hệ thống nghiêm túc là tìm kiếm lai: chạy cả hai và hợp nhất kết quả, thường bằng một kỹ thuật như hợp nhất thứ hạng nghịch đảo trộn hai danh sách xếp hạng mà không cần điểm số của chúng so sánh được. Lai cho bạn độ chính xác của từ khóa và độ phủ của ngữ nghĩa, và suy giảm nhẹ nhàng khi một bên yếu.
Nối tìm kiếm với sinh tăng cường truy xuất
Người tiêu thụ tìm kiếm tăng nhanh nhất không phải một con người đọc danh sách kết quả; mà là một mô hình ngôn ngữ. Sinh tăng cường truy xuất (RAG) neo một mô hình sinh vào dữ liệu của bạn bằng cách truy xuất các đoạn liên quan và đặt chúng vào ngữ cảnh của mô hình để nó trả lời từ sự thật của bạn thay vì trí nhớ huấn luyện. Chất lượng sinh của chương 6.3 phụ thuộc trực tiếp vào chất lượng truy xuất: nạp cho mô hình sai đoạn và nó sẽ tự tin tổng hợp một câu trả lời sai. Mọi thứ trong chương này (chia văn bản thành đoạn, xếp hạng chúng tốt, hợp nhất tín hiệu từ vựng và vector, giữ chỉ mục mới) chính xác là nửa truy xuất của RAG. Nếu tổ chức của bạn đang xây dựng trên các mô hình ngôn ngữ lớn, hệ thống tìm kiếm của bạn là nền móng, và cải thiện độ phủ trên đúng các đoạn thường giúp trợ lý nhiều hơn là đổi mô hình.
Xây dựng đường ống lập chỉ mục cho độ mới
Một chỉ mục là một bản sao, và một bản sao trôi dạt. Đường ống lập chỉ mục là bộ máy giữ chỉ mục tìm kiếm đồng bộ với hệ thống ghi nhận: đọc các thay đổi nguồn, chạy phân tích và nhúng, và ghi vào chỉ mục, lý tưởng là dạng luồng thay vì lô hằng đêm. Đây là mối quan tâm kỹ thuật dữ liệu (chương 7.2), và cùng sự chăm chút về thứ tự, thử lại và tính lũy đẳng từ chương 3.3 áp dụng, vì một cập nhật sai thứ tự có thể làm sống lại một tài liệu đã xóa. Hãy quyết định tường minh mục tiêu độ mới của bạn. Một giá hay số lượng tồn kho có thể cần tìm kiếm được trong vài giây; một tài liệu chính sách đã lưu trữ có thể trễ hàng giờ. Hỗ trợ lập chỉ mục lại đầy đủ cho thay đổi lược đồ và bộ phân tích, và thiết kế nó chạy không thời gian chết, thường bằng cách dựng một chỉ mục mới và chuyển bí danh nguyên tử khi nó sẵn sàng.
Điều chỉnh độ liên quan bằng đánh giá, không phải ý kiến
Các cuộc tranh luận về độ liên quan không thể thắng bằng khẳng định, vì vậy hãy thay ý kiến bằng đo lường. Ngoại tuyến, hãy xây một danh sách phán đoán: một tập truy vấn đại diện được ghép với đánh giá của con người về kết quả nào liên quan, và chấm điểm xếp hạng của bạn đối chiếu với nó bằng một chỉ số như NDCG (độ lợi tích lũy chiết khấu chuẩn hóa), thưởng cho việc đặt kết quả rất liên quan gần đỉnh và chiết khấu những kết quả bị chôn thấp hơn. Đánh giá ngoại tuyến cho phép bạn so sánh hai cấu hình xếp hạng trước khi bất kỳ cái nào chạm người dùng. Trực tuyến, hãy theo dõi hành vi thực: tỷ lệ nhấp, vị trí của kết quả được nhấp, diễn đạt lại truy vấn, tỷ lệ không có kết quả và chuyển đổi. Chạy các thí nghiệm có kiểm soát (chương 7.4) để một thay đổi độ liên quan được chứng minh đối chiếu với một nhóm đối chứng thay vì phát hành theo linh cảm. Dùng cả hai, vì chỉ số ngoại tuyến nhanh nhưng lý tưởng hóa, còn chỉ số trực tuyến thực nhưng chậm và nhiễu. Vòng lặp trưởng thành khai thác nhật ký truy vấn để mở rộng danh sách phán đoán, để đánh giá cải thiện khi bạn học.
Mở rộng bằng mảnh và bản sao, và quan sát mọi thứ
Tìm kiếm mở rộng theo hai trục. Phân mảnh chia một chỉ mục qua các máy bằng cách phân vùng tài liệu, để một truy vấn tỏa ra mọi mảnh và các kết quả từng phần được hợp nhất; điều này cho phép một chỉ mục lớn vượt quá những gì một máy giữ được và trải tải lập chỉ mục. Bản sao sao chép từng mảnh để lưu lượng đọc trải qua các bản sao và mất một nút không mất dữ liệu; bản sao phục vụ thông lượng truy vấn và cung cấp khả năng phục hồi. Nhiều mảnh hơn nâng chi phí tỏa ra mỗi truy vấn, nên hãy định cỡ chúng theo dữ liệu của bạn, không phải theo một con số tròn. Vận hành tìm kiếm với khả năng quan sát của chương 9.2: theo dõi phân vị độ trễ truy vấn (phần đuôi quan trọng hơn trung bình), độ trễ lập chỉ mục, tỷ lệ trúng bộ đệm, tỷ lệ lỗi, và, như tín hiệu hạng nhất, các chỉ số độ liên quan như tỷ lệ không có kết quả và vị trí nhấp. Một hệ thống tìm kiếm nhanh nhưng trả kết quả kém đang thất bại trong im lặng, và chỉ đo đạc từ xa về độ liên quan mới cho bạn biết.
Đánh đổi: ưu và nhược điểm
| Cách tiếp cận | Ưu điểm | Nhược điểm |
|---|---|---|
| Tìm kiếm từ vựng (BM25) | Thuật ngữ chính xác, mã, tên; minh bạch; rẻ | Mù trước từ đồng nghĩa và diễn đạt lại nếu không điều chỉnh |
| Tìm kiếm vector (ngữ nghĩa) | Hiểu ý nghĩa và câu hỏi; độ phủ mạnh | Bỏ lỡ ID chính xác; tốn kém để tính; khó gỡ lỗi hơn |
| Tìm kiếm lai | Độ chính xác của từ khóa cộng độ phủ của ngữ nghĩa | Nhiều bộ phận chuyển động hơn; hợp nhất cần điều chỉnh và kiểm thử |
| Mở rộng lỗi gõ và từ đồng nghĩa quyết liệt | Độ phủ cao hơn; dễ tha thứ cho người dùng thật | Độ chính xác giảm; kết quả nhiễu nếu không kiểm soát |
| Lập chỉ mục thời gian thực | Kết quả mới trong vài giây | Chi phí và độ phức tạp cao hơn lô |
| Nhiều mảnh hơn | Chỉ mục lớn hơn; lập chỉ mục song song | Chi phí tỏa ra và phối hợp mỗi truy vấn cao hơn |
| Đánh giá ngoại tuyến (danh sách phán đoán) | Nhanh, lặp lại được, an toàn để lặp | Lý tưởng hóa; có thể không khớp hành vi người dùng thực |
| Đánh giá trực tuyến (chỉ số nhấp, thử nghiệm) | Phản ánh người dùng và ý định thực | Chậm, nhiễu, cần lưu lượng và kỷ luật thí nghiệm |
Căng thẳng lặp lại là độ chính xác so với độ phủ, và nó ẩn trong mọi núm vặn. Nới lỏng khớp, mở rộng từ đồng nghĩa, và dựa vào ngữ nghĩa, và bạn bắt được nhiều hơn với cái giá là nhiễu; siết chặt mọi thứ và bạn sạch nhưng bỏ sót. Không có thiết lập phổ quát, chỉ có thiết lập đúng cho một bộ sưu tập và đối tượng cụ thể, được khám phá qua đo lường. Căng thẳng thứ hai là độ mới so với chi phí: lập chỉ mục thời gian thực và truy xuất lai đều mua chất lượng bằng tính toán và độ phức tạp. Hãy giải quyết cả hai theo cùng cách, bằng cách gắn mỗi quyết định với một chỉ số đánh giá và một kết quả người dùng thay vì trực giác, để bạn thấy một thay đổi thực sự mua được gì.
Câu hỏi để thảo luận với đội của bạn
Hôm nay chúng ta đo độ liên quan tìm kiếm thế nào, và chúng ta có nhận ra nếu nó tệ đi không? Nhiều đội không trả lời được, nghĩa là độ liên quan của họ là bất cứ thứ gì mặc định tạo ra và họ bay mù trước các hồi quy. Hãy mang các tín hiệu hiện tại của bạn: bạn có danh sách phán đoán không, bạn có theo dõi tỷ lệ không có kết quả và vị trí nhấp không, bạn có thể so sánh khách quan hai cấu hình xếp hạng không? Khoảng cách giữa “tìm kiếm cảm thấy ổn” và “đây là NDCG của chúng tôi trên một trăm truy vấn đã chấm điểm, và đây là xu hướng tháng trước” là khoảng cách giữa đoán và kỹ thuật. Hành động theo sau là xây dựng dù chỉ một danh sách phán đoán nhỏ và đo đạc hành vi nhấp, vì bạn không thể điều chỉnh những gì bạn không đo, và mọi thay đổi độ liên quan bạn phát hành mù quáng là thay đổi bạn không thể bảo vệ.
Truy xuất từ vựng và ngữ nghĩa mỗi bên thất bại ở đâu với chúng ta, và chúng ta có nên chuyển sang lai không? Tìm kiếm từ khóa thuần túy lặng lẽ thất bại trên câu hỏi diễn đạt lại và từ đồng nghĩa, trong khi tìm kiếm vector thuần túy lặng lẽ thất bại trên định danh chính xác và thuật ngữ hiếm, và hầu hết các đội mới chỉ chạy một trong hai. Hãy mang một tập truy vấn thật trả kết quả kém và phân loại vì sao mỗi cái thất bại: là thiếu từ đồng nghĩa, lỗi chính tả, sai lệch ngữ nghĩa, hay thiếu khớp chính xác? Mẫu trong những thất bại đó cho bạn biết tìm kiếm lai có giúp ích không và nên dồn công sức vào đâu trước. Điều này quan trọng hơn nếu bạn đang nuôi một mô hình ngôn ngữ, vì thất bại truy xuất trở thành câu trả lời sai đầy tự tin, và chi phí của một kết quả xấu tăng mạnh khi một tầng sinh tạo nằm trên nó.
Yêu cầu về độ mới của chúng ta là gì, và đường ống lập chỉ mục của chúng ta có thực sự đáp ứng không? Độ mới thường được giả định hơn là đặc tả, nên các đội phát hiện sự lệch trong một sự cố khi một mục đã xóa vẫn xuất hiện hoặc một cập nhật giá trễ hàng giờ. Hãy mang các con số thực: mất bao lâu từ một thay đổi trong hệ thống ghi nhận đến khi thay đổi đó tìm kiếm được, và nó so với những gì các phần khác nhau của danh mục thực sự cần ra sao? Câu trả lời có lẽ khác nhau theo loại dữ liệu, và gọi tên nó buộc các quyết định đường ống về luồng so với lô, thứ tự và lập chỉ mục lại. Một chỉ mục cũ theo cách người dùng thấy được làm suy yếu niềm tin vào cả sản phẩm, và một mục tiêu độ mới bạn chưa bao giờ đo là mục tiêu bạn có lẽ đang bỏ lỡ.
Chúng ta xây tìm kiếm trên động cơ của chính mình hay mua một dịch vụ tìm kiếm hoặc vector được quản lý, và đổi ý sau này sẽ tốn bao nhiêu? Quyết định xây-so-với-mua định ra cấu trúc chi phí và trần kiểm soát của bạn trong nhiều năm, và các đội lớn có xu hướng trôi vào một câu trả lời theo quán tính thay vì quyết định có chủ đích. Hãy mang số liệu thực cho cả hai phía: chi phí vận hành của việc chạy và mở rộng cụm cùng đường ống nhúng của riêng bạn so với chi phí theo truy vấn hay đăng ký của một dịch vụ được quản lý, và thời gian kỹ thuật mỗi cái đòi hỏi từ những người bạn có thể triển khai nơi khác. Biến số ẩn là khóa chặt: bao nhiêu phần xếp hạng, phân tích và lược đồ vector của bạn có tính di động, và một cuộc di chuyển sẽ thực sự mất bao lâu nếu giá hay năng lực dịch chuyển dưới chân bạn. Trong bối cảnh doanh nghiệp và chính phủ, hãy thêm thời gian chờ mua sắm và nghĩa vụ thoát, vì một dịch vụ không thể phơi bày hành vi xếp hạng của nó hoặc xuất chỉ mục của bạn là một phụ thuộc bạn có thể không được phép chấp nhận.
Chúng ta sẵn sàng đầu tư bao nhiêu vào hiểu truy vấn, và ai rà soát các truy vấn thất bại? Người dùng viết sai chính tả, viết tắt, và diễn đạt câu hỏi bằng từ mà tài liệu của bạn không bao giờ dùng, nên khoảng cách giữa một truy vấn thô và một kết quả tốt là nơi phần lớn chất lượng tìm kiếm được cảm nhận sống, vậy mà hiếm khi đó là việc rõ ràng của ai. Hãy mang tỷ lệ không có kết quả, các truy vấn thất bại và bị diễn đạt lại hàng đầu của bạn, và một tường thuật trung thực về cách xử lý từ đồng nghĩa, dung sai lỗi gõ và ý định bạn có hôm nay. Lực kéo đối lập là độ chính xác so với độ phủ: mỗi từ đồng nghĩa và mỗi đơn vị khoảng cách chỉnh sửa bạn cho phép bắt thêm người dùng thật và thu nhận thêm nhiễu, nên khoản đầu tư đúng là cái bạn đo được chứ không phải cái nghe có vẻ hào phóng. Với một tổ chức lớn hoặc công, cái đuôi dài các truy vấn thất bại cũng là một bản đồ nhu cầu chưa được đáp ứng, và rà soát nó theo nhịp cố định biến một chi phí hỗ trợ thành lộ trình, đặc biệt nơi một biểu mẫu hay khoản trợ cấp bị bỏ lỡ có hậu quả thực cho một công dân.
Ai sở hữu độ liên quan như một trách nhiệm được tài trợ, liên tục, và vòng lặp đánh giá sẽ sống sót thế nào sau khi ra mắt? Tìm kiếm không bao giờ hoàn thành: danh mục thay đổi, ngôn ngữ trôi dạt, và việc điều chỉnh quý trước lặng lẽ phân rã, nên một hệ thống không có chủ sở hữu chịu trách nhiệm thoái lui về bất cứ thứ gì mặc định tạo ra. Hãy mang thực tế sơ đồ tổ chức: độ liên quan là một đội có tên với thời gian và chỉ số, hay một nhiệm vụ rơi vào ai chạm vào chỉ mục lần cuối, và có tồn tại danh sách phán đoán cùng bộ máy thí nghiệm mà một người mới có thể tiếp quản không? Căng thẳng là công việc độ liên quan không hào nhoáng và dễ bị cắt tài trợ ngay khoảnh khắc tìm kiếm có vẻ hoạt động, chính là lúc sự phân rã bắt đầu. Trong bối cảnh doanh nghiệp và chính phủ, hãy gắn quyền sở hữu với các nghĩa vụ cụ thể, độ chính xác theo từng thị trường, khả năng tiếp cận, độ bao phủ đa ngôn ngữ, và rà soát các truy vấn không có kết quả, để trách nhiệm kiểm toán được và không bốc hơi khi đội ra mắt giải tán.
Góc nhìn theo lĩnh vực
Công ty khởi nghiệp. Hãy với tới một dịch vụ tìm kiếm hoặc vector được quản lý và phát hành mặc định BM25 ngay ngày đầu; đừng dựng cụm riêng trước khi bạn có truy vấn để điều chỉnh. Chọn bề mặt tìm kiếm duy nhất chạm vào doanh thu hay giữ chân, đo vị trí nhấp và tỷ lệ không có kết quả từ bản phát hành đầu tiên, và để nhật ký truy vấn thực, không phải lộ trình, cho bạn biết khi nào thêm từ đồng nghĩa hay tầng ngữ nghĩa. Cùng tầng truy xuất bạn xây cho tìm kiếm sau này trở thành backend sinh tăng cường truy xuất của bạn, nên hãy giữ nó sau một giao diện mỏng.
Doanh nghiệp nhỏ. Bạn gần như chắc chắn không có kỹ sư độ liên quan, vì vậy hãy mua tìm kiếm nhúng trong nền tảng bạn đã chạy, như máy chủ thương mại điện tử, bàn hỗ trợ hay hệ thống quản lý nội dung, và coi việc điều chỉnh là việc vặt định kỳ nhẹ nhàng hơn là một dự án. Hãy dành công sức hạn chế cho những điều cơ bản về chất lượng dữ liệu mà tìm kiếm phụ thuộc: thuộc tính sản phẩm sạch cho khía cạnh, tiêu đề hợp lý, và một danh sách từ đồng nghĩa ngắn cho những từ khách hàng thực sự dùng. Hãy theo dõi các truy vấn không có kết quả hằng tháng, vì chúng là tín hiệu rẻ nhất về một khoảng trống bạn có thể đóng mà không cần kỹ sư.
Doanh nghiệp lớn. Vấn đề là độ liên quan ở quy mô lớn qua nhiều đội, danh mục và ngôn ngữ: một phương pháp danh sách phán đoán dùng chung, đánh giá theo từng thị trường, và một chức năng độ liên quan được tài trợ để mỗi nhóm không điều chỉnh lại BM25 từ đầu. Hãy chuẩn hóa đường ống lập chỉ mục, mục tiêu độ mới, và kỷ luật thí nghiệm kiểm soát các thay đổi xếp hạng, và định cỡ phân mảnh cùng sao chép có chủ đích thay vì theo thói quen. Cân nhắc xây-so-với-mua một cách tường minh, vì một dịch vụ vector được quản lý có thể cắt giảm chi phí vận hành với cái giá là một ít kiểm soát và khóa chặt tiềm tàng.
Chính phủ. Khả năng tìm thấy thường là nghĩa vụ pháp lý và vấn đề công bằng: một công dân không tìm được đúng biểu mẫu không thể thực hiện một quyền. Hãy ưu tiên độ phủ và xếp hạng có thể diễn giải để cơ quan có thể giải thích vì sao một kết quả xuất hiện, thêm từ đồng nghĩa bắc cầu các thuật ngữ ngôn ngữ đơn giản với tiêu đề chính thức, và coi khả năng tiếp cận cùng hỗ trợ đa ngôn ngữ là yêu cầu chứ không phải phần thêm. Mua sắm nên cân nhắc khóa chặt và yêu cầu mọi dịch vụ được quản lý phơi bày hành vi xếp hạng và trao tính di động dữ liệu, và các truy vấn không có kết quả nên được rà soát như một bản ghi công khai về nhu cầu chưa được đáp ứng.
Ví dụ
Công ty khởi nghiệp. Một công ty phần mềm mười người thêm tìm kiếm vào cơ sở tri thức hỗ trợ để khách hàng tự phục vụ. Họ bắt đầu với mặc định BM25 và nhanh chóng chạm trần: người dùng hỏi bằng ngôn ngữ đơn giản không chung từ khóa nào với các bài viết. Họ thêm nhúng vector và hợp nhất hai bên bằng hợp nhất thứ hạng nghịch đảo, và tỷ lệ tự giải quyết cải thiện qua đêm. Để điều chỉnh, họ khai thác nhật ký truy vấn của chính mình, gắn nhãn vài trăm cặp truy vấn-bài viết, và theo dõi vị trí nhấp hằng tuần. Khi sau này họ thêm một trợ lý trong sản phẩm, cùng tầng truy xuất trở thành backend RAG, nên khoản đầu tư tìm kiếm hoàn vốn hai lần.
Doanh nghiệp lớn. Một nhà bán lẻ toàn cầu chạy tìm kiếm sản phẩm trên hàng chục triệu mục qua hàng chục thị trường và ngôn ngữ. Chỉ mục được phân mảnh theo kích thước và sao chép cho thông lượng, với bộ phân tích theo từng ngôn ngữ xử lý tách từ và rút gọn từ gốc đúng cho từng thị trường. Điều hướng theo khía cạnh qua thương hiệu, giá và tình trạng còn hàng biến các tập kết quả khổng lồ thành duyệt có hướng dẫn, và tự hoàn thành lái người mua về các truy vấn chuyển đổi cao. Độ liên quan là một đội được tài trợ với danh sách phán đoán theo từng thị trường và thí nghiệm trực tuyến liên tục; một thay đổi xếp hạng chỉ được phát hành sau khi nó thắng nhóm đối chứng về chuyển đổi. Một đường ống lập chỉ mục thời gian thực giữ giá và tồn kho tìm kiếm được trong vài giây, vì một mặt hàng đã hết xếp hạng đầu là một đơn hàng mất và một phiếu hỗ trợ.
Chính phủ. Một cơ quan quốc gia công bố quy định, biểu mẫu và hướng dẫn mà công chúng phải tìm được, thường dưới nghĩa vụ pháp lý và ở tải đỉnh theo hạn chót. Đội ưu tiên độ phủ và tính minh bạch: công dân tìm kiếm một khoản trợ cấp không được bỏ lỡ biểu mẫu liên quan, và cơ quan phải giải thích được vì sao một kết quả xuất hiện, điều đẩy họ về xếp hạng từ vựng có thể diễn giải được tăng cường, cẩn thận, bằng từ đồng nghĩa cho các thuật ngữ ngôn ngữ đơn giản mà mọi người dùng thay vì tiêu đề chính thức. Khả năng tiếp cận và hỗ trợ đa ngôn ngữ là yêu cầu, không phải phần thêm. Chỉ mục được lập lại không thời gian chết sau một bí danh khi tài liệu chính sách thay đổi, và các truy vấn không có kết quả được ghi nhật ký và rà soát như tín hiệu về nhu cầu công chưa được đáp ứng.
Luận chứng kinh doanh: động lực, ROI và TCO
Tìm kiếm nằm thẳng trên con đường đến giá trị. Trong thương mại, một phần doanh thu đo được chảy qua ô tìm kiếm, và người dùng tìm kiếm chuyển đổi ở tỷ lệ cao hơn những người chỉ duyệt, nên vài điểm cải thiện độ liên quan chuyển thành tiền thật. Trong hỗ trợ và công cụ nội bộ, tìm kiếm tốt hơn làm giảm phiếu, rút ngắn thời gian xử lý, và lấy lại những giờ mà nhân viên tri thức mất đi khi săn tài liệu. Trong khu vực công, tìm kiếm hiệu quả là vấn đề chất lượng dịch vụ và công bằng: những người không tìm được đúng biểu mẫu hay hướng dẫn không thể thực hiện một quyền hay đáp ứng một nghĩa vụ. Những kết quả này định lượng được, đúng là lý do tìm kiếm xứng đáng được đánh giá có tài trợ hơn là mặc định nỗ lực tốt nhất.
Tổng chi phí sở hữu vượt xa giấy phép hay cụm máy. Bạn trả cho tính toán và lưu trữ của chỉ mục cùng các bản sao của nó, cho việc tạo nhúng nếu bạn đi theo ngữ nghĩa, cho đường ống lập chỉ mục giữ nó mới, và, nhiều nhất, cho công việc con người liên tục của điều chỉnh và đánh giá độ liên quan. Khoản chi cuối cùng đó là cái các đội đánh giá thấp và là cái quyết định thành công nhiều nhất, vì tìm kiếm không bao giờ hoàn thành: danh mục thay đổi, ngôn ngữ trôi dạt, và việc điều chỉnh hôm qua phân rã. Mua một dịch vụ tìm kiếm hoặc vector được quản lý có thể hạ chi phí vận hành và tăng tốc bạn, với cái giá là một ít kiểm soát và khóa chặt tiềm tàng, một quyết định xây-so-với-mua kinh điển để cân nhắc đối chiếu với quy mô và sự khác biệt hóa của bạn. Luận chứng kinh doanh mạnh nhất gắn một chỉ số độ liên quan cụ thể với một kết quả cụ thể, tài trợ vòng lặp đánh giá, và coi tìm kiếm là một sản phẩm được đo và cải thiện, không phải một thành phần được cài đặt rồi bị quên.
Phản mẫu và cạm bẫy
- Phân tích không khớp: bộ phân tích lúc lập chỉ mục và lúc truy vấn bất đồng, nên các thuật ngữ âm thầm không khớp và kết quả biến mất mà không có lỗi.
- Độ liên quan theo ý kiến: xếp hạng được điều chỉnh bởi ai tranh luận hăng nhất, không có danh sách phán đoán, không chỉ số, và không cách nào bắt hồi quy.
- Niềm tin chỉ vào vector: thay hoàn toàn tìm kiếm từ khóa bằng nhúng, rồi thất bại trên ID chính xác, mã và thuật ngữ hiếm.
- Bỏ qua không có kết quả: để các trang kết quả trống đứng đó thay vì nới lỏng, gợi ý hoặc quay về phương án dự phòng, và mất người dùng.
- Chỉ mục cũ: một đường ống lô hằng đêm phục vụ giá, tồn kho hoặc các lần xóa mà người dùng thấy là sai.
- Thời gian chết khi lập chỉ mục lại: dựng lại tại chỗ thay vì sau một bí danh, đưa tìm kiếm ngoại tuyến trong mỗi thay đổi lược đồ.
- Mặc định không điều chỉnh mãi mãi: phát hành BM25 có sẵn rồi không bao giờ xem lại khi bộ sưu tập và đối tượng tiến hóa.
- Không có đo đạc từ xa về độ liên quan: giám sát độ trễ và lỗi nhưng không giám sát tỷ lệ không có kết quả hay vị trí nhấp, nên kết quả kém thất bại trong im lặng.
- Mở rộng quá mức: chồng từ đồng nghĩa và dung sai lỗi gõ cho đến khi độ chính xác sụp đổ và mọi truy vấn trả về nhiễu.
Mô hình trưởng thành
- Mức 1, Khởi đầu: Tìm kiếm là một truy vấn cơ sở dữ liệu mặc định hoặc một động cơ chưa điều chỉnh với thiết lập có sẵn, được dựng phản ứng khi cuối cùng có ai đó yêu cầu. Không có đo lường độ liên quan, không có tầng hiểu truy vấn, và độ mới là bất cứ thứ gì một công việc lô tình cờ tạo ra. Kết quả kém chỉ được nhận ra khi người dùng phàn nàn, và mỗi bản sửa là một lần.
- Mức 2, Phát triển: Một động cơ tìm kiếm thật đã có với phân tích hợp lý, xếp hạng BM25, và khía cạnh cùng tự hoàn thành cơ bản. Một số từ đồng nghĩa và dung sai lỗi gõ tồn tại, đội theo dõi độ trễ và lỗi, và đã bắt đầu ghi nhật ký các truy vấn không có kết quả. Thực hành khác nhau từ đội này sang đội khác và sản phẩm này sang sản phẩm khác, và độ liên quan vẫn được điều chỉnh theo ý kiến thay vì bằng chứng.
- Mức 3, Chuẩn hóa: Thực hành độ liên quan được lập tài liệu và áp dụng nhất quán trong toàn tổ chức. Các đội đo bằng một phương pháp danh sách phán đoán dùng chung và NDCG ngoại tuyến cùng chỉ số nhấp trực tuyến, chạy truy xuất lai từ vựng-cộng-vector ở nơi nó giúp ích, giữ đường ống lập chỉ mục theo một mục tiêu độ mới đã nêu, và lập chỉ mục lại không thời gian chết sau một bí danh. Phân mảnh và sao chép được định cỡ có chủ đích, và chỉ số độ liên quan được giám sát cùng chỉ số vận hành.
- Mức 4, Quản lý: Tìm kiếm được đo và kiểm soát theo các đường cơ sở. Mỗi bề mặt tìm kiếm theo dõi xu hướng NDCG, tỷ lệ không có kết quả, vị trí nhấp và tỷ lệ diễn đạt lại so với một đường cơ sở đã thống nhất, với mục tiêu mức dịch vụ về phân vị độ trễ truy vấn và độ trễ lập chỉ mục. Thay đổi xếp hạng và phân tích chỉ được phát hành sau khi một thí nghiệm có kiểm soát thắng nhóm đối chứng về một kết quả được nêu tên, một hồi quy độ liên quan tự động kích hoạt cảnh báo, và bảng điều khiển theo từng thị trường hay phân khúc làm cho sự phân rã lặng lẽ hiện rõ trước khi người dùng cảm nhận. Các quyết định đổi một núm vặn được đưa ra dựa trên dữ liệu, với tiêu chí hoàn tác tường minh.
- Mức 5, Điều phối: Cải thiện tìm kiếm là một vòng lặp liên tục, dẫn dắt bởi thí nghiệm và tích hợp trong toàn tổ chức. Danh sách phán đoán lớn lên từ nhật ký truy vấn được khai thác, hiểu truy vấn thích ứng với ngôn ngữ thực, và truy xuất được điều chỉnh làm nền móng dùng chung cho các ứng dụng sinh tạo hạ nguồn. Toàn bộ hệ thống được quan sát từ đầu đến cuối về cả tốc độ lẫn độ liên quan, và thực hành tìm kiếm tự cân bằng lại khi danh mục, ngôn ngữ và bối cảnh mô hình trôi dạt.
Ý tưởng để thảo luận
- Tỷ lệ nào trong các lượt tìm kiếm của bạn trả về không có kết quả hoặc dẫn đến diễn đạt lại, và những truy vấn đó tiết lộ gì về nhu cầu chưa được đáp ứng?
- Nếu bạn thay thế tìm kiếm từ khóa bằng tìm kiếm vector thuần túy vào ngày mai, truy vấn nào sẽ hỏng, và làm sao bạn biết trước khi người dùng biết?
- Ai sở hữu độ liên quan trong tổ chức của bạn, và họ có danh sách phán đoán cùng chỉ số, hay chỉ có ý kiến và giai thoại?
- Độ trễ từ một thay đổi trong hệ thống ghi nhận đến khi thay đổi đó tìm kiếm được là bao lâu, và điều đó có chấp nhận được cho mọi loại dữ liệu không?
- Nếu một mô hình ngôn ngữ tiêu thụ kết quả tìm kiếm của bạn, chất lượng truy xuất của bạn có đáp ứng thanh chuẩn cao hơn mà một câu trả lời sinh tạo đòi hỏi không?
- Bạn sẽ bảo vệ một thay đổi xếp hạng trước một bên liên quan hoài nghi thế nào: bằng kết quả thí nghiệm, hay bằng một câu chuyện?
Những điểm cần ghi nhớ
- Coi tìm kiếm là một hệ thống hạng nhất: một chỉ mục phái sinh với mô hình dữ liệu, đường ống, mở rộng và chế độ thất bại riêng, tách biệt khỏi hệ thống ghi nhận của bạn.
- Nắm vững những điều cơ bản (chỉ mục đảo ngược, phân tích khớp nhau, xếp hạng BM25, độ chính xác so với độ phủ) trước khi với tới bất cứ thứ gì cầu kỳ hơn.
- Đầu tư vào hiểu truy vấn (từ đồng nghĩa, dung sai lỗi gõ, ý định, và một kế hoạch thực cho không có kết quả) vì người dùng không bao giờ gõ theo cách tài liệu của bạn được đọc.
- Mặc định truy xuất lai hợp nhất tìm kiếm từ vựng và vector, và nhớ rằng cùng tầng truy xuất này là nền móng của sinh tăng cường truy xuất.
- Thay ý kiến bằng đo lường: danh sách phán đoán và NDCG ngoại tuyến, chỉ số nhấp và thí nghiệm có kiểm soát trực tuyến, và đo đạc từ xa về độ liên quan được giám sát như bất kỳ tín hiệu sản xuất nào.
Tài liệu tham khảo và đọc thêm
- Christopher D. Manning, Prabhakar Raghavan và Hinrich Schütze, Introduction to Information Retrieval
- Stephen E. Robertson và Hugo Zaragoza, The Probabilistic Relevance Framework: BM25 and Beyond
- Ricardo Baeza-Yates và Berthier Ribeiro-Neto, Modern Information Retrieval: The Concepts and Technology behind Search
- Doug Turnbull và John Berryman, Relevant Search: With Applications for Solr and Elasticsearch
- Trey Grainger, Doug Turnbull và Max Irwin, AI-Powered Search
- Patrick Lewis và cộng sự, “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”
- Jeff Johnson, Matthijs Douze và Hervé Jégou, “Billion-Scale Similarity Search with GPUs”
- Kalervo Järvelin và Jaana Kekäläinen, “Cumulated Gain-Based Evaluation of IR Techniques”