跳到主要內容

發表文章

目前顯示的是有「Azure Cognitive Search」標籤的文章

【Azure OpenAI】o1 模型與 2024-09-01-preview API

距離上篇在 Early Access Playground 試用 o1 模型後又過了兩週,今天終於等到 API 開放使用啦!本篇將紀錄如何使用 Python SDK 存取 o1 模型。 系列文章 【Azure OpenAI】快速試用 o1 模型 模型佈署 在先前開放的 Early Access Playground 中使用 o1 是不需要另外佈署模型的,不過回到使用 API 來存取 o1 模型,就需要像之前的模型一樣先進行佈署才能使用,相信大家都很熟悉了。 使用 Python SDK 一樣使用熟悉的 openai 套件: 2024-09-01-preview 初始化的方式與先前模型都一樣,需要注意的是 o1 模型目前只能使用最新的 API 版本 2024-09-01-preview 來訪問。 Chat Completions 將 model 填入 o1-preview ,或是你的模型佈署名稱, messages 也一樣是歷史對話堆疊的 List。 回應如下: 查看 Token 使用量 內建 Chain of Thought 的 o1 比起過往的模型會消耗較多的 Token,因此我們特別把 Token 使用量拉出來看。 回應如下: 其中 prompt_tokens 、 completion_tokens 、 total_tokens 在先前的 API 就已經存在了,分別代表Token 的 Input、Output 與總使用量,而在新的 completion_tokens_details 中可以看到  reasoning_tokens 使用了 320 個 Tokens,居然佔了總輸出 Token 的 80% 以上! 控制 Token 成本 已往我們可以使用  max_tokens 參數來控制 Token 的用量,但在 o1 模型中棄用了 max_tokens ,取而代之的是使用  max_completion_tokens 參數,來看看這段程式碼: 回應如下: 沒東西?那再看一次 Token 量。 回應如下: Token 居然是有被使用的! 這表示 max_completion_tokens 並不像過往使用  max_tokens 這麼簡單,先前在回應遇到...

【Bicep】自動還要更自動的 AOAI On Your Data

 Azure OpenAI 上的 On Your Data 是微軟最早推出的 RAG 架構,沒有太多複雜的 Chunking 手法,甚至直接不處理文件中的圖文夾雜問題,有的就是基本的 Embedding 與向量搜尋機制,主打的是一個快速串接流程。 On Your Data 藉由 Azure OpenAI Studio 介面提供使用者快速完成所有服務的串接,而背後主要由兩個動作組成,On Your Data 首先會使用 Azure OpenAI 提供的 Ingestion Jobs API 建立 Azure AI Search、Azure OpenAI 與 Storage Account 之間的串聯設定,接著再使用存放於 GitHub 上的 Sample Chat App with AOAI 做為 App Service 的原始碼來源來建立一個範例網頁。 儘管 Ingestion Jobs API 已經包裝了大部份的流程,但這兩項主要動作還是需要人為點擊來觸發。本篇將紀錄如何使用 Bicep 建立 On Your Data 流程與其範例網頁,以達到真正的自動佈署。 完整的 Bicep 程式碼已經整理在我的 GitHub 上,歡迎參考以下連結。 相關連結: https://github.com/charliewei0716/azure-openai-on-your-data-with-bicep 系列文章 【Bicep】從開發到佈署的工作流程 【Bicep】使用佈署指令擴充 Bicep 功能 【Bicep】自動還要更自動的 AOAI On Your Data(本篇) 建立儲存體帳戶 首先我們需要一個儲存體帳戶與 Blob 容器來存放 RAG 使用的原始文件。 建立 Azure OpenAI 最重要的 Azure OpenAI 資源,同時佈署目前最新的 gpt-4o 與 text-embedding-ada-002 模型。 啟用的受控識別會在稍後賦予對應權限,另外這邊需要注意使用的訂閱在該地區的 Azure OpenAI 額度。 建立 AI Search 選擇基本 Basic 等級的 AI Search,一樣也啟用受控識別。 服務間的授權 到此我們建立的儲存體帳戶、Azure OpenAI 與 AI Search ...

【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行向量搜尋(下)

