Skip to content

Microsoft Azure 認知搜尋(Cognitive Search)筆記

什麼是 Azure 認知搜尋?

Microsoft Azure 認知搜尋Cognitive Search)是 Azure 中所提供的的 AI 搜尋服務,允許開發人員在雲端應用程式中加入全文搜尋能力。

此服務除了基本的全文搜尋外,還包括許多比較進階的功能,例如

  • 過濾
  • 排序
  • 分頁
  • 語義搜尋(限地區,目前為 preview 版本)

更重要的是,Cognitive Search 支援 “cognitive skills”,讓開發者可以應用 AI 技術(例如視覺和自然語言處理)來分析和理解他們的資料。當然,在我測試後發現這其實比較偏向做資料的前處理(preprocessing)。

以下再來詳細地說說這些功能,比方說 Azure Cognitive Search 官方網站所列出的主要功能簡介:

  1. 全文搜尋:支援多語言和語義搜尋,使用者可以使用簡單的查詢語法進行複雜的搜尋。
  2. 分析:Cognitive Search 內建許多文本分析器,可以進行自然語言處理任務,例如斷詞、詞性標註、實體識別等。
  3. Cognitive Skills:這些是預先建立的 AI 模型,可以用來提取和理解資料。例如,有一些 Cognitive Skills 可以分析圖像、提取關鍵字、識別語言等。
  4. 索引:Cognitive Search 可以對多種類型的資料源建立索引,包括 Azure SQL Database、Azure Cosmos DB、Azure Blob Storage 等。
  5. 安全性與隱私:Cognitive Search 支援 Azure 的安全和隱私標準,例如使用 SSL 加密連線、身分驗證等。
  6. 可擴展性與可用性:Cognitive Search 支援橫向擴展,可以根據負載自動調整容量。同時,服務也設計成可以應對硬體故障,確保高可用性。

在應用端,Azure Cognitive Search 廣泛應用於網站搜尋、電子商務平台、文件探索和分析、資訊檢索等場景,提供了靈活且強大的搜尋功能,並結合 AI 的能力進一步提升使用者的搜尋體驗。

雖然現在(2023/05/24)還不支援向量搜尋(vector search),但是在 Microsoft 近日發表的新聞 https://news.microsoft.com/build-2023-book-of-news/ 中,則明確提到了之後會支援。


由於 Azure 上的功能很複雜(雖然就某方面來講是很「齊全」…),所以下面我簡單地說說我們要如何做認知搜尋服務。

  1. 建立伺服器:要有一個伺服器,我們才能託管服務
  2. 建立 SQL 資料庫:我們需要建立一個資料庫並儲存我們的資料。並且這個資料庫需要託管在我們剛剛建立的伺服器上
  3. 建立認知搜尋服務:接著我們要建立一個可以打 API 的服務,來讓我們本地端的程式(比如 Python)進行調用
  4. 本地端查找雲端的資料:這裡我拿 python 實作

以下是更詳細的流程說明。



建立伺服器

一開始進入 Azure 時,你會看到以下畫面。而我們要做的,首先就是建立一個伺服器。

我們應該要做的就是建立一個 SQL server,你可以依照自己的需求建立。

建立時,會需要填寫:

  • 訂閱戶(Subscription)
  • 資源群組(Resource group)
  • 伺服器名稱(Server name)
  • 位置(Location)

要記得,之後要填寫使用者名稱跟密碼時要紀錄起來,因為之後在我們上傳資料時會需要填寫,然後才能成功把資料傳到資料庫中的表。

在這裡,我建立的伺服器名稱就是 claybotserver
這就是伺服器建立好的樣子。



建立資料庫

接下來就是建立資料庫了。



建立資料庫同樣很單純,選擇自己想要的設定,唯一要注意的就是要把資料庫託管在自己剛剛建立的伺服氣上。



匯入資料

接著就是把我們的資料上傳至資料庫中。

我是參考這個網站的:https://freegistutorial.com/how-to-import-csv-to-sql-server-using-azure-data-studio/

首先,下載 Azure Data Studiohttps://learn.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver16&tabs=redhat-install%2Credhat-uninstall

打開後會要求要連線至遠端伺服器,這裡要輸入伺服器的 URI 和使用者名稱、密碼。記得是輸入伺服器的。

並且推薦一個好用的 extension(話說這界面跟功能和 VS Code 真的超像的):SQL Server Import

接著對你要匯入資料表的資料庫點擊右鍵,選擇 Import wizard

你會看到以下畫面,前面都可以不動,但是要匯入的文件要記得點選,基本上 csv 跟 json 都可以。

我的資料是測試資料 test.csv

IDDATEVAL
02022052268.2
12022052350.3
22023050377.9


這裡可以更改欄位名稱和資料型態之類的設定。



建立索引

接著我們還要做一個情感搜尋(cognitive search)的服務。

老樣子,取名、設定地區… 等等的設定必須完成。

完成之後,從上方的 Import data 選項那邊匯入資料。



透過 Python 進行搜尋

首先,我們自然需要安裝 azure 套件。

pip3 install azure-search-documents
import os
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient

index_name = "<YOUR_INDEX>"# Get the service endpoint and API key from the environment
endpoint = "https://<YOUR_SEARCH>.search.windows.net"
key = "<YOUR_KEY>"# Create a client
credential = AzureKeyCredential(key)

search_client = SearchClient(
    endpoint=endpoint,
    index_name=index_name,
    credential=credential,
)

results = search_client.search(search_text="<YOUR_QUERY>")

for result in results:
    print(result)


這份程式是可以正常運作的,最困難的部分應該是要把那些 key 啊、endpoint 啊給填寫好…… Azure 在這方面是真的看起來頗複雜。

大家可以試著找找看對應的資料究竟藏在 Azure 的哪裡,我實在很難詳細地全部列出來,更別提涉及組織隱私的部分我還必須打碼…… 安全起見還是不放圖了,不然哪裡漏遮了洩漏公司金鑰什麼的很麻煩的。

如果真的找不到位置,就留言讓我知道,我會想辦法再描述地更清楚點的。不過基本上只要仔細地找跟閱讀官方文件,應該大部分欄位都找得出來。我就是這樣慢慢找出來的。


References


Read More

Leave a Reply