- vừa được xem lúc

Scoring trong Azure AI Search (Part 1)

0 0 14

Người đăng: Trung Đức

Theo Viblo Asia

Trong bài viết trước, mình có giới thiệu tới các bạn về Full-text search trong Azure AI Search. Trong bài viết này, mình sẽ đi phân tích sâu hơn về cách tính score của nó (có thêm scoring của Semantic search bổ trợ). Như các bạn đã biết thì việc search, ngoài trả ra các docs liên quan thì nó cũng cần có những score tương ứng để xếp hạng (ranking) chúng theo độ tương đồng. Chúng ta bắt đầu nhé

Full text search (BM25)

  • Một phút quảng cáo: Các bạn có thể đọc lại bài viết trước của mình để hiểu qua trước về Full text search, hiểu được input của nó là gì và output của nó là gì nha

  • Full text search trong Azure AI Search sử dụng hàm xếp hạng Okapi BM25 (Best Matching) để đánh giá độ liên quan của một tài liệu đối với truy vấn tìm kiếm

  • Cùng xem công thức để hiểu về cách hoạt động của nó nhé

    score(D,Q)=i=1nIDF(qi)f(qi,D)(k1+1)f(qi,D)+k1(1b+bDavgdl)\quad \operatorname { s c o r e } \left ( D , Q \right ) = \sum _ { i = 1 } ^ { n } \operatorname { I D F } \left ( q _ { i } \right ) \cdot \frac { f \left ( q _ { i } , D \right ) \cdot \left ( k _ { 1 } + 1 \right ) } { f \left ( q _ { i } , D \right ) + k _ { 1 } \cdot \left ( 1 - b + b \cdot \frac { | D | } {avgdl} \right ) }

Trong đó:

  • Query QQ gồm các query term q1,q2,qnq_1, q_2, … q_n

  • f(qi,D)f(qi, D) là số lần xuất hiện query term qiq_i trên document DD

  • D|D| là chiều dài document theo đơn vị word

  • avgdlavgdl là chiều dài trung bình của các document đang được xét

  • k1,bk_1, b là các hyper-parameters, trong đó thường: k1k_1 thuộc đoạn [1.2,2.0][1.2, 2.0]b=0.75b =0.75

  • IDF(qi)IDF(q_i) là trọng số IDF của query term qiq_i, được tính như sau

    IDF(qi)=ln(Nn(qi)+0.5n(qi)+0.5+1)\quad \operatorname { I D F } \left (q_i \right ) = ln \left ( \frac { N - n \left ( q _ { i } \right ) + 0.5 } { n \left ( q _ { i } \right ) + 0.5} +1\right )

Trong đó:

  • NN là tổng số documents đang được xét
  • n(qi)n(q_i) là số document chứa qiq_i

Từ công thức trên, chúng ta có thể rút ra một số nhận xét:

  • Từ càng xuất hiện ở nhiều documents → IDFIDF càng nhỏ (theo cấp số lnln)
  • Từ càng xuất hiện nhiều trong 1 document → f(qi,D)f(q_i, D) càng lớn → score càng cao
  • Chiều dài doc càng lớn (so với chiều dài trung bình của các docs đang xét) → Score càng nhỏ

Semantic Reranker

  • Semantic ranking trong Azure AI Search là một tính năng của dịch vụ Azure Cognitive Search của Microsoft. Nó giúp cải thiện khả năng xếp hạng kết quả tìm kiếm dựa trên sự hiểu biết về ý nghĩa ngôn ngữ và mối quan hệ giữa các thuật ngữ trong tài liệu.

  • Trong quá trình tìm kiếm thông thường, các hệ thống chỉ đánh giá sự khớp từ khóa giữa truy vấn và tài liệu. Tuy nhiên, semantic ranking sử dụng các thuật toán và mô hình học máy để phân tích và hiểu sâu hơn về nội dung của truy vấn và tài liệu. Điều này cho phép hệ thống tìm kiếm đưa ra kết quả xếp hạng dựa trên sự tương đồng ngữ nghĩa, ngữ cảnh và ý nghĩa chung.

  • Semantic ranking trong Azure AI Search sử dụng một số kỹ thuật như:

    • Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP): Phân tích và hiểu câu truy vấn và tài liệu để phát hiện các thuật ngữ quan trọng, đồng nghĩa, mối quan hệ ngữ nghĩa và ngữ cảnh.
    • Word2Vec: Sử dụng mô hình Word2Vec để biểu diễn từ và cung cấp thông tin về mối quan hệ ngữ nghĩa giữa các từ.
    • Trích xuất thông tin ngữ nghĩa: Tìm hiểu các khái niệm, thực thể và quan hệ giữa chúng để cung cấp sự hiểu biết ngữ nghĩa sâu hơn về tài liệu.
  • Các khả năng của Semantic reranker

    • Semantic ranking (Xếp hạng ngữ nghĩa): Sử dụng ngữ cảnh hoặc ý nghĩa ngữ nghĩa của một truy vấn để tính toán một điểm số mới về mức độ phù hợp của các kết quả đã được xếp hạng trước đó.
    • Semantic captions and highlights: Trích xuất các câu và cụm từ trực tiếp từ tài liệu mà tóm tắt nội dung tốt nhất, kèm theo highlight các đoạn quan trọng để dễ dàng quét qua. Việc highlight văn bản giúp nổi bật các thuật ngữ và cụm từ quan trọng nhất để người dùng có thể nhanh chóng xác định tại sao một kết quả được coi là liên quan.
    • Semantic answers: Một cấu trúc phụ tùy chọn và bổ sung được trả về từ một truy vấn ngữ nghĩa. Nó cung cấp một câu trả lời trực tiếp cho một truy vấn có dạng câu hỏi. Điều này yêu cầu tài liệu có văn bản có đặc điểm của một câu trả lời.
  • Khi sử dụng nó, có 2 cách

    • Ranking phụ thuộc vào kết quả từ full-text search hoặc hybrid search
    • Trích xuất và trả về các chú thích và câu trả lời trong phản hồi, từ đó bạn có thể hiện thị trên trang tìm kiếm để cải thiện trải nghiệm tìm kiếm của người dùng (cách này khá hay)
  • Cách tính score:

    • Score được tính trên caption và bất kỳ nội dung nào từ "summary string" (summary string là output của summarization model được sử dụng trong semantic search)
    • Mỗi tài liệu được gán 1 @search.rerankerScore dựa trên tính ngữ nghĩa của dữ liệu đối với truy vấn đã cho, điểm số giao động từ 4 - 0 (cao - thấp).
    • Azure AI Search chỉ nói sử dụng AI models để làm việc này, mình cũng chưa tìm ra cụ thể là mô hình nào.

Inferences

Bình luận

Bài viết tương tự

- vừa được xem lúc

Golang Data Structures and Algorithms - Stack

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 37

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - Secrets Manager

Introduction. A quick note about AWS Secrets Manager.

0 0 44

- vừa được xem lúc

Golang Data Structures and Algorithms - Queue

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 47

- vừa được xem lúc

Terraform Series - Bài 17 - Security - Manage Secrets with Vault

Giới thiệu. Chào các bạn tới với series về Terraform, ở bài trước chúng ta đã tìm hiểu về vấn đề security trong Terraform.

0 0 37

- vừa được xem lúc

Golang Data Structures and Algorithms - Linked Lists

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 36

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - AWS Certificate Manager

Introduction. A quick note about AWS Certificate Manager.

0 0 31