在上一篇中,我們已經建立了一個可以儲存向量的 Index,並寫入了包含向量欄位在內的 108 筆資料,還沒看過的可以先到下方連結查看喔! 接續上篇,我們會在這個 Index 上開始執行向量搜尋,交叉使用先前設定好的兩種演算法,最後會結合全文檢索進行混和搜尋。 完整程式碼於文末 GitHub 連結提供! 相關連結: 【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行全文檢索 相關連結: 【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行向量搜尋(上) 相關連結: https://github.com/Azure/cognitive-search-vector-pr/tree/main/demo-python 必要條件 具有與上篇相同設定的 Cognitive Search Index Cognitive Search 的官方 Python SDK:azure-search-documents 的  11.4.0b11  版 連線 Index 首先必須要連線到在上篇建立好的 Index: 使用 SearchClient 類與現有的 Index 建立連線,這邊要注意 index_name 是要建立連線的 Index 名稱 ,後面都會使用到這個物件,不過文章中就不會再重複這段程式碼了。 單一欄位的純向量搜尋 在執行向量搜尋時,一般都需要先將要搜尋的語句轉換為向量,後續才能與其他向量計算相似度,但每次執行都需要多這一步確實有點麻煩,常見的解法也是把流程包成函數來重複使用。 但在 Cognitive Search 中,非常貼心的幫我們把這一步處理掉了,現在我們可以直接把查詢問句丟進呼叫的接口,而不再是先轉換成向量,以下程式碼會更清楚這個流程: 原因是我們使用  VectorizableTextQuery 這個類別,背後他會自己去使用我們在上篇設定給 Index 的 Azure OpenAI 連線資訊來轉換向量,真的是非常方便,但因為還是使用我們自己的 Azure OpenAI 資源,所以轉換費用還是逃不了的😓 VectorizableTextQuery 代表的是一組向量搜尋的設定, k=3 表示回傳分數前三高的結果, fields="contentVect...

【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行向量搜尋(上)

認知搜尋 Azure Cognitive Search,在需要限縮 ChatGPT 回答內容的對話機器人情境中,Cognitive Search 可以作為其中最關鍵的「知識庫」角色,其 PaaS 服務的方便性加上後期與 Azure OpenAI 的整合,可說是 2023 年最受益於 ChatGPT 的 Azure 服務之一。 因應 Cognitive Search 在 10 月份對向量搜尋的最新版更新,本篇參考以下 GitHub 範例程式實作與心得分享;接續前篇由快速入門 Cognitive Search 的角度出發,一樣會使用 Python SDK 建立 Cognitive Search 的 Index ,而測試資料的向量會由 Azure OpenAI 的 Embedding API 產生後,與資料一同存入 Index 中,最後會在 Index 中進行向量搜尋。 完整程式碼於文末 GitHub 連結提供! 相關連結: https://github.com/Azure/cognitive-search-vector-pr/tree/main/demo-python 必要條件 在任何區域或任何層級上的認知搜尋服務 Azure Cognitive Search,記得先複製好金鑰備用 Cognitive Search 的官方 Python SDK:azure-search-documents 的  11.4.0b11  版 以上項目如果不知道如何進行,建議可由下方連結的前文開始閱讀,參考如何建立需要的服務與環境。 相關連結: 【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行全文檢索 測試資料 繼續借用以下官方放在 GitHub 上的範例資料,資料中包含了 108 項 Azure 服務的名稱與簡介,並存放於 Json 格式中。 相關連結: https://github.com/Azure/cognitive-search-vector-pr/blob/main/demo-python/data/text-sample.json 建立 Index 我們預計會對測試資料中的 title 與 content 兩欄位各自產生向量,所以在這次建立的 Index 中會新增 titleVector 與 contentVecto...

【Azure Cognitive Search】使用 Python SDK 在認知搜尋中進行全文檢索

認知搜尋 Azure Cognitive Search,在需要限縮 ChatGPT  回答內容的對話機器人情境中,Cognitive Search 可以作為其中最關鍵的「知識庫」角色,其 PaaS 服務的方便性加上後期與 Azure OpenAI 的整合,可說是 2023 年最受益於 ChatGPT 的 Azure 服務之一。 此篇會由快速入門 Cognitive Search 的角度出發,使用 Python SDK 建立 Cognitive Search 的 Index ,並在其中載入測試資料與進行全文檢索。 建立服務 由 Portal 建立 Cognitive Search 服務是最簡單快速的,基本上在建立時只需要決定「定價層」、「復本數」與「分割區數量」。 選擇建立免費層的 Cognitive Search 這邊我們先從最簡單的免費層開始就好,在這個層級中「復本數」與「分割區數量」都被限制在 1 份,所以只需要無腦點建立就可以囉。 免費層無法調動設定 看到預估成本是 0 元就莫名的開心.. API 金鑰 建立完成後進入 Cognitive Search 畫面左邊的「金鑰」頁籤,先複製下來備用。 查看 API 金鑰 測試資料 先借用以下官方放在 GitHub 上的範例資料,資料中包含了 108 項 Azure 服務的名稱與簡介,並存放於 Json 格式中。 相關連結: https://github.com/Azure/cognitive-search-vector-pr/blob/main/demo-python/data/text-sample.json Python 套件安裝 Cognitive Search 的官方 Python SDK,使用以下指令安裝: 建立 Index 首先透過以下這段程式,使用剛剛暫存下來的金鑰連線到 Cognitive Search,記得將 endpoint 與 credential 替換成自己的。 在將測試資料放入 Cognitive Search 前,必須先建立 Index,這邊可以將 Index 想像成資料庫中的表,與在資料庫中建立表的流程一下,需要先定義表的欄位與其格式,在 Cognitive Search 中使用 Field 來設定這些。 配合測試資料中的 4 個欄位:id、tit...