Semantic Search
Tìm kiếm ngữ nghĩa xếp hạng tài liệu và hình ảnh theo ý nghĩa của truy vấn thay vì các từ khớp chính xác, bằng cách sử dụng embedding, tìm kiếm láng giềng gần nhất và reranker.
Tìm kiếm ngữ nghĩa xếp hạng tài liệu, hình ảnh hoặc các mục khác theo mức độ ý nghĩa của chúng gần với ý nghĩa của truy vấn, thay vì dựa trên các từ chúng dùng chung. Tìm kiếm "mèo của tôi đang đói" có thể trả về trang có tiêu đề "Lịch cho mèo con mới ăn" dù hai cụm từ không có từ nào trùng nhau. Các hệ thống hiện đại thực hiện việc này bằng embedding: bộ mã hóa nơ-ron ánh xạ truy vấn và mục dữ liệu thành các vector nằm gần nhau khi ý nghĩa tương tự; tìm kiếm vector tìm các mục gần nhất. Tìm kiếm web bắt đầu chuyển theo hướng này vào năm 2019, khi Google bắt đầu áp dụng BERT để hiểu truy vấn tìm kiếm, một thay đổi mà Google cho biết ảnh hưởng đến một trong mười lượt tìm kiếm bằng tiếng Anh tại Mỹ.
Tìm kiếm ngữ nghĩa hoạt động như thế nào#
Hầu hết hệ thống tìm kiếm ngữ nghĩa truy xuất bằng bi-encoder rồi tinh chỉnh thứ hạng bằng reranker. Bi-encoder embedding mỗi tài liệu một lần từ trước, sau đó đưa các vector vào cơ sở dữ liệu vector. Khi có truy vấn, chỉ cần embedding truy vấn; chỉ mục láng giềng gần đúng trả về các ứng viên hàng đầu theo độ tương đồng cosine. Sentence-BERT (2019) giúp phương pháp này trở nên thiết thực cho câu: tìm cặp câu tương tự nhất trong 10.000 câu mất khoảng 65 giờ với cross-encoder BERT, nhưng chỉ khoảng 5 giây với embedding câu của nó. Dense Passage Retrieval (2020) sau đó cho thấy embedding được học vượt thứ hạng từ khóa BM25 từ 9 đến 19 điểm về độ chính xác truy xuất đoạn văn top-20 trên các tác vụ trả lời câu hỏi miền mở. Cuối cùng, reranker cross-encoder đọc truy vấn cùng từng ứng viên để sắp xếp lại danh sách ngắn chính xác hơn.
Ví dụ này so sánh mức độ trùng khớp từ với độ tương đồng embedding bằng thư viện Sentence Transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
documents = [
"How to reset a forgotten account password",
"Feeding schedule for a new kitten",
"Quarterly sales report for the retail division",
"Best hiking trails near Denver",
]
query = "my cat is hungry"
# Keyword search: documents sharing at least one word with the query
query_words = set(query.lower().split())
print("Keyword matches:", [d for d in documents if query_words & set(d.lower().split())])
# Semantic search: rank documents by cosine similarity of their embeddings
doc_embeddings = model.encode(documents)
query_embedding = model.encode(query)
scores = model.similarity(query_embedding, doc_embeddings)[0]
best = int(scores.argmax())
print(f"Semantic match: {documents[best]!r} (cosine {scores[best]:.2f})")So khớp từ khóa trả về danh sách rỗng vì không tài liệu nào chứa các từ "my", "cat", "is" hoặc "hungry". Tìm kiếm ngữ nghĩa trả về lịch cho mèo con ăn với độ tương đồng cosine 0,56, là tài liệu gần nhất về mặt ý nghĩa.
Tìm kiếm ngữ nghĩa và các thuật ngữ liên quan#
- Tìm kiếm từ khóa: Xếp hạng tài liệu theo kết quả khớp thuật ngữ chính xác bằng các công thức như BM25. Phương pháp này xử lý tốt tên riêng, mã linh kiện và từ hiếm—những thứ embedding có thể làm mờ nghĩa—nhưng bỏ sót từ đồng nghĩa và cách diễn đạt tương đương.
- Tìm kiếm kết hợp: Chạy đồng thời truy xuất từ khóa và truy xuất ngữ nghĩa rồi hợp nhất kết quả; đây là cấu hình phổ biến trong hệ thống tìm kiếm production và RAG.
- Phân đoạn ngữ nghĩa: Một tác vụ thị giác máy tính không liên quan, gán class cho từng pixel của ảnh và chỉ chung từ "ngữ nghĩa".
- Caching ngữ nghĩa: Áp dụng phương pháp so khớp dựa trên ý nghĩa tương tự cho yêu cầu LLM, tái sử dụng câu trả lời đã lưu khi prompt mới có nghĩa giống prompt trước đó.
Ứng dụng thực tế#
- Sinh tăng cường truy xuất (RAG): Tìm các đoạn văn mà model ngôn ngữ cần, ngay cả khi cách diễn đạt của người dùng khác với tài liệu.
- Tìm kiếm bằng sáng chế: Tìm ra các tài liệu kỹ thuật trước đó mô tả cùng phát minh bằng thuật ngữ khác.
- Tìm kiếm sản phẩm bán lẻ: Khớp truy vấn như "giày đi làm trong ngày mưa" với giày sneaker chống thấm dù thông tin sản phẩm không dùng những từ đó.
- Hệ thống gợi ý: Đề xuất bài viết hoặc sản phẩm có embedding nằm gần các mục mà người dùng đã chọn.
Tìm kiếm hình ảnh theo ý nghĩa#
Các model được huấn luyện bằng học tương phản trên các cặp ảnh-chú thích, chẳng hạn CLIP, embedding văn bản và hình ảnh vào cùng một không gian để truy vấn văn bản có thể xếp hạng ảnh không có thẻ hay chú thích. Giải pháp tìm kiếm ảnh ngữ nghĩa của Ultralytics được xây dựng theo cách này: lớp VisualAISearch embedding mỗi ảnh trong thư mục bằng CLIP một lần, embedding mỗi truy vấn văn bản vào cùng không gian, rồi trả về tối đa 30 ảnh có độ tương đồng cosine với truy vấn vượt ngưỡng, được xếp từ tương tự nhất đến ít tương tự nhất. Sau đó, truy vấn như "một chú chó đang ngồi trên ghế dài" có thể tìm ra ảnh phù hợp trong bộ sưu tập chưa gắn nhãn.










