Mục tiêu: Nghiên cứu này hướng đến các mục tiêu sau: • Xây dựng một hệ thống tìm kiếm sản phẩm mạnh mẽ, có khả năng xử lý các truyvấn phức tạp và không chính xác • Áp dụng các kỹ thuật N
Trang 1Khoa Khoa Học Và Kỹ Thuật Máy Tính
BÁO CÁO KHO DỮ LIỆU
VÀ HỆ HỖ TRỢ QUYẾT ĐỊNH
Hệ thống tìm kiếm sản phẩm
Chuyên ngành: Khoa học Máy tính
Trang 22.1 Vector nhúng (Vector Embeddings) 4
2.2 Cơ sở dữ liệu Vector(Vector Database) 5
2.3 Chỉ mục trong tìm kiếm tương đồng 6
2.3.1 Tìm kiếm tương đồng (Similarity search) 6
2.3.2 Chỉ mục trong similarity search 7
2.3.3 FAISS (Facebook AI Similarity Search) 7
2.4 Kỹ thuật TF-IDF (Term Frequency-Inverse Document Frequency) 10
2.5 Cosine Similarity 11
2.6 Công nghệ và Mô hình 12
3 Thực Nghiệm 14 3.1 Phân tích yêu cầu nghiệp vụ/chức năng người dùng 14
3.2 Tập dữ liệu 14
3.3 Mô tả hiện thực chi tiết (Sử dụng Sentence Embeddings (Sentence-BERT) và Faiss ) 14
3.3.1 Tiền xử lý dữ liệu 14
3.3.2 Tạo vector nhúng (Embeddings) 16
3.3.3 Xây dựng chỉ mục tìm kiếm 16
3.3.4 Truy vấn 17
3.4 Mô tả hiện thực chi tiết (Sử dụng TF-IDF và Cosine Similarity) 19
3.4.1 Tiền xử lý dữ liệu 19
3.4.2 Tạo ma trận TF-IDF 20
3.4.3 Tính toán Cosine Similarity 20
3.4.4 Tìm kiếm và hiển thị kết quả 21
Trang 3và học máy để hiểu rõ ý định tìm kiếm của người dùng và trả về kết quả phù hợp nhất
về mặt ngữ nghĩa Hệ thống được thiết kế để xử lý hiệu quả lượng dữ liệu sản phẩm lớn,đồng thời cung cấp trải nghiệm tìm kiếm mượt mà và trực quan
Mục tiêu:
Nghiên cứu này hướng đến các mục tiêu sau:
• Xây dựng một hệ thống tìm kiếm sản phẩm mạnh mẽ, có khả năng xử lý các truyvấn phức tạp và không chính xác
• Áp dụng các kỹ thuật NLP tiên tiến, bao gồm Sentence Embeddings và TF-IDF,
để biểu diễn văn bản và so sánh độ tương đồng ngữ nghĩa
• Tối ưu hóa hiệu suất tìm kiếm bằng cách sử dụng các thuật toán tìm kiếm gần nhấthiệu quả, chẳng hạn như Faiss, trên GPU
Phương pháp:
Để đạt được các mục tiêu nêu trên, nghiên cứu sẽ áp dụng các phương pháp sau:
• Tiền xử lý dữ liệu: Làm sạch và chuẩn hóa dữ liệu văn bản, bao gồm loại bỏ ký
tự đặc biệt, chuyển đổi chữ thường và stemming
• Sử dụng Sentence Embeddings (Sentence-BERT) và Faiss: Phương phápnày tập trung vào việc nắm bắt ý nghĩa ngữ nghĩa của truy vấn và tên sản phẩm
Cụ thể, mô hình Sentence-BERT sẽ được sử dụng để chuyển đổi văn bản thànhvector nhúng (embeddings) Sau đó, thư viện Faiss sẽ được sử dụng để xây dựngchỉ mục và thực hiện tìm kiếm gần nhất trên các vector embeddings, giúp tìm kiếmnhanh chóng các sản phẩm có ngữ nghĩa tương đồng với truy vấn
• Sử dụng TF-IDF và Cosine Similarity: Phương pháp này tập trung vào việc
Trang 4để tạo ma trận trọng số từ, biểu diễn mức độ quan trọng của từng từ trong mỗi sảnphẩm Độ tương đồng cosine sẽ được tính toán giữa vector TF-IDF của truy vấn vàcác vector TF-IDF của sản phẩm để xác định mức độ phù hợp.
Trang 52 Cơ sở lý thuyết
2.1 Vector nhúng (Vector Embeddings)
Vector nhúng (vector embeddings) là một khái niệm quan trọng và hữu ích trong họcmáy, đóng vai trò trung tâm trong nhiều thuật toán xử lý ngôn ngữ tự nhiên (NLP), hệthống đề xuất và tìm kiếm Nói một cách đơn giản, vector nhúng là một danh sách các
số thực được sử dụng để biểu diễn dữ liệu, cho phép các thuật toán học máy làm việc vớicác đối tượng trừu tượng như văn bản, hình ảnh, hoặc âm thanh
Các thuật toán học máy thường yêu cầu dữ liệu số để hoạt động Trong khi một số dữliệu có sẵn ở dạng số, thì những dữ liệu khác, chẳng hạn như văn bản, cần được chuyểnđổi thành dạng số Vector nhúng chính là cách để thực hiện việc chuyển đổi này Mỗiđoạn văn bản, hình ảnh, hoặc bất kỳ đối tượng nào khác đều có thể được biểu diễn bằngmột vector nhúng Thậm chí, cả dữ liệu số cũng có thể được chuyển đổi thành vector để
dễ dàng thực hiện các phép toán
Điểm đặc biệt của vector nhúng nằm ở khả năng chuyển đổi sự tương đồng về mặt ngữnghĩa mà con người nhận thức được thành khoảng cách trong không gian vector Khi cácđối tượng và khái niệm trong thế giới thực, chẳng hạn như hình ảnh, bản ghi âm, bài báo,
hồ sơ người dùng, kiểu thời tiết, và quan điểm chính trị, được biểu diễn dưới dạng vectornhúng, sự tương đồng về mặt ngữ nghĩa của chúng có thể được định lượng bằng khoảngcách giữa các điểm tương ứng trong không gian vector
Trang 6Nhờ khả năng biểu diễn sự tương đồng ngữ nghĩa này, vector nhúng rất phù hợp chocác tác vụ học máy phổ biến như phân cụm, đề xuất và phân loại.
• Phân cụm: Các thuật toán phân cụm nhóm các điểm tương tự vào cùng một cụm,đồng thời giữ cho các điểm từ các cụm khác nhau càng khác biệt càng tốt
• Đề xuất: Khi đưa ra đề xuất cho một đối tượng chưa biết, hệ thống đề xuất sẽ tìmkiếm các đối tượng tương tự nhất với đối tượng đang xét, dựa trên độ tương đồngcủa vector nhúng
• Phân loại: Nhãn của một đối tượng chưa biết được phân loại dựa trên sự đồng thuậncủa các nhãn từ các đối tượng tương tự nhất
Vector nhúng là một công cụ mạnh mẽ cho phép biểu diễn dữ liệu phức tạp dưới dạng
số, giúp cho việc áp dụng các thuật toán học máy trở nên hiệu quả hơn Khả năng biểudiễn sự tương đồng ngữ nghĩa của vector nhúng đóng vai trò then chốt trong nhiều ứngdụng, bao gồm tìm kiếm thông tin, hệ thống đề xuất, và xử lý ngôn ngữ tự nhiên
2.2 Cơ sở dữ liệu Vector(Vector Database)
Vector nhúng (vector embeddings) - một dạng biểu diễn dữ liệu mang thông tin ngữ nghĩaquan trọng, giúp AI hiểu và duy trì bộ nhớ dài hạn để thực hiện các tác vụ phức tạp.Vector nhúng được tạo ra bởi các mô hình AI (như Mô hình Ngôn ngữ Lớn) và có nhiềuthuộc tính hoặc đặc trưng
Thách thức khi làm việc với dữ liệu vector là các cơ sở dữ liệu truyền thống không thểtheo kịp độ phức tạp và quy mô của dữ liệu này, gây khó khăn cho việc tra cứu, tríchxuất thông tin chi tiết và thực hiện phân tích Chính vì vậy, chúng ta cần một loại cơ sở
dữ liệu chuyên biệt được thiết kế riêng cho việc xử lý loại dữ liệu này Vector database
ra đời để giải quyết vấn đề này Chúng được thiết kế để xử lý loại dữ liệu vector và cungcấp khả năng lưu trữ và truy vấn tối ưu cho vector nhúng
Trang 7Sơ đồ dưới đây giúp chúng ta hiểu rõ hơn về vai trò của cơ sở dữ liệu vector:
Quá trình có thể được tóm tắt như sau:
• Tạo vector nhúng: Sử dụng mô hình nhúng để tạo ra các vector nhúng cho nộidung mà chúng ta muốn lập chỉ mục
• Lưu trữ vector nhúng: Vector nhúng được chèn vào cơ sở dữ liệu vector, với một
số tham chiếu đến nội dung gốc mà vector nhúng được tạo ra
• Truy vấn: Khi ứng dụng đưa ra một truy vấn, cùng một mô hình nhúng được dùng
để tạo vector nhúng cho yêu cầu Vector nhúng này sau đó được dùng để truy vấnvector database, tìm kiếm các vector nhúng tương tự
• Trả về kết quả: Vector database trả về các vector nhúng tương tự nhất, cùng vớitham chiếu đến các nội dung gốc
2.3 Chỉ mục trong tìm kiếm tương đồng
2.3.1 Tìm kiếm tương đồng (Similarity search)
Similarity Search (hay tìm kiếm tương đồng) là việc tìm kiếm các đối tượng "tươngtự" nhất trong một tập dữ liệu lớn "Tương tự" được định nghĩa dựa trên một hàm đo
độ tương đồng (similarity measure) hoặc hàm đo khoảng cách (distance metric) Mụctiêu của Similarity Search là, cho một đối tượng truy vấn, tìm ra K đối tượng gần nhất(K-Nearest Neighbors - KNN) hoặc tìm tất cả các đối tượng nằm trong một bán kínhnhất định xung quanh đối tượng truy vấn (range search) Việc tìm kiếm này trở nên quantrọng khi tập dữ liệu lớn đến mức việc so sánh từng đối tượng truy vấn với mọi đối tượngtrong tập dữ liệu (brute-force) là không khả thi về mặt thời gian
Trang 82.3.2 Chỉ mục trong similarity search
Khi số lượng mục cần so sánh lên đến hàng triệu hoặc thậm chí hàng tỷ, tốc độ và độchính xác trở thành thách thức lớn Khi đó, giải pháp hiệu quả nằm ở việc tổ chức dữliệu và xây dựng các công cụ tối ưu hóa, trong đó việc sử dụng các chỉ mục (index) làmột bước quan trọng
Trong Similarity Search dựa trên vector, chỉ mục (index) được sử dụng để lưu trữ cácbiểu diễn vector của dữ liệu mà chúng ta muốn tìm kiếm Các vector này được tạo rathông qua các phương pháp thống kê hoặc học máy
Sau khi xây dựng các vector biểu diễn này, chúng ta lưu trữ chúng trong một chỉ mục.Khi cần tìm kiếm, một vector truy vấn sẽ được so sánh với các vector trong chỉ mục đểtìm ra các kết quả gần nhất
Các thuật toán phổ biến để so sánh và đo độ tương đồng vector gồm:
• Euclidean Distance (L2): Đo khoảng cách giữa hai điểm trong không gian vector
• Inner Product (IP): Đo mức độ tương tự thông qua tích vô hướng
2.3.3 FAISS (Facebook AI Similarity Search)
Faiss (Facebook AI Similarity Search) là một thư viện mạnh mẽ được thiết kế để xử lýSimilarity Search một cách hiệu quả Nó hỗ trợ nhiều loại chỉ mục, cho phép kết hợp hoặcxếp lớp các chỉ mục để đạt hiệu suất tốt nhất Một số chỉ mục phổ biến trong Faiss baogồm:
• Flat Index:
Trang 9Mô tả: Chỉ mục Flat là loại chỉ mục đơn giản nhất trong Faiss Nó lưu trữ tất cảcác vector mà không có bất kỳ sự sửa đổi hay nén nào Do đó, việc tìm kiếm trênflat index chính là so sánh trực tiếp vector truy vấn với tất cả các vector trong chỉmục.
Ưu điểm: Chất lượng tìm kiếm hoàn hảo do không xấp xỉ hay nhóm vector, đảmbảo kết quả chính xác nhất, luôn trả về đúng K láng giềng gần nhất
Nhược điểm: Tốc độ tìm kiếm chậm do phải so sánh vector truy vấn với mọivector, tỷ lệ thuận với kích thước tập dữ liệu Với tập dữ liệu lớn, thời gian tìmkiếm có thể rất lâu
Hiệu năng: Sử dụng bộ nhớ hợp lý do chỉ lưu trữ vector gốc Tuy nhiên, với tập
dữ liệu rất lớn, bộ nhớ vẫn có thể là vấn đề Tốc độ tìm kiếm chậm, đặc biệt vớitập dữ liệu lớn, phụ thuộc vào phần cứng và số chiều vector IndexFlatIP (innerproduct) thường nhanh hơn IndexFlatL2 (khoảng cách Euclidean) Sử dụng GPUcải thiện đáng kể tốc độ
Khi nào nên sử dụng: Khi ưu tiên chất lượng tìm kiếm tuyệt đối hoặc với tập dữliệu nhỏ (<10K vector) hoặc khi thời gian tìm kiếm không quan trọng Với tập dữliệu nhỏ, thời gian tìm kiếm có thể chấp nhận được, đặc biệt khi dùng phần cứngmạnh
• Inverted File Index - IVF
Mô tả:
Trang 10– Chỉ mục Inverted File (IVF) sử dụng phương pháp phân cụm để giảm phạm vitìm kiếm Đây là một chỉ mục phổ biến nhờ dễ sử dụng, chất lượng tìm kiếmcao và tốc độ tìm kiếm hợp lý.
– IVF hoạt động dựa trên khái niệm Voronoi diagrams (hay còn gọi là Dirichlettessellation) Không gian vector được chia thành các ô Voronoi, mỗi ô có mộtcentroid (tâm cụm) Mỗi điểm dữ liệu được gán vào ô Voronoi chứa nó.– Khi tìm kiếm, vector truy vấn được so sánh với các centroid để xác định ôVoronoi chứa nó Phạm vi tìm kiếm sau đó được giới hạn trong ô này
– Để giảm thiểu vấn đề này và tăng chất lượng tìm kiếm, ta có thể tăng tham số
‘nprobe‘ ‘nprobe‘ xác định số lượng ô Voronoi được tìm kiếm Tăng ‘nprobe‘
sẽ mở rộng phạm vi tìm kiếm, tăng chất lượng kết quả nhưng cũng làm giảmtốc độ tìm kiếm
Trang 11Ưu điểm: Chất lượng tìm kiếm cao, tốc độ tìm kiếm tốt, sử dụng bộ nhớ hợp lý.Nhược điểm: Cần phải điều chỉnh tham số ‘nprobe‘ để cân bằng giữa chất lượng
TF-IDF (Term Frequency-Inverse Document Frequency) là một kỹ thuật thống kê dùng
để đánh giá tầm quan trọng của một từ trong một tài liệu thuộc một tập hợp tài liệu
Nó dựa trên nguyên tắc rằng một từ càng xuất hiện nhiều trong một tài liệu (tần suất từ
- Term Frequency) và càng ít xuất hiện trong các tài liệu khác (tần suất nghịch đảo tàiliệu - Inverse Document Frequency), thì từ đó càng quan trọng đối với tài liệu đó.Cách tính TF-IDF:
TF-IDF được tính bằng cách nhân Term Frequency (TF) với Inverse Document quency (IDF)
Fre-• Term Frequency (TF): Đo lường tần suất xuất hiện của một từ trong một tài
Trang 12– TF thô: T F (t, d) = ft,d (với ft,d là số lần từ t xuất hiện trong tài liệu d)– TF chuẩn hóa:
IDF(t) = log
Tổng số tài liệu
Số tài liệu chứa từ t + 1
Ý nghĩa của TF-IDF trong việc biểu diễn văn bản:
TF-IDF cung cấp một cách biểu diễn văn bản dưới dạng vectơ số, trong đó mỗi phần
tử của vectơ đại diện cho trọng số TF-IDF của một từ trong văn bản Điều này cho phépmáy tính hiểu và xử lý văn bản một cách hiệu quả Cụ thể, TF-IDF có ý nghĩa sau:
• Làm nổi bật các từ quan trọng: Các từ xuất hiện nhiều trong một tài liệu và
ít xuất hiện trong các tài liệu khác sẽ có trọng số TF-IDF cao, thể hiện tầm quantrọng của chúng đối với tài liệu đó
• Lọc bỏ các từ phổ biến: Các từ xuất hiện trong hầu hết các tài liệu (ví dụ: các
từ dừng) sẽ có IDF thấp, do đó trọng số TF-IDF của chúng cũng thấp, giúp giảmnhiễu trong quá trình phân tích
• Hỗ trợ so sánh văn bản: Biểu diễn văn bản dưới dạng vectơ TF-IDF cho phép sosánh các tài liệu dựa trên nội dung của chúng bằng cách sử dụng các phương phápnhư cosine similarity
2.5 Cosine Similarity
• Định nghĩa: Cosine Similarity là một phương pháp đo lường độ tương đồng giữa haivectơ bằng cách tính toán cosin của góc giữa chúng Giá trị Cosine Similarity nằm
Trang 13trong khoảng từ -1 đến 1 Giá trị càng gần 1 thể hiện độ tương đồng càng cao, giátrị 0 thể hiện không có mối liên hệ, và giá trị càng gần -1 thể hiện độ tương phảncàng cao Trong ngữ cảnh bài báo cáo này các vectơ đại diện cho người dùng hoặcvật phẩm, và ta sẽ sử dụng Cosine Similarity để tính sự tương đồng giữa chúng.
• Công thức tính Cosine Similarity
similarity = cos(θ) = A · B
||A|| · ||B|| =
Pn i=1AiBi
pPn i=1A2
i ·pPni=1B2
i
• Ưu điểm:
– Dễ hiểu và dễ triển khai, cho kết quả khá chính xác
– Chỉ quan tâm đến góc giữa hai vectơ, không phụ thuộc vào độ dài Hữu íchkhi so sánh các vectơ có độ dài khác nhau
– Hoạt động tốt với dữ liệu thưa thớt, chỉ tập trung vào các phần tử khác không
– scikit-learn: Cung cấp TfidfVectorizer để tính toán TF-IDF
– nltk: Thư viện xử lý ngôn ngữ tự nhiên, cung cấp PorterStemmer cho
Trang 14stem-– pandas: Dùng để xử lý và phân tích dữ liệu dạng bảng.
– numpy: Thư viện tính toán khoa học, dùng để xử lý mảng
– cupy: Thư viện tương tự NumPy nhưng chạy trên GPU, dùng để tăng tốc tínhtoán
– cupyx.scipy.sparse: Thư viện ma trận thưa trên GPU
– pickle: Dùng để lưu trữ và tải các đối tượng Python
• Mô hình:
– Sentence-BERT (all-MiniLM-L6-v2): Mô hình biến đổi (transformer) đượchuấn luyện trước, tạo ra các vector nhúng (embeddings) đại diện cho ngữ nghĩacủa câu Mô hình này sử dụng kiến trúc MiniLM-L6 với 6 lớp transformer vàđược huấn luyện trên một tập dữ liệu lớn
– TF-IDF: Kỹ thuật tính toán trọng số từ dựa trên tần suất xuất hiện của từtrong tài liệu (TF) và nghịch đảo tần suất tài liệu của từ (IDF) TF-IDF giúpxác định các từ quan trọng, đặc trưng cho từng sản phẩm
– FAISS (IndexIVFFlat): Chỉ mục tìm kiếm gần đúng dựa trên phương phápInverted File và lượng tử hóa vector IndexIVFFlat chia không gian vectorthành các vùng Voronoi và tìm kiếm gần nhất trong vùng gần nhất với vectortruy vấn
Trang 153 Thực Nghiệm
3.1 Phân tích yêu cầu nghiệp vụ/chức năng người dùng
Người dùng nhập truy vấn tìm kiếm (tên sản phẩm hoặc từ khóa liên quan), hệ thống trả
về danh sách sản phẩm phù hợp nhất, được sắp xếp theo độ tương đồng Hệ thống cầnđảm bảo tốc độ tìm kiếm nhanh và kết quả có độ chính xác cao
3.2 Tập dữ liệu
Nghiên cứu này sử dụng tập dữ liệu về đánh giá và xếp hạng sản phẩm Amazon Tập dữliệu được thu thập từ trang web chính thức của Amazon và chứa thông tin chi tiết về sảnphẩm, bao gồm cả đánh giá của người dùng
3.3 Mô tả hiện thực chi tiết (Sử dụng Sentence Embeddings
2 category_df = pd read_csv( '/content/drive/MyDrive/category.csv' )
2 Chuyển đổi cột rating thành kiểu số, loại bỏ giá trị không hợp lệ
1 product_df[ 'rating' ] = pd to_numeric(product_df[ 'rating' ], errors = 'coerce' )
2 product_df dropna(subset = 'rating'], inplace = True )
3 Cập nhật lại cột id bắt đầu từ 8
1 product_df[ 'id' ] = range ( , len (product_df) + 8
4 Chuẩn hóa chữ cái đầu của main_category và sub_category
1 product_df[ 'main_category' ] = product_df[ 'main_category' ] str capitalize()
2 product_df[ 'sub_category' ] = product_df[ 'sub_category' ] str capitalize()