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

QuickStart và một vài cách custom nhanh giúp cải thiện Azure AI Search (phần 1)

0 0 17

Người đăng: Nguyen Toan Thinh

Theo Viblo Asia

Lời mở đầu

Với lượng 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à một dịch vụ tìm kiếm được cung cấp bởi Microsoft Azure, mang đến khả năng tìm kiếm thông tin mạnh mẽ và linh hoạt cho các ứng dụng và trang web.

Trong bài chia sẻ này, chúng ta sẽ khám phá 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 và chính xác. Chúng ta sẽ đi qua các khía cạnh quan trọng của dịch vụ này, từ việc xây dựng kho dữ liệu cho đến việc thực hiện tìm kiếm trên dịch vụ. Kèm theo là một số mẹo tùy chỉnh giúp gia tăng hiệu quả cho quá trình searching.

Nội dung

1. Giới thiệu chung

Azure AI Search cung cấp khả năng truy xuất thông tin an toàn trên quy mô lớn đối với nội dung do người dùng upload lên.

Có 2 công việc chính trên Azure AI Search là Indexing và Querying:

  • Indexing (lập chỉ mục) là một quá trình tiếp nhận tải nội dung vào dịch vụ tìm kiếm của bạn và làm cho nội dung đó có thể tìm kiếm được. Định dạng tài liệu mà Azure AI Search có thể lập chỉ mục là. JSON. Bạn có thể tải lên các tài liệu JSON mà bạn đã tập hợp hoặc sử dụng trình lập chỉ mục để truy xuất dữ liệu của bạn thành JSON.
  • Querying chỉ có thể thực hiện khi một chỉ mục được upload lên với nội dung Searchable. Khi bạn gửi yêu cầu truy vấn đến, dịch vụ sẽ tìm kiếm và xử lý các phản hồi. Tất cả việc thực hiện truy vấn đều diễn ra trên chỉ mục tìm kiếm mà bạn hoàn toàn kiểm soát các nội dung.

Nhưng trước khi thực hiện 2 công việc trên, chúng ta cần khởi tạo client trước để có thể giao tiếp với Azure AI Search. Như bao dịch vụ khác của azure, chúng ta sẽ cần có keyendpoint để khởi tạo client. Sau đây là code tham khảo:

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 luôn vào chi tiết việc thực hiện 2 công việc trên.

2. Indexing

2.1. Khởi tạo index

Đầu tiên, để đẩy được dữ liệu lên index (chỉ mục) thì chúng ta sẽ cần khởi tạo index trước. Khởi tạo index có thể hiểu là công việc khai báo các trường trong index, trọng số giữa các trường, các tham số trong hàm tính, ... Khai báo trọng số và tham số là optional, nếu không quá cần đào sâu vào bên trong, bạn có thể để mặc định các giá trị ban đầu được set bởi Azure.

Dưới đây là một đoạn code ví dụ đơn giản cho việc khai báo các trường và khởi tạo index:

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 các trường được khai báo, có thể hiểu là sẽ có 2 loại chính:

  • Trường với mục đích lưu trữ thông tin, không dùng để search. Những trường này sẽ được sử dụng đến sau khi dữ liệu đã được truy vấn ra từ Azure Search.
  • Trường dùng để search: Khi bạn thực hiện 1 câu truy vấn để tìm kiếm 1 thông tin nào đó, việc searching sẽ được thực hiện trên những dữ liệu được lưu trong trường này để tìm ra kết quả khớp nhất với câu truy vấn.

Việc phân chia ra các trường như trên sẽ giúp bạn quản lý dữ liệu tốt hơn, vừa có thể dùng Azure Search như 1 Database lưu trữ dữ liệu vừa không sợ các trường không liên quan ảnh hưởng đến kết quả search.

Scoring Profile

Trong trường hợp chúng ta có nhiều trường được khởi tạo là SearchableField, nếu chung ta không khai báo gì thêm, quá trình search sẽ được thực hiện trên tất cả các trường, sau đó tổng hợp lại để cho ra search score cuối cùng. Ở quá trình tổng hợp kết quả, trọng số mặc định cho tất cả các trường sẽ đều là 1.

