Những điều tôi học được sau 2 năm làm việc tại một công ty Vector DB
(leoniemonigatti.com)Làm việc tại Weaviate, một vector DB, tôi đã tổng hợp 37 bài học rút ra từ kinh nghiệm vận hành thực tế
↳ Từ BM25, giá trị của tìm kiếm từ khóa cho đến tìm kiếm vector, embedding và tìm kiếm hybrid
1. BM25 là một baseline mạnh trong tìm kiếm
- Thay vì bắt đầu ngay với tìm kiếm vector phức tạp, cách làm thực tế hơn là áp dụng trước tìm kiếm từ khóa đơn giản như BM25, kiểm tra hiệu năng rồi mở rộng dần sang tìm kiếm vector
2. Tìm kiếm vector là gần đúng (Approximate), không phải chính xác tuyệt đối (Exact)
- Với dữ liệu quy mô lớn, người ta dùng các thuật toán láng giềng gần đúng (ANN) như HNSW, IVF, ScaNN để tăng tốc, nhưng phải đánh đổi một phần độ chính xác
- Lập chỉ mục vector là chìa khóa bảo đảm tốc độ ở quy mô lớn của vector DB
3. Vector DB không chỉ lưu embedding
- Nó còn lưu cả dữ liệu gốc (như văn bản) và metadata, nhờ đó có thể lọc theo metadata, tìm kiếm từ khóa, tìm kiếm hybrid, v.v.
4. Mục đích sử dụng chính của vector DB không phải là AI tạo sinh mà là “tìm kiếm”
- Việc đưa context vào LLM về bản chất cũng là một dạng “tìm kiếm”, và vector DB cùng LLM là một tổ hợp rất phù hợp
5. Bạn cần chỉ định trực tiếp số lượng kết quả tìm kiếm
- Nếu không chỉ định tham số
limithoặctop_k, tất cả kết quả gần nhất với truy vấn sẽ được sắp xếp và trả về
6. Có nhiều loại embedding khác nhau
- Ngoài vector dense, còn có nhiều định dạng vector embedding khác như sparse, binary, multi-vector
7. Benchmark để chọn mô hình embedding
- MTEB bao quát nhiều tác vụ embedding khác nhau như phân loại, gom cụm, tìm kiếm, v.v.
- Với benchmark chuyên cho truy hồi thông tin, có thể tham khảo BEIR
8. Phần lớn mô hình trong MTEB chỉ dành cho tiếng Anh
- Nếu làm trong môi trường đa ngôn ngữ hoặc không phải tiếng Anh, nên dùng benchmark MMTEB
9. Lịch sử embedding: Static vs Contextual
- Embedding tĩnh như Word2Vec, GloVe biểu diễn cố định cho từng từ
- Embedding theo ngữ cảnh như BERT tạo vector động tùy theo ngữ cảnh
- Embedding tĩnh vẫn có thể được tra cứu nhanh trong môi trường hạn chế tài nguyên
10. Khác biệt giữa sparse vector và sparse embedding
- sparse vector: có thể được tạo bằng phương pháp thống kê như TF-IDF/BM25 hoặc phương pháp dựa trên mạng nơ-ron như sparse embedding, SPLADE
- Mọi sparse embedding đều là sparse vector, nhưng chiều ngược lại thì không đúng
11. Có thể embedding nhiều loại dữ liệu ngoài văn bản
- Ảnh, PDF (sau khi chuyển thành ảnh), đồ thị, v.v. cũng có thể được embedding để phục vụ tìm kiếm vector đa phương thức
12. Số chiều embedding và chi phí lưu trữ
- Số chiều càng lớn thì chi phí lưu trữ càng tăng
- Với các nhu cầu đơn giản như “chatbot”, có thể không cần mô hình số chiều cao
- Cũng có thể giảm chiều bằng Matryoshka Representation Learning
13. Các tutorial “Chat with your docs” là hello world của AI tạo sinh
14. Mô hình embedding cần được gọi lặp đi lặp lại
- Không chỉ khi ingestion tài liệu, mà còn khi truy vấn, khi thêm/sửa tài liệu, hoặc khi thay đổi mô hình embedding, bạn đều cần embedding và indexing
15. Độ tương đồng vector và mức độ liên quan thực tế có thể khác nhau
- Những câu giống nhau về mặt ngữ nghĩa (ví dụ: “cách sửa vòi nước” vs “mua vòi nước ở đâu”) có thể lại không liên quan nhiều về mặt mục đích thực tế
16. Cosine similarity và cosine distance là hai khái niệm khác nhau
- Độ tương đồng và khoảng cách có quan hệ tỉ lệ nghịch về mặt toán học
- Nếu là cùng một vector thì similarity là 1, distance là 0
17. Khi vector được chuẩn hóa, cosine similarity và dot product là như nhau
- Với vector đã chuẩn hóa, dot product hiệu quả hơn về mặt tính toán
18. Chữ R trong RAG là “retrieval”, không phải “vector search”
- Trong RAG, có nhiều cách retrieval khác nhau như từ khóa, vector, filter, v.v.
19. Tìm kiếm vector chỉ là một trong nhiều công cụ tìm kiếm
- Điều quan trọng là kết hợp nhiều phương pháp khác nhau như tìm kiếm từ khóa, filtering, reranking, v.v. theo kiểu hybrid
20. Áp dụng đúng giữa tìm kiếm từ khóa và tìm kiếm vector
- Matching theo ngữ nghĩa/đồng nghĩa thì dùng tìm kiếm vector, từ khóa chính xác thì dùng tìm kiếm từ khóa; nếu cần cả hai thì dùng tìm kiếm hybrid và điều chỉnh trọng số
alpha
21. Ý nghĩa của tìm kiếm hybrid
- Thường nó chỉ sự kết hợp giữa từ khóa và vector, nhưng kết hợp với các phương thức khác như metadata cũng đều được gọi là “hybrid”
22. Filtering không phải lúc nào cũng tăng tốc
- Ví dụ, tính liên thông của đồ thị HNSW có thể bị phá vỡ, và nếu lọc hậu kỳ thì có thể không còn kết quả nào
- Mỗi vector DB có kỹ thuật tối ưu riêng cho bài toán này
23. Pipeline tìm kiếm hai giai đoạn rất hữu ích
- Không chỉ trong hệ gợi ý, mà cả trong RAG, bạn cũng có thể cải thiện chất lượng bằng cách lấy ra tập ứng viên ở bước 1 rồi rerank hiệu năng cao ở bước 2
24. Khác biệt giữa tìm kiếm vector và reranking
- Tìm kiếm vector trả về một phần kết quả từ toàn bộ DB, còn reranking là sắp xếp lại thứ tự của tập kết quả đã nhận
25. Khó khăn trong việc chọn kích thước chunk để embedding
- Quá nhỏ thì mất context, quá lớn thì ý nghĩa bị loãng
- Có thể vector hóa toàn bộ tài liệu bằng mean pooling, nhưng thông tin cũng có thể bị hòa loãng (giống như gộp mọi khung hình của một bộ phim thành một poster)
26. Khác biệt giữa thư viện lập chỉ mục vector và vector DB
- Cả hai đều nhanh, nhưng vector DB còn cung cấp khả năng quản lý dữ liệu như độ bền, CRUD, filter/hybrid, v.v.
27. Ngay cả khi LLM mở rộng context, RAG vẫn tiếp tục tiến hóa
- Mỗi khi có LLM context dài xuất hiện, lại có tranh luận rằng “RAG đã chết”, nhưng trên thực tế nó vẫn luôn cần thiết
28. Lượng tử hóa vector có thể giảm 97% thông tin mà vẫn giữ được khả năng tìm kiếm
- Với các kỹ thuật như binary quantization, có thể giảm dung lượng lưu trữ tới 32 lần (ví dụ 32-bit float → 1-bit)
29. Tìm kiếm vector không robust với lỗi chính tả
- Ngay cả trong kho ngữ liệu văn bản lớn, không phải mọi lỗi chính tả đều được phản ánh; chỉ một phần được bao phủ
30. Có nhiều chỉ số đánh giá chất lượng tìm kiếm
- Ngoài chỉ số dựa trên xếp hạng như NDCG@k, các chỉ số đơn giản như Precision/Recall cũng có thể hiệu quả tùy tình huống
31. Ví dụ thực tế về trade-off Precision-Recall
- Có thể giải thích bằng các trường hợp cực đoan như chỉ trả về một kết quả (Precision ↑ / Recall ↓) hoặc trả về toàn bộ kết quả (Recall ↑ / Precision ↓)
32. Chỉ số phản ánh thứ tự của kết quả tìm kiếm
- Precision/Recall không phản ánh thứ tự, nên cần các chỉ số có xét đến thứ hạng như MRR@k, MAP@k, NDCG@k
33. Ảnh hưởng của tokenizer
- Không chỉ BPE, tokenizer còn ảnh hưởng đến chất lượng của tìm kiếm từ khóa/hybrid
34. Out-of-domain và out-of-vocabulary là hai chuyện khác nhau
- OOV có thể được xử lý bằng tokenizer thông minh, nhưng với out-of-domain thì embedding tự thân có thể không còn ý nghĩa
35. Sự cần thiết của tối ưu hóa truy vấn
- Cũng giống như tìm kiếm từ khóa, tìm kiếm vector cũng cần thói quen tối ưu đầu vào truy vấn
36. Mô hình mới sau tìm kiếm vector
- Tìm kiếm từ khóa → tìm kiếm vector → retrieval dựa trên suy luận của LLM
37. Truy hồi thông tin (retrieval) hiện là lĩnh vực “hot” nhất
- Cùng với LLM, việc tìm ra “thông tin tối ưu” để cung cấp cho LLM đang là nhiệm vụ cốt lõi và quan trọng nhất
1 bình luận
Thật tuyệt vì có nhiều nội dung đáng để suy ngẫm khi làm việc với tìm kiếm vector.