Nhiều tổ chức mà chúng tôi đã trò chuyện đang trong giai đoạn khám phá việc sử dụng tìm kiếm vectơ để cá nhân hóa, đề xuất, tìm kiếm ngữ nghĩa và phát hiện bất thường do AI cung cấp. Những cải tiến gần đây và vượt bậc về độ chính xác và khả năng truy cập của các mô hình ngôn ngữ lớn (LLM) bao gồm BERT và OpenAI đã khiến các công ty phải suy nghĩ lại về cách xây dựng trải nghiệm tìm kiếm và phân tích có liên quan.
Trong blog này, chúng tôi ghi lại những câu chuyện kỹ thuật từ 5 công ty đầu tiên áp dụng tìm kiếm vectơ- Pinterest, Spotify, eBay, Airbnb và Doordash- những người đã tích hợp AI vào ứng dụng của họ. Chúng tôi hy vọng những câu chuyện này sẽ hữu ích cho các nhóm kỹ thuật đang suy nghĩ về toàn bộ vòng đời của tìm kiếm vectơ, từ tạo nội dung nhúng đến triển khai sản xuất.
Tìm kiếm vectơ là một phương pháp để tìm và truy xuất hiệu quả các mục tương tự từ một tập dữ liệu lớn dựa trên cách biểu diễn dữ liệu trong không gian nhiều chiều. Trong ngữ cảnh này, các mục có thể là bất cứ thứ gì, chẳng hạn như tài liệu, hình ảnh hoặc âm thanh và được biểu diễn dưới dạng các vectơ nhúng. Độ tương tự giữa các mục được tính toán bằng cách sử dụng số liệu khoảng cách, chẳng hạn như độ tương tự cosin hoặc khoảng cách Euclide , giúp định lượng mức độ gần nhau của hai vectơ nhúng.
Quá trình tìm kiếm vector thường bao gồm:
Để hình dung rõ hơn việc tìm kiếm vectơ, chúng ta có thể tưởng tượng một không gian 3D trong đó mỗi trục tương ứng với một đối tượng. Thời gian và vị trí của một điểm trong không gian được xác định bởi các giá trị của các đặc điểm này. Trong không gian này, những đồ vật giống nhau được đặt gần nhau hơn và những đồ vật khác nhau thì cách xa nhau hơn.
^ | x Item 1 | / | / | /x Item 2 | / | / | /x Item 3 | / | / | / +------------------->
Đưa ra một truy vấn, sau đó chúng ta có thể tìm thấy các mục tương tự nhất trong tập dữ liệu. Truy vấn được biểu diễn dưới dạng vectơ nhúng trong cùng một không gian với phần nhúng mục và khoảng cách giữa phần nhúng truy vấn và phần nhúng mục được tính toán. Các phần nhúng mục có khoảng cách ngắn nhất với phần nhúng truy vấn được coi là tương tự nhất.
Query item: x | ^ | | x Item 1| | / | | / | | /x Item 2 | | / | | / | | /x Item 3 | | / | | / | | / | +------------------->
Đây rõ ràng là một hình dung đơn giản hóa khi tìm kiếm vectơ hoạt động trong không gian nhiều chiều.
Trong các phần tiếp theo, chúng tôi sẽ tóm tắt 5 blog kỹ thuật về tìm kiếm vectơ và nêu bật những cân nhắc triển khai chính. Các blog kỹ thuật đầy đủ có thể được tìm thấy dưới đây:
Pinterest sử dụng tìm kiếm vectơ để tìm kiếm và khám phá hình ảnh trên nhiều lĩnh vực trên nền tảng của mình, bao gồm nội dung được đề xuất trên nguồn cấp dữ liệu trang chủ, các ghim liên quan và tìm kiếm bằng mô hình học tập đa nhiệm.
Một mô hình đa tác vụ được đào tạo để thực hiện đồng thời nhiều tác vụ, thường chia sẻ các biểu diễn hoặc tính năng cơ bản, điều này có thể cải thiện tính tổng quát và hiệu quả giữa các tác vụ liên quan. Trong trường hợp của Pinterest, nhóm đã đào tạo và sử dụng mô hình tương tự để thúc đẩy nội dung được đề xuất trên nguồn cấp dữ liệu gia đình, các ghim liên quan và tìm kiếm.
Pinterest đào tạo mô hình bằng cách ghép nối truy vấn tìm kiếm của người dùng (q) với nội dung họ đã nhấp vào hoặc ghim họ đã lưu (p). Đây là cách Pinterest tạo các cặp (q,p) cho mỗi tác vụ:
Các Ghim liên quan : Các từ nhúng được lấy từ chủ đề đã chọn (q) và mã pin được người dùng nhấp vào hoặc lưu (p).
Tìm kiếm : Các từ nhúng được tạo từ văn bản truy vấn tìm kiếm (q) và mã pin được người dùng nhấp vào hoặc lưu (p).
Homefeed : Các phần nhúng từ được tạo dựa trên sự quan tâm của người dùng (q) và mã pin được người dùng nhấp vào hoặc lưu (p).
Để có được lượt nhúng thực thể tổng thể, Pinterest tính trung bình các lượt nhúng từ liên quan cho các ghim, tìm kiếm và nguồn cấp dữ liệu trang chủ có liên quan.
Pinterest đã tạo và đánh giá Pintext-MTL (học đa tác vụ) được giám sát của riêng mình dựa trên các mô hình học tập không giám sát bao gồm GloVe, word2vec cũng như mô hình học một tác vụ, PinText-SR về độ chính xác. PinText-MTL có độ chính xác cao hơn các mô hình nhúng khác, nghĩa là nó có tỷ lệ dự đoán tích cực thực sự cao hơn trong số tất cả các dự đoán tích cực.
Pinterest cũng nhận thấy rằng các mô hình học tập đa tác vụ có khả năng thu hồi cao hơn hoặc tỷ lệ các trường hợp có liên quan được mô hình xác định chính xác cao hơn, khiến chúng phù hợp hơn cho việc tìm kiếm và khám phá.
Để kết hợp tất cả những thứ này lại với nhau trong sản xuất, Pinterest có một mô hình đa nhiệm được đào tạo về truyền dữ liệu từ nguồn cấp dữ liệu gia đình, tìm kiếm và các ghim liên quan. Sau khi mô hình đó được đào tạo, các phần nhúng vectơ sẽ được tạo trong một tác vụ hàng loạt lớn bằng cách sử dụng Kubernetes+Docker hoặc hệ thống thu nhỏ bản đồ. Nền tảng này xây dựng chỉ mục tìm kiếm của các vectơ nhúng và chạy tìm kiếm K-nearest Neighbor (KNN) để tìm nội dung phù hợp nhất cho người dùng. Kết quả được lưu vào bộ nhớ đệm để đáp ứng yêu cầu về hiệu suất của nền tảng Pinterest.
Spotify kết hợp tìm kiếm từ khóa và ngữ nghĩa để truy xuất kết quả tập podcast có liên quan cho người dùng. Ví dụ: nhóm đã nêu bật những hạn chế của việc tìm kiếm từ khóa cho truy vấn “tác động của ô tô điện đến khí hậu”, một truy vấn mang lại 0 kết quả mặc dù các tập podcast có liên quan vẫn tồn tại trong thư viện Spotify. Để cải thiện khả năng ghi nhớ, nhóm Spotify đã sử dụng Hàng xóm gần nhất gần đúng (ANN) để tìm kiếm podcast nhanh chóng và phù hợp.
Nhóm tạo ra các phần nhúng vectơ bằng cách sử dụng mô hình CMLM của Bộ mã hóa câu phổ quát vì nó đa ngôn ngữ, hỗ trợ thư viện podcast toàn cầu và tạo ra các phần nhúng vectơ chất lượng cao. Các mô hình khác cũng được đánh giá bao gồm BERT , một mô hình được đào tạo trên một kho dữ liệu văn bản lớn, nhưng nhận thấy rằng BERT phù hợp hơn cho việc nhúng từ so với nhúng câu và chỉ được đào tạo trước bằng tiếng Anh.
Spotify xây dựng các phần nhúng vectơ với văn bản truy vấn là phần nhúng đầu vào và nối các trường siêu dữ liệu văn bản bao gồm tiêu đề và mô tả cho phần nhúng tập podcast. Để xác định sự giống nhau, Spotify đã đo khoảng cách cosine giữa truy vấn và phần nhúng tập.
Để đào tạo mô hình CMLM Bộ mã hóa câu chung cơ bản, Spotify đã sử dụng các cặp tìm kiếm và tập podcast thành công. Họ đã kết hợp các phủ định theo lô, một kỹ thuật được nêu bật trong các bài báo bao gồm Truy xuất mật độ dày đặc để trả lời câu hỏi trên miền mở (DPR) và Que2Search: Truy vấn nhanh và chính xác và hiểu tài liệu để tìm kiếm trên Facebook , để tạo ra các cặp phủ định ngẫu nhiên. Thử nghiệm cũng được tiến hành bằng cách sử dụng các truy vấn tổng hợp và truy vấn được viết thủ công.
Để kết hợp tìm kiếm vectơ vào việc cung cấp các đề xuất podcast trong quá trình sản xuất, Spotify đã sử dụng các bước và công nghệ sau:
Lập chỉ mục vectơ tập : Spotify lập chỉ mục các vectơ tập ngoại tuyến theo đợt bằng cách sử dụng Vespa , một công cụ tìm kiếm có hỗ trợ riêng cho ANN. Một trong những lý do Vespa được chọn là vì nó cũng có thể kết hợp tính năng lọc siêu dữ liệu sau tìm kiếm trên các tính năng như mức độ phổ biến của tập phim.
Suy luận trực tuyến : Spotify sử dụng Google Cloud Vertex AI để tạo vectơ truy vấn. Vertex AI được chọn vì nó hỗ trợ suy luận GPU, hiệu quả hơn về mặt chi phí khi sử dụng các mô hình biến áp lớn để tạo các phần nhúng và cho bộ nhớ đệm truy vấn của nó. Sau khi tạo vectơ nhúng truy vấn, nó được sử dụng để truy xuất 30 tập podcast hàng đầu từ Vespa.
Tìm kiếm ngữ nghĩa góp phần xác định các tập podcast thích hợp, tuy nhiên nó không thể thay thế hoàn toàn tìm kiếm từ khóa. Điều này là do thực tế là tìm kiếm ngữ nghĩa không khớp chính xác với thuật ngữ khi người dùng tìm kiếm một tập hoặc tên podcast chính xác. Spotify sử dụng phương pháp tìm kiếm kết hợp, kết hợp tìm kiếm ngữ nghĩa trong Vespa với tìm kiếm từ khóa trong Elaticsearch , sau đó là giai đoạn xếp hạng lại cuối cùng để thiết lập các tập được hiển thị cho người dùng.
Theo truyền thống, các công cụ tìm kiếm hiển thị kết quả bằng cách căn chỉnh văn bản truy vấn tìm kiếm với mô tả văn bản về các mục hoặc tài liệu. Phương pháp này dựa nhiều vào ngôn ngữ để suy ra sở thích và không hiệu quả trong việc nắm bắt các yếu tố về phong cách hoặc thẩm mỹ. eBay giới thiệu tính năng tìm kiếm hình ảnh để giúp người dùng tìm thấy các mặt hàng tương tự, phù hợp với phong cách mà họ đang tìm kiếm.
eBay sử dụng mô hình đa phương thức được thiết kế để xử lý và tích hợp dữ liệu từ nhiều phương thức hoặc loại đầu vào, chẳng hạn như văn bản, hình ảnh, âm thanh hoặc video, để đưa ra dự đoán hoặc thực hiện các tác vụ. eBay kết hợp cả văn bản và hình ảnh vào mô hình của mình, tạo ra các phần nhúng hình ảnh bằng cách sử dụng mô hình Mạng thần kinh chuyển đổi (CNN), cụ thể là Resnet-50 và các phần nhúng tiêu đề bằng cách sử dụng mô hình dựa trên văn bản như BERT . Mỗi danh sách được thể hiện bằng một vectơ nhúng kết hợp cả phần nhúng hình ảnh và tiêu đề.
Sau khi huấn luyện mô hình đa phương thức bằng cách sử dụng tập dữ liệu lớn gồm các cặp danh sách tiêu đề hình ảnh và danh sách đã bán gần đây, đã đến lúc đưa nó vào sản xuất trong trải nghiệm tìm kiếm trang web. Do số lượng danh sách lớn trên eBay nên dữ liệu được tải theo đợt vào HDFS, kho dữ liệu của eBay. eBay sử dụng Apache Spark để truy xuất và lưu trữ hình ảnh cũng như các trường liên quan cần thiết để xử lý thêm danh sách, bao gồm cả việc tạo các phần nhúng danh sách. Các phần nhúng danh sách được xuất bản lên một cửa hàng dạng cột như HBase, nơi có khả năng tổng hợp dữ liệu quy mô lớn rất tốt. Từ HBase, việc nhúng danh sách được lập chỉ mục và phục vụ trong Cassini, một công cụ tìm kiếm được tạo tại eBay.
Quy trình được quản lý bằng cách sử dụng Apache Airflow, có khả năng mở rộng quy mô ngay cả khi có số lượng nhiệm vụ lớn và phức tạp. Nó cũng cung cấp hỗ trợ cho Spark, Hadoop và Python, giúp nhóm học máy thuận tiện tiếp nhận và sử dụng.
Tìm kiếm trực quan cho phép người dùng tìm thấy các phong cách và sở thích tương tự trong các danh mục đồ nội thất và trang trí nhà cửa, trong đó phong cách và tính thẩm mỹ là yếu tố then chốt để đưa ra quyết định mua hàng. Trong tương lai, eBay có kế hoạch mở rộng tìm kiếm trực quan trên tất cả các danh mục và cũng giúp người dùng khám phá các mặt hàng liên quan để họ có thể thiết lập giao diện giống nhau trên khắp ngôi nhà của mình.
Các tính năng tìm kiếm và danh sách tương tự thúc đẩy 99% lượng đặt phòng trên trang AirBnb. AirBnb đã xây dựng kỹ thuật nhúng danh sách để cải thiện các đề xuất danh sách tương tự và cung cấp khả năng cá nhân hóa theo thời gian thực trong bảng xếp hạng tìm kiếm.
AirBnb đã sớm nhận ra rằng họ có thể mở rộng ứng dụng nhúng không chỉ là cách trình bày bằng từ ngữ, bao gồm cả hành vi của người dùng, bao gồm cả lượt nhấp chuột và lượt đặt chỗ.
Để đào tạo các mô hình nhúng, AirBnb đã kết hợp hơn 4,5 triệu danh sách đang hoạt động và 800 triệu phiên tìm kiếm để xác định sự giống nhau dựa trên những danh sách mà người dùng nhấp và bỏ qua trong một phiên. Các danh sách được cùng một người dùng nhấp vào trong một phiên sẽ được đẩy gần nhau hơn; danh sách bị người dùng bỏ qua sẽ bị đẩy ra xa hơn. Nhóm đã quyết định về chiều của việc nhúng danh sách d=32 dựa trên sự cân bằng giữa hiệu suất ngoại tuyến và bộ nhớ cần thiết để phân phối trực tuyến.
AirBnb nhận thấy rằng một số đặc điểm danh sách nhất định không cần phải tìm hiểu vì chúng có thể được lấy trực tiếp từ siêu dữ liệu, chẳng hạn như giá. Tuy nhiên, các thuộc tính như kiến trúc, phong cách và không gian khó có thể lấy được từ siêu dữ liệu hơn.
Trước khi chuyển sang sản xuất, AirBnb đã xác thực mô hình của họ bằng cách kiểm tra xem mô hình đề xuất danh sách mà người dùng thực sự đã đặt tốt đến mức nào. Nhóm cũng đã chạy thử nghiệm A/B so sánh thuật toán danh sách hiện có với thuật toán dựa trên nhúng vectơ. Họ nhận thấy rằng thuật toán nhúng vectơ đã dẫn đến CTR tăng 21% và số người dùng khám phá danh sách mà họ đã đặt tăng 4,9%.
Nhóm cũng nhận ra rằng việc nhúng vectơ có thể được sử dụng như một phần của mô hình cá nhân hóa thời gian thực trong tìm kiếm. Đối với mỗi người dùng, họ thu thập và duy trì trong thời gian thực bằng cách sử dụng Kafka, lịch sử ngắn hạn về số lần nhấp và bỏ qua của người dùng trong hai tuần qua. Đối với mỗi tìm kiếm do người dùng thực hiện, họ đã chạy hai tìm kiếm tương tự:
dựa trên các thị trường địa lý được tìm kiếm gần đây và sau đó
sự giống nhau giữa danh sách ứng viên và danh sách người dùng đã nhấp vào/bỏ qua
Các phần nhúng đã được đánh giá trong các thử nghiệm ngoại tuyến và trực tuyến và trở thành một phần của các tính năng cá nhân hóa theo thời gian thực.
Doordash có nhiều cửa hàng khác nhau mà người dùng có thể chọn đặt hàng và khả năng hiển thị các cửa hàng phù hợp nhất bằng cách sử dụng tùy chọn được cá nhân hóa sẽ cải thiện khả năng tìm kiếm và khám phá.
Doordash muốn áp dụng thông tin tiềm ẩn vào thuật toán nguồn cấp dữ liệu cửa hàng của mình bằng cách sử dụng tính năng nhúng vectơ. Điều này sẽ cho phép Doordash phát hiện ra những điểm tương đồng giữa các cửa hàng chưa được ghi chép rõ ràng, bao gồm cả việc cửa hàng có đồ ngọt, được coi là hợp thời trang hay có các lựa chọn ăn chay hay không.
Doordash đã sử dụng một dẫn xuất của word2vec, một mô hình nhúng được sử dụng trong xử lý ngôn ngữ tự nhiên, được gọi là store2vec mà nó điều chỉnh dựa trên dữ liệu hiện có. Nhóm coi mỗi cửa hàng là một từ và tạo thành các câu bằng cách sử dụng danh sách các cửa hàng được xem trong một phiên người dùng, với giới hạn tối đa là 5 cửa hàng mỗi câu. Để tạo các phần nhúng vectơ người dùng, Doordash đã tổng hợp các vectơ của các cửa hàng mà người dùng đã đặt hàng trong 6 tháng qua hoặc tối đa 100 đơn hàng.
Ví dụ: Doordash đã sử dụng tìm kiếm vectơ để tìm các nhà hàng tương tự cho người dùng dựa trên giao dịch mua hàng gần đây của họ tại các cửa hàng phổ biến, thời thượng 4505 Burgers và New Nagano Sushi ở San Francisco. Doordash đã tạo danh sách các nhà hàng tương tự đo khoảng cách cosine từ khi người dùng nhúng đến các cửa hàng nhúng trong khu vực. Bạn có thể thấy rằng các cửa hàng gần nhất trong khoảng cách cosine bao gồm Quán rượu Kezar và BBQ Làng Hàn Quốc bằng than củi.
Doordash kết hợp tính năng khoảng cách store2vec như một trong những tính năng trong mô hình cá nhân hóa và đề xuất lớn hơn. Với tìm kiếm vectơ, Doordash có thể thấy tỷ lệ nhấp tăng 5%. Nhóm cũng đang thử nghiệm các mô hình mới như seq2seq , tối ưu hóa mô hình và kết hợp dữ liệu hoạt động tại chỗ theo thời gian thực từ người dùng.
Pinterest, Spotify, eBay, Airbnb và Doordash tạo ra trải nghiệm tìm kiếm và khám phá tốt hơn với tìm kiếm vectơ. Nhiều nhóm trong số này bắt đầu sử dụng tìm kiếm văn bản và nhận thấy những hạn chế với tìm kiếm mờ hoặc tìm kiếm theo phong cách hoặc thẩm mỹ cụ thể. Trong những trường hợp này, việc thêm tính năng tìm kiếm vectơ vào trải nghiệm giúp bạn dễ dàng tìm thấy podcast, gối, đồ cho thuê, ghim và quán ăn có liên quan và thường được cá nhân hóa.
Có một số quyết định mà các công ty này đưa ra đáng được nêu ra khi triển khai tìm kiếm vectơ:
Rockset, cơ sở dữ liệu phân tích và tìm kiếm thời gian thực, gần đây đã bổ sung hỗ trợ cho tìm kiếm vectơ . Hãy thử tìm kiếm vectơ trên Rockset để cá nhân hóa theo thời gian thực, đề xuất, phát hiện sự bất thường và hơn thế nữa bằng cách bắt đầu dùng thử miễn phí với khoản tín dụng 300 USD ngay hôm nay.