Để tinh chỉnh trọng số cho từng trường, ưu tiên một trường nào hơn, chúng ta sẽ cần khai báo ngay từ khi khởi tạo index bằng việc thêm Scoring Profile. Sau đây là một ví dụ:

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]

"summary" và "text" là tên 2 trường SearchableField trong index.

Chúng ta hoàn toàn có thể thêm nhiều scoring_profile với những trọng số khác nhau để thử nghiệm và khi searching sẽ thiết lập tên scoring_profile mà chúng ta cần sử dụng.

2.2. Upload dữ liệu lên index

Sau khi đã có index, chúng ta sẽ tiến hành upload dữ liệu lên theo đúng các trường đã được khai báo. Trước tiên cần khởi tạo lại client, lí do là vì cần phải khai báo thêm tên index chúng ta cần tương tác do trong Azure Search có thể có nhiều index khác nhau.

search_client = earchClient( endpoint=azure_search_endpoint, index_name=index_name, credential=credential, )

Tiếp theo chỉ cần khởi tạo một dictionary với đầy đủ các trường của index và upload qua client là được. Đây là một ví dụ đơn giản:

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

Thực hiện bước này với toàn bộ dữ liệu là chúng ta đã hoàn thành công việc đầu tiên Indexing. Sau đó có thế chuyển sang bước tiếp theo là Querying. Kết quả của bước này sẽ là 1 list các dictionary như chúng ta upload ở trên, kèm theo đó là các thông tin bổ sung về quá trình search như search_score.

Tạm kết

Ở phần trên tôi đã giới thiệu sơ lược về Azure AI Search và công việc đầu tiên khi làm việc với Azure AI Search là Indexing. Ở phần tiếp theo chúng ta sẽ đi vào Querying: những cách truy xuất dữ liệu và một số mẹo tối ưu chúng. Rất hi vọng sẽ tiếp tục được mọi người đón đọc.

References

Bình luận

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

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

So sánh Windows Azure Blob Storage và Amazon Simple Storage Service (S3)

Trong bài đăng viết này, chúng ta sẽ cùng nhau so sánh giữa Windows Azure Blob Storage và Amazon Simple Storage Service (S3) dựa trên quan điểm chức năng cốt lõi của chúng. Trong bài chia sẻ này, chúng ta sẽ tập trung vào các khái niệm cốt lõi, giá cả và so sánh tính năng giữa các blob containers và

0 0 129

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

Tìm hiểu cơ bản về LUIS trong Microsoft Cognitive Services

Trong bài trước mình đã có giới thiệu sơ lược về QnA Maker - một dịch vụ lưu trữ ngôn ngữ tự nhiên trên nền tảng đám mây. Tuy nhiên để có thể sử dụng chatbot linh hoạt và với xu hướng càng thân thiện với người dùng, thì hôm nay mình giới thiệu thêm về LUIS.

0 0 40

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

Tìm hiểu cơ bản về QnA Maker

QnA Maker là dịch vụ lưu trữ ngôn ngữ tự nhiên trên nền tảng đám mây (do microsoft cung cấp ). Không chỉ đơn thuần là lưu trữ, QnA Maker còn có thể thu thập nội dung, cách thức câu hỏi từng người dùng để phân tích và đưa ra gợi ý hay chọn câu trả lời phù hợp khi có nhiều câu trả lời trên cùng 1 nội

0 0 37

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

Kinh nghiệm thi chứng chỉ AZ-900

Giới thiệu về bản thân. Xin chào các bạn, mình đang là 1 junior cloud engineer.

0 0 48

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

Hướng dẫn cấu hình đăng nhập Cognito AWS thông qua OAuth2 Azure

Sơ lược về Cognito: Amazon Cognito là dịch vụ của Amazon Web Services cung cấp xác thực, ủy quyền và quản lý người dùng cho các ứng dụng web và di động của bạn. Người dùng có thể đăng nhập trực tiếp b

0 0 43

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

Đừng lạc lối nữa! Azure Cognitive Search sẽ giúp bạn tìm đúng những gì bạn đang tìm kiếm

Mở đầu. Azure là một nền tảng đám mây thông minh, do chính Microsoft phát triển.

0 0 21