0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Chi Tiết Về Cách Tùy Chỉnh Truy Vấn Trong Azure AI Search (Phần 2)

Đăng vào 3 tuần trước

• 3 phút đọc

Giới Thiệu

Trong phần trước, chúng ta đã cùng nhau khám phá những khái niệm cơ bản về Azure AI Search, bao gồm cách thức indexing. Tiếp theo, phần này sẽ tập trung vào việc tìm hiểu cách thức querying và một số mẹo để tối ưu hóa hiệu suất truy vấn.

1. Nội Dung Chính

2. Querying

Azure AI Search cung cấp nhiều cấu trúc truy vấn phù hợp với các tình huống khác nhau. Từ tìm kiếm văn bản tự do đến mẫu truy vấn cụ thể hay tìm kiếm vectơ, tất cả các truy vấn đều thực hiện trên một index đã được xác định trước. Chúng ta có ba kiểu tìm kiếm chính trong Azure AI Search:

  1. Full-text search
  2. Vector search
  3. Hybrid search: Kết hợp giữa Full-text search và Vector search.

Bây giờ, hãy cùng nhau đi sâu vào từng loại tìm kiếm.

Vector search cho phép truy vấn dựa trên các trường dữ liệu được mã hóa thành vector số. Do dữ liệu dưới dạng vector, quá trình so khớp căn cứ vào độ tương đồng giữa các vector (sử dụng các phương pháp như Cosine, Euclidean, v.v.).

Để áp dụng vector search, bạn cần khai báo các trường trong index với cấu trúc như sau:

python Copy
SearchField(
    name='embedding_text', type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
    searchable=True, vector_search_dimensions=1024, vector_search_profile='myHnswProfile',
)

Khi bạn gửi một vector từ phía client, Azure Search tự động sử dụng thuật toán CosineSimilarity để tính toán sự tương đồng và trả về các kết quả có điểm số cao nhất.

Ví dụ truy vấn vector:

python Copy
vectors = [
    RawVectorQuery(
        vector=vector_embedding,
        k=topk,
        fields=fields,
    ),
]
search_client.search(
    search_text=None,
    vector_queries=vectors,
    select=select_fields,
    top=topk,
)  

Các thông số cần thiết bao gồm:

  • vector: Vector để thực hiện truy vấn
  • top: Số lượng kết quả mong muốn
  • fields: Tên trường dữ liệu sẽ truy vấn
  • select: Các trường cần chọn trong kết quả
  • search_text: Để phù hợp với cú pháp, giữ giá trị là None.

Full-text search là phương pháp tìm kiếm thông tin dựa vào văn bản thuần túy trong index. Các truy vấn trải qua quá trình phân tích từ ngữ, bao gồm việc chuyển đổi thành chữ thường, loại bỏ stop-words và rút gọn từ.

Dưới đây là công thức cho full-text search:

python Copy
search_client.search(
    search_text=search_query,
    vector_queries=None,
    select=select_fields,
    search_fields=['text'],
    top=topk,
    search_mode='all',
    query_language='vi-vn',
)

Cùng với các tham số như vector_queriesNone, search_text sẽ chứa truy vấn tìm kiếm.

Full-text search tính điểm dựa trên thuật toán BM25Similarity, cho phép tùy chỉnh trọng số như sau:

  • k1: ảnh hưởng đến tần suất thuật ngữ của tài liệu
  • b: điều chỉnh độ dài tài liệu.

Để thiết lập lại các tham số này, khai báo ngay khi tạo index:

python Copy
from azure.search.documents.indexes.models import BM25Similarity
index.similarity = (BM25Similarity(k1=2, b=0))

Tìm kiếm bằng keyword: Có thể sử dụng các từ khóa để tối ưu tìm kiếm bằng cách kết hợp các cụm từ:

python Copy
search_query = ('|'.join([f'"{i}" ' for i in keywords]))

Hybrid search kết hợp cả full-text và vector search, sau đó tổng hợp kết quả bằng thuật toán xếp hạng đối ứng (RRF).

Cách thực hiện truy vấn hybrid search:

python Copy
search_client.search(
    search_text=search_query,
    vector_queries=vectors,
    select=select_fields,
    search_fields=['text'],
    top=topk,
    search_mode='all',
    query_language='vi-vn',
)

Khi đó, cả search_textvector_queries đều có giá trị.

RRF là thuật toán tính điểm dựa trên công thức:score = 1 / (rank + k), trong đó rank là thứ tự tài liệu và k là tham số cố định thường được thiết lập là 60. Thuật toán này hỗ trợ đảm bảo rằng tài liệu có mặt trong cả hai kết quả sẽ có điểm cao hơn.

Kết Luận

Bài viết này đã trình bày các phương pháp truy vấn chính trong Azure AI Search. Hy vọng rằng những thông tin chia sẻ sẽ hữu ích trong việc phát triển giải pháp tìm kiếm hiệu quả cho tổ chức của bạn. Bạn hãy sẵn sàng khám phá sức mạnh của Azure AI Search để nâng cao quy trình tìm kiếm của mình.

Cảm ơn bạn đã theo dõi bài viết. Nếu có bất kỳ câu hỏi hay ý kiến nào, hãy để lại comment cho chúng tôi biết nhé!

Tài Liệu Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào