Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Redis VSS: Tận Dụng Tìm Kiếm Tương Đồng Vector Cho Kết Quả Nhanh Hơn, Thông Minh Hơn

Tại RedisDays NY 2022, chúng tôi công bố bản preview công khai của khả năng Tìm Kiếm Tương Đồng Vector (Vector Similarity Search - VSS) mới. VSS là một phần của RediSearch 2.4 và có sẵn trên Docker, Redis Stack, và gói miễn phí và cố định của Redis Enterprise Cloud.

Trong bài viết này, tôi sẽ hướng dẫn bạn qua cơ bản của vector similarity, ứng dụng của nó và chia sẻ tài nguyên để bạn bắt đầu với Redis VSS!

Redis VSS: Tận Dụng Tìm Kiếm Tương Đồng Vector Cho Kết Quả Nhanh Hơn, Thông Minh Hơn

Vector Similarity (Tương Đồng Vector) Là Gì?

Đơn giản, đó là thước đo mức độ khác biệt (hoặc tương đồng) giữa hai hoặc nhiều vector. Hãy hình dung vector như một danh sách số.

Tại Sao Vector Similarity Search Đang Trở Nên Nổi Bật?

Cốt lõi, vector search cho phép dev truy xuất thông tin dựa trên âm thanh, ngôn ngữ tự nhiên, hình ảnh, video clip, ghi âm giọng nói, và nhiều loại dữ liệu hơn. Tìm kiếm trên dữ liệu phi cấu trúc làm VSS trở thành công nghệ nền tảng để xây dựng trải nghiệm tìm kiếm tương đồng nâng cao.

Vector Này Được Tạo Ra Cho Dữ Liệu Của Tôi Như Thế Nào?

Nhờ tiến bộ AI, nhà khoa học dữ liệu có thể xây dựng mô hình biến đổi gần như bất kỳ "thực thể" (entity) dữ liệu nào thành biểu diễn vector của nó. Thực thể ở đây có thể là giao dịch, hồ sơ người dùng, hình ảnh, âm thanh, văn bản dài (câu hoặc đoạn), chuỗi thời gian, hoặc đồ thị. Bất kỳ thứ nào cũng có thể biến thành "feature vector" (vector đặc trưng), còn gọi là "embedding" (nhúng).

Các Embedding Này Có Ý Nghĩa Gì?

Vector embedding là biểu diễn số của dữ liệu. Chúng nắm bắt các đặc trưng thiết yếu nhất của thực thể theo cách máy tính và database dễ dàng so sánh. Phần thú vị: nếu mô hình tạo ra hai embedding tương tự (vector) cho hai thực thể, bạn có thể suy ra hai thực thể gốc tương đồng về mặt cơ bản nào đó.

Tôi Có Cần Là Nhà Khoa Học Dữ Liệu Để Tạo Embedding Không?

Hoàn toàn không! Có một số mô hình AI và thư viện miễn phí cho phép dev tạo embedding từ văn bản, hình ảnh, hoặc dữ liệu chuỗi thời gian. Ví dụ: HuggingFace Sentence Transformers tạo embedding cho câu, Img2Vec cho hình ảnh, Facebook Kats cho chuỗi thời gian. Chuyên gia AI/ML quen thuộc với khái niệm tạo "dense" feature representation (embedding) cho thực thể dữ liệu. Họ giờ có thể lưu feature vector này trong Redis và thực hiện tìm kiếm tương đồng trên chúng.

Redis VSS: Tận Dụng Tìm Kiếm Tương Đồng Vector Cho Kết Quả Nhanh Hơn, Thông Minh Hơn

Loại Ứng Dụng Nào Có Thể Xây Dựng Với Vector Similarity Search?

Có một số ứng dụng hàng ngày bạn tương tác dựa trên vector similarity search.

Từ tìm kiếm hình ảnh trên web thương mại điện tử đến chatbot/Q&A tự động và nhiều loại hệ thống recommendation. Nói chung, bạn sẽ thấy VSS hữu ích trên bất kỳ app nào nơi phát hiện tương đồng thời gian thực là then chốt để khai phá giá trị. Một số use case phổ biến:

– Khuyến nghị e-commerce: Dùng tương đồng hình ảnh và/hoặc ngữ nghĩa (semantic) để tăng cường trải nghiệm tìm kiếm nâng cao và khuyến nghị sản phẩm

– Tương đồng ngữ nghĩa: Xây dựng trải nghiệm tìm kiếm tinh vi, chatbot, hoặc hệ thống hỏi đáp

– Tương đồng dữ liệu chuỗi thời gian: Khám phá tương đồng mẫu lan truyền bệnh hoặc cơ hội giao dịch dựa trên tương đồng mẫu lịch sử

– Tương đồng dữ liệu đồ thị: Phát hiện mẫu kết nối tương tự qua các tập diễn viên/mạng khác nhau (có thể không liên quan)

– Tương đồng giao dịch: Phát hiện gian lận/đe dọa tiềm ẩn dựa trên tương đồng với gian lận/đe dọa đã phát hiện trước

– Tương đồng hồ sơ người dùng/sản phẩm: Tạo khuyến nghị cá nhân hóa; tinh chỉnh phân đoạn khách hàng dựa trên mẫu embedding dữ liệu

Redis VSS: Tận Dụng Tìm Kiếm Tương Đồng Vector Cho Kết Quả Nhanh Hơn, Thông Minh Hơn

Redis Triển Khai Vector Similarity Search Như Thế Nào?

RediSearch là module Redis cung cấp khả năng truy vấn, secondary indexing, và full-text search cho dữ liệu Redis lưu dưới dạng Redis hashes hoặc JSON. Với RediSearch 2.4, Redis giới thiệu hỗ trợ vector similarity search.

Với RediSearch 2.4, dev Redis có thể:
– Index và truy vấn dữ liệu vector lưu dưới dạng BLOB trong Redis hashes

– Dùng hai phương pháp indexing phổ biến: FLAT và HNSW

– Dùng ba metric khoảng cách vector phổ biến: cosine, internal product, và euclidean distance

– Thực hiện hybrid query kết hợp vector similarity với khả năng lọc truyền thống RediSearch trên dữ liệu GEO, NUMERIC, TAG, hoặc TEXT. Ví dụ hybrid query phổ biến trong e-commerce: "tìm item tương đồng hình ảnh với query image cho trước, giới hạn item có sẵn tại vị trí GEO và trong khoảng giá".

Có Demo Không?

Nếu bạn rành Python, hãy thử:
– Visual và Semantic Similarity trên Amazon Dataset công khai

– Phân tích cảm xúc và Semantic similarity trong bài báo tin tức tài chính

Với Java, bạn có thể thử demo cơ bản chỉ cách tạo index, load dữ liệu, và truy vấn.

Tìm Hiểu Thêm Ở Đâu?

Thử xem lại replay hai session RedisDays 2022:
– Keynote: Infuse Real-Time AI Into Your "Financial Services" Applications

– Behind the Scenes: Using AI to Reveal Trading Signals Buried in Corporate Filings

Các session hiện có sẵn on-demand. Luôn có thể check tài liệu RediSearch về "Working with Vectors".

Redis VSS: Tận Dụng Tìm Kiếm Tương Đồng Vector Cho Kết Quả Nhanh Hơn, Thông Minh Hơn

Làm Thế Nào Để Bắt Đầu?

Có ba cách dễ dàng tạo database Redis với RediSearch 2.4.

Từ Terminal, bạn có thể lấy với một trong sau:
1) Docker – docker run -p 6379:6379 redislabs/redisearch:2.4.5

2) Redis Stack – brew install redis-stack (từ Mac OS). Cho OS khác, thử "Getting started with Redis Stack"

3) Cuối cùng, bạn cũng có thể tạo subscription miễn phí với Redis Enterprise Cloud

Nếu đi đường Redis Enterprise Cloud subscription, hãy chắc chắn dùng tùy chọn "Redis Stack" vì nó bao gồm RediSearch 2.4.