Tìm kiếm vector (tìm kiếm ngữ nghĩa)
Định nghĩa nhanh
Tìm kiếm vector là một phương pháp truy xuất trả về các mục có nhúng gần nhất với nhúng của truy vấn, vì vậy kết quả khớp theo ý nghĩa thay vì theo từ khóa chung. Đây là động cơ thông thường của tìm kiếm ngữ nghĩa.
Trên trang này
Cách tìm kiếm vector hoạt động
Mỗi tài liệu, đoạn văn hoặc sản phẩm được chuyển đổi thành một nhúng và lưu trữ trong một chỉ mục. Tại thời điểm truy vấn, câu hỏi được nhúng bằng cùng một mô hình, và chỉ mục trả về các vector gần nhất, thường được đo bằng độ tương đồng cosine. Một khách hàng hỏi “một cái gì đó ấm áp cho việc trượt tuyết” có thể tìm thấy một chiếc áo khoác được mô tả là “vỏ mùa đông cách nhiệt, chống thấm” mặc dù không có từ nào khớp.
So sánh một truy vấn với hàng triệu vector một cách lần lượt sẽ rất chậm, vì vậy các chỉ mục sử dụng các thuật toán tìm kiếm gần nhất xấp xỉ. HNSW, một đồ thị nhiều lớp được Malkov và Yashunin mô tả vào năm 2016, là một trong những thuật toán được sử dụng rộng rãi nhất; nó đánh đổi một chút mất mát độ chính xác để có tìm kiếm rất nhanh. Các phần mở rộng mã nguồn mở như pgvector mang các chỉ mục này đến PostgreSQL.
Tìm kiếm ngữ nghĩa so với tìm kiếm từ khóa
Tìm kiếm từ khóa (BM25, toàn văn, khớp trigram) chính xác với các thuật ngữ chính xác: một tham chiếu sản phẩm, một thương hiệu, một mã lỗi. Nó không hiệu quả với các từ đồng nghĩa và diễn đạt lại. Tìm kiếm vector thì ngược lại: mạnh về ý nghĩa, yếu về chuỗi chính xác và các định danh hiếm.
Đó là lý do tại sao hầu hết các hệ thống sản xuất sử dụng tìm kiếm hỗn hợp: chạy cả hai, sau đó hợp nhất hoặc xếp hạng lại kết quả.
Cạm bẫy
Tìm kiếm vector luôn trả về một cái gì đó, ngay cả khi không có nội dung liên quan, vì vậy một hệ thống cần một ngưỡng liên quan hoặc một kiểm tra trước khi sử dụng kết quả. Nó không hiểu số hoặc ràng buộc: “dưới 50 euro, có sẵn, kích thước M” cần các bộ lọc thực sự trên dữ liệu có cấu trúc. Và chất lượng phụ thuộc vào cách nội dung được phân chia: các đoạn quá dài làm mờ nghĩa, các đoạn quá ngắn mất ngữ cảnh.
Tìm kiếm vector trong AI SmartTalk
AI SmartTalk lưu trữ các embedding trong PostgreSQL với pgvector, với chỉ mục HNSW trên tài liệu sản phẩm, và kết hợp độ tương đồng vector với tìm kiếm trigram và toàn văn. Đối với các sản phẩm, công cụ tìm kiếm của trợ lý thêm các bộ lọc có cấu trúc về giá, tồn kho, thương hiệu, danh mục và thuộc tính biến thể, để một câu hỏi ngữ nghĩa và một ràng buộc chính xác có thể được trả lời cùng nhau.
Câu hỏi thường gặp
Tìm kiếm ngữ nghĩa có giống với tìm kiếm vector không?
Tìm kiếm ngữ nghĩa là mục tiêu — tìm kết quả theo nghĩa. Tìm kiếm vector qua các embedding là cách phổ biến nhất để đạt được điều đó, thường được kết hợp với tìm kiếm theo từ khóa.
Tôi có cần một cơ sở dữ liệu vector chuyên dụng không?
Không nhất thiết. Các phần mở rộng như pgvector thêm các chỉ mục vector vào PostgreSQL, điều này đủ cho nhiều ứng dụng và giữ các vector bên cạnh phần còn lại của dữ liệu.
Tìm kiếm lai là gì?
Một tìm kiếm chạy tìm kiếm vector và tìm kiếm từ khóa cùng nhau và hợp nhất các kết quả, để xử lý cả các câu hỏi diễn đạt lại và các thuật ngữ chính xác như tham chiếu sản phẩm.