比較使用 Native AOT 與標準方式的差異

Native AOT 是一種令人興奮的發行 .NET 應用程式的方法,相較於標準的 JIT 編譯方式,Native AOT 可以讓應用程式啟動更快、使用更少的記憶體和更小的磁碟大小,但是 Native AOT 究竟能讓啟動變多快、記憶體使用量減少多少、磁碟大小縮小多少呢,數據會說話,就讓我們來看看官方比較使用 Native AOT 與標準方式的差異。

使用 NSG 設定 Azure VM 只允許國內的 IP 訪問

前陣子以為自己玩壞了架在 Azure VM 的 AdGuard Home,經過調查之後發現,原來是被來自境外的黑客進行 DDoS 攻擊,雖然小小的 VM 承受得住每秒百來次的查詢請求,但是硬碟空間撐不住每次查詢所紀錄下的 Query Log,因此造成 VM 極度不穩。在不想額外花錢的情況下,這篇文章提供一種解決方案,讓有需要的人可以參考看看。

在 Azure 上開 Linux VM 架設 AdGuard

最近不小心把之前架設的 AdGuard 玩壞了,由於上次沒有留下筆記,這次把相關的架設筆記留下來,不然未來某天又玩壞了,還要再花點時間找資料。

在 ASP.NET Web API 使用 IAsyncEnumerable 並串流至 JavaScript - PART 2

前陣子在在 ASP.NET Web API 使用 IAsyncEnumerable 並串流至 JavaScript分享到使用 IAsyncEnumerable<T> 來處理串流資料,但是當時的範例的回傳值是 JSON 物件,這造成前端在解析資料時,必須處理 IAsyncEnumerable<T> 被 JSON 序列化後的格式,這讓前端不得不做一些額外處理。這篇將重新思考這段處理方式,在針對「模擬聊天情境,即時的一字字依序輸出在網頁上」這個目標下,重新設計 API 的回傳方式,讓前端可以更容易的處理串流資料。

實現你自己的 Chat Copilot

經歷過 ChatGPT 席捲式的熱潮後,許多企業紛紛開始想要打造自己的 AI 對話功能,可能是直接使用 API 的方式開發聊天機器人,或是直接選用廠商提供的解決方案。在 GitHub 上,也有許多開放原始碼專案可以提供我們快速建立相關的應用,例如 BetterChatGPT 就是按造 ChatGPT 的使用介面所打造。在 Microsoft 官方的版本庫中,也有 Chat Copilot 專案,提供了我們參考的樣板。

關於 Recursion 遞迴函數的深度

聲明:此篇文章使用 AI 工具所自動產生,請自行判斷文章內容的正確性。

在 ASP.NET Web API 使用 IAsyncEnumerable 並串流至 JavaScript

在玩 ChatGPT 的時候,對於如何將聊天機器人的回應,即時的一字字依序輸出在網頁上,這樣的互動體驗非常有沉浸感,讓人真的有在和 AI 對話的感覺。當我們想要使用 ASP.NET Core WebAPI 以及 JavaScript 來呈現這樣的體驗時,如何讓後端 API 串流的輸出內容,並讓 JavaScript 在呼叫該 API 後能依序接受這樣的資料流,這時候問題就來了,兩者之間要如何串流資料呢?這篇提供一種處理方法。

上傳 Container Image 到 Azure Container Registry

有些情境下,特別是在比較封閉的企業內部網路,可能無法直接從 Docker Hub 上取得 Container Image,不過如果你有 Azure Container Registry (ACR) 的話,且網路架構可以存取的時候,就可以透過 Azure CLI 來將 Container Image 上傳到 ACR 中,藉此管理企業內會用到的 Container Image。

使用 C# 和 OpenAI Embedding 搭配 RediSearch 查詢向量資料庫

在開發 OpenAI 的 Embedding 相關的功能時,勢必會需要使用到向量資料庫來儲存向量資料,常見的教學會使用 Pinecone 這個 SaaS 的向量資料庫,不過在企業內的環境,使用 Redis 搭配 RediSearch 模組來建構解決方法,是一個不錯的選擇,這篇來實作這個解決方案。

使用 ML.NET 將文字轉成向量

現在越來越多場景需要藉助向量分析,最常見的情境莫過於將文字向量化之後,用於搜尋、聚類分析、建議等等,這篇要介紹如何使用 ML.NET 將文字轉成向量。