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

Hướng Dẫn Nhanh và Các Cách Tùy Chỉnh Hiệu Quả Để Cải Thiện Azure AI Search (Phần 1)

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

• 5 phút đọc

Giới Thiệu

Trong bối cảnh dữ liệu ngày càng tăng, việc tìm kiếm và phân loại thông tin trở nên phức tạp hơn bao giờ hết. Azure AI Search là dịch vụ tìm kiếm mạnh mẽ do Microsoft Azure cung cấp, giúp người dùng tìm kiếm thông tin linh hoạt cho các ứng dụng và trang web.

Bài viết này sẽ hướng dẫn bạn cách sử dụng Azure AI Search để tìm kiếm và phân loại thông tin một cách nhanh chóng, chính xác. Chúng ta sẽ khám phá những khía cạnh quan trọng của dịch vụ này, từ xây dựng kho dữ liệu cho đến thực hiện các truy vấn, cùng với một số mẹo tùy chỉnh giúp nâng cao hiệu quả tương tác với dịch vụ tìm kiếm này.

Nội Dung

1. Giới Thiệu Chung

Azure AI Search cho phép truy xuất thông tin an toàn trên quy mô lớn từ nội dung do người dùng tải lên.

Có hai nhiệm vụ chính khi làm việc với Azure AI Search là: Indexing (lập chỉ mục) và Querying (truy vấn):

  • Indexing là quá trình tiếp nhận nội dung vào dịch vụ tìm kiếm, biến nó thành thông tin có thể tìm kiếm được. Azure AI Search hỗ trợ định dạng tài liệu là JSON, người dùng có thể tải lên các tài liệu JSON đã chuẩn bị hoặc sử dụng trình lập chỉ mục để chuyển đổi dữ liệu thành định dạng JSON.
  • Querying được thực hiện khi một chỉ mục với nội dung có thể tìm kiếm đã được tải lên. Khi gửi yêu cầu truy vấn, dịch vụ tìm kiếm sẽ xử lý và phản hồi với kết quả phù hợp từ chỉ mục mà bạn kiểm soát hoàn toàn.

Trước khi thực hiện hai nhiệm vụ này, bạn cần khởi tạo client để giao tiếp với Azure AI Search. Cũng như các dịch vụ khác của Azure, bạn sẽ cần có keyendpoint. Dưới đây là đoạn mã tham khảo để khởi tạo client:

python Copy
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient

credential = AzureKeyCredential(azure_search_key)
search_client = SearchIndexClient(
            endpoint=azure_search_endpoint,
            credential=credential,
        )

Sau khi đã có client, chúng ta sẽ đi vào chi tiết hai nhiệm vụ trên.

2. Indexing

2.1. Khởi Tạo Index

Để tải dữ liệu lên index (chỉ mục), bạn cần khởi tạo một index trước. Việc khởi tạo index có thể hiểu là khai báo các trường trong chỉ mục, trọng số giữa các trường, và các tham số khác. Bạn có thể để các giá trị mặc định do Azure cung cấp nếu không cần tùy chỉnh quá nhiều.

Dưới đây là một đoạn mã đơn giản để khai báo các trường và khởi tạo index:

python Copy
from azure.search.documents.indexes.models import SearchableField
from azure.search.documents.indexes.models import SearchIndex
from azure.search.documents.indexes.models import SimpleField

fields = [
            SimpleField(name='id', type=SearchFieldDataType.String, key=True, sortable=True, filterable=True, facetable=True),
            SimpleField(name='number', type=SearchFieldDataType.Int64),
            SearchableField(name='text', type=SearchFieldDataType.String, analyzer_name='vi.microsoft'),
          ]
index = SearchIndex(
                name=index_name, 
                fields=fields,
            )
search_client.create_or_update_index(index)

Trong số các trường được khai báo, có hai loại chính:

  • Trường lưu trữ thông tin: không dùng để tìm kiếm. Chúng sẽ được sử dụng sau khi dữ liệu đã được truy vấn từ Azure Search.
  • Trường dùng để tìm kiếm: tìm kiếm thông tin dựa trên dữ liệu lưu trong các trường này.

Việc phân bổ các trường như trên giúp bạn quản lý dữ liệu tốt hơn, và không lo lắng về những trường không liên quan ảnh hưởng đến kết quả tìm kiếm.

Scoring Profile

Khi có nhiều trường được khởi tạo là SearchableField, nếu không chỉ định trọng số, quá trình tìm kiếm sẽ diễn ra trên tất cả các trường với trọng số mặc định là 1 cho mỗi trường. Để tùy chỉnh trọng số, bạn cần thêm Scoring Profile trong quá trình khởi tạo index:

python Copy
from azure.search.documents.indexes.models import ScoringProfile

scoring_profile = ScoringProfile(
            name='my_scoring_profile',
            text_weights=TextWeights(
                weights={'summary': 3, 'text': 1},
            ),
        )
index.scoring_profiles = [scoring_profile]

Bạn có thể thêm nhiều scoring_profile với trọng số khác nhau để thử nghiệm và chọn trọng số phù hợp khi thực hiện truy vấn.

2.2. Tải Dữ Liệu Lên Index

Khi đã có index, bạn cần khởi tạo lại client để tương tác với chỉ mục vừa tạo:

python Copy
search_client = SearchClient(
            endpoint=azure_search_endpoint,
            index_name=index_name,
            credential=credential,
        )

Bạn chỉ cần tạo một dictionary với thông tin cần thiết và tải nó lên qua client:

python Copy
document_upload = {
                'id': str(uuid.uuid4()),
                'number': number,
                'text': f'Đây là nội dung số {number}',
            }
search_client.upload_documents(document_upload)

Hoàn thành bước này với toàn bộ dữ liệu, bạn đã hoàn thành quá trình Indexing. Sau đó, bạn có thể chuyển sang bước Querying. Kết quả sẽ là danh sách các dictionary cùng với thông tin bổ sung về điểm số tìm kiếm.

Kết Luận

Trong phần này, tôi đã giới thiệu tổng quan về Azure AI Search và công việc Indexing. Ở phần tiếp theo, chúng ta sẽ khám phá Querying: cách truy xuất dữ liệu và một số mẹo tối ưu hóa quá trình tìm kiếm. Hy vọng bạn sẽ tiếp tục theo dõi.

Tài Liệu Tham Khảo

  • Tìm hiểu về Azure Search
  • Hướng dẫn lập chỉ mục
    source: viblo
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