Điểm khởi đầu tốt với Embeddings cho lập trình viên ứng dụng tò mò về AI
(bawolf.substack.com)Hướng dẫn sử dụng embeddings cho lập trình viên ứng dụng
- Vector embedding rất hiệu quả trong việc đo độ tương đồng cho nhiều loại đầu vào, nên phù hợp với các tính năng tìm kiếm và gợi ý. Nó cũng hoạt động tốt với các ngôn ngữ khác như tiếng Pháp hay tiếng Nhật.
- Pgvector là tiện ích mở rộng của Postgres cho phép lưu trữ và truy vấn embedding, rất mạnh vì có thể kết hợp logic SQL với các phép toán embedding mà không cần bổ sung dịch vụ mới.
- Khác với LLM, việc sử dụng embedding mang lại cảm giác giống với mã quyết định luận thông thường.
Phát triển dự án tìm kiếm và gợi ý biểu tượng
- Sau khi thiết lập Pgvector, xây dựng chiến lược mã hóa dữ liệu biểu tượng thành các vector embedding.
- Sử dụng mô hình
text-embedding-3-smallcủa OpenAI. - Đo độ tương đồng giữa từ khóa tìm kiếm và embedding của từng biểu tượng bằng cosine similarity.
- Kết hợp logic nghiệp vụ như lọc bộ biểu tượng vào tìm kiếm embedding.
- Đưa ra ví dụ về thuật toán xếp hạng sử dụng dữ liệu nhấp vào biểu tượng theo từ khóa tìm kiếm.
- Dùng so sánh embedding để gợi ý các biểu tượng tương tự với biểu tượng đã chọn.
Tóm tắt phương án triển khai
- Chọn pgvector/Postgres làm vector DB. Cũng có các lựa chọn khác như MongoDB.
- Phát triển bằng Typescript, sử dụng drizzle-orm. Cũng có nhiều thư viện cho ngôn ngữ/framework khác.
- Ứng dụng được host trên Neon. Có thể dùng các dịch vụ host DB được quản lý như fly.io, Supabase.
- Sử dụng mô hình embedding
text-embedding-3-smallcủa OpenAI. Có thể chọn các mô hình khác từ bảng xếp hạng của Huggingface. - Nhúng các thuộc tính của biểu tượng có liên quan nhiều đến tìm kiếm dưới dạng cặp key-value.
- Dùng cosine similarity làm hàm khoảng cách. Pgvector cũng hỗ trợ l2 distance và inner product.
- Giới hạn kết quả tìm kiếm ở top 50. Khi dùng phạm vi khoảng cách, nên đặt rộng và dùng kèm limit.
Ý kiến của GN⁺
- Với phần lớn dự án, có lẽ chỉ cần thêm tính năng vector vào DB hiện có như pgvector là đủ. Việc đưa vào một vector DB riêng có vẻ chỉ cần cho các dịch vụ quy mô lớn.
- Khả năng kết hợp tự nhiên logic nghiệp vụ với tìm kiếm embedding là một ưu điểm lớn. Có thể tận dụng nguyên sức mạnh của SQL.
- Ý tưởng phản ánh dữ liệu phản hồi người dùng vào thuật toán xếp hạng rất hay. Có vẻ có thể liên tục cải thiện độ chính xác của tìm kiếm.
- So với LLM, dịch vụ dựa trên embedding có hành vi rõ ràng hơn và cũng dễ debug hơn, nên có vẻ dễ áp dụng vào dịch vụ thực tế hơn nhiều.
- Nhiều mô hình embedding mã nguồn mở đã được công bố, nên ngay cả khi khó tự phát triển mô hình riêng thì vẫn có thể dễ dàng tận dụng embedding chất lượng cao.
1 bình luận
Ý kiến trên Hacker News
Tóm tắt bình luận Hacker News
Sự tiện lợi của việc nhúng tài liệu và tìm kiếm độ tương đồng bằng mô hình RAG
sentence-transformersvàfaissHiểu khái niệm cơ bản của embeddings
Thiếu giải thích chi tiết về quá trình tạo embedding
They're a bit of a black boxmà không giải thích kỹ hơnĐộ khó trong việc xử lý từ đồng âm khác nghĩa
kingthì lại hiện biểu tượng ruler(thước)Có thể dùng embeddings mà không cần vector store
@của Numpy để lấy tích vô hướng giữa vector truy vấn đã chuẩn hóa và ma trận bản ghiCách chạy logic embedding trong môi trường local
Khả năng ứng dụng embeddings khi viết tài liệu kỹ thuật
Cách lưu trữ và sử dụng embeddings
Thiếu giải thích kiến thức nền cho lập trình viên mới bắt đầu với AI