office 2010 the movie : 很有趣的影片 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 作者: David - 11月 25, 2009 office 2010 the movie : 很有趣的影片,還高畫質咧...不過外國人的幽默有時候還真不好懂... 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言 余老爹寫道… office2010做得好像電影的預告片一樣耶~~哈 David寫道… 只是笑話很難懂^^
使用Qdrant向量資料庫實作語意相似度比對 作者: DD - 4月 22, 2024 什麼是向量資料庫? 在許多的AI實作當中,都有向量資料庫的使用需求。例如RAG(檢索增強生成)、或是資料的相關性比對、相似性搜尋…等,這些應用情境中,我們都會用到向量資料庫。 向量資料庫主要的任務,當然就是存儲和查詢向量數據。被儲存的向量數據通常是高維度的資料,以陣列(集合)的形式呈現。 例如,OpenAI就有提供一組Embedding API,讓我們可以把文字給向量化。你可以透過該 API,把一句話(一段文字)轉換成向量數據,類似底下這樣: OpenAI 的這組 Embedding API,在預設狀況下,會把資料轉成 1536 維度的向量數據,其背後的行為是把文字送給一個訓練好的模型,透過該模型跑出這組向量數據,再回傳給用戶。 然而,把一段文字給向量化的目的是什麼呢? 當我們把文字做了這種轉換後,在 1536 維度的座標空間(向量數據)中,愈相似的文字,透過Embedding API會得到距離愈接近的座標點,藉此,我們得以迅速的判斷兩段文字在語意上的相似性。 而向量資料庫中所謂的查詢功能,主要就是向量的檢索,像是『近鄰搜索(Nearest Neighbor Search)』,當用戶或應用程式提交一個向量查詢時,向量資料庫會幫我們找出資料庫中,與之最相似(接近)的向量座標點。 因此,開發人員只需要透過 Embedding API,把文字轉成向量,再把轉換好的向量座標值,儲存到向量資料庫之中,未來就可以透過向量資料庫來查詢相似(接近)的文字。 關於這個部分,如果讀者有興趣,前陣子有段網路上的影片把多維度向量資料庫的概念介紹的蠻清楚的: https://www.youtube.com/watch?v=W_ZUUDJsUtA https://www.youtube.com/watch?v=ct20Kv8yn0U 為何需要? 向量資料庫最實務上的應用,就是找到類似的特徵值。 例如,當我們把人臉的特徵值以向量資料的形式儲存到向量資料庫中之後,我們就可以透過資料庫本身提供的搜尋功能,快速地尋找出相似的人臉,這也是許多AI應用實現的基礎。 我們底下的程式碼範例,則是找出最接近的問題。(呃…什麼意思?🤔 請往下繼續看) 我們在建立對談機器人時候,常常需要讓機器人回答用戶的問題。這時,我們會讓用戶輸入問句,然後透過 Embedding API Read more »
專業的價值... 作者: David - 7月 06, 2012 每次,我去修車的時候... 師傅說:先生你這車開那麼久了,這樣壞很正常拉,你要不要換台新的? 你不知道零件會老化嗎??? 我:是是是...那,這零件換掉要多少錢??? 師傅:喔...便宜啦,大概就XX萬就可以了... 每次,我去客戶那邊... 我說:大哥,這軟體我們用那麼多年了,總是會需要調整維護一下的... 客戶:是你們一開始沒有設計好吧? 我說:不是啦,技術總是會更新的,而且現在有一些新的需求...恩,大概,就收你XX萬就好了... 客戶:什麼? 你們當初沒設計好的東西,還想要加收錢??? ------------------------------------------------------------------------- 我相信上面這樣的情況你一定和我一樣常碰到,我不知道有多少次,被修車廠唬的一愣一愣的,但我總是心甘情願地掏錢出來(好吧,我有點心不甘情不願,但我沒得選擇)。 有一次,我的動力方向盤打起來卡卡的,好像快不能正常轉向了,所以我立刻把車開到保養廠,師傅熱情的出來迎接我,問我車哪裡有問題,我描述狀況,接著師傅就把車開走了。剛好這時候我接到一通電話,我在講電話的同時,師傅把車弄好了(不到五分鐘),跟我說,這個動力方向盤的油沒了,要補充,打折後收我一千多塊,我趕緊謝謝他。 離廠前,師傅把剩下的動力方向盤油給我(很有良心),說:這是剩下的。我還沒反應過來,他就說:老闆,慢走,開車小心,注意安全。(好貼心的師傅) 我看了一下,那罐動力方向盤油只加了1/5,剩下4/5我要怎麼辦?放後車廂? 等他漏了再加? 我不知道!!! 他為何不乾脆 免費 幫我加一下呢? 像這樣類似的例子我碰過非常非常多(因為我的車老了,很多問題) 也有很多次,我明顯發現修車廠的人在唬爛我,但我換過很多家、原廠、副廠、出去玩的時候在風景區的修車廠(這更狠,擺明了就是要坑你,他清楚知道只會跟你做一次生意),幾乎都一樣,我常常有被唬弄的感覺。我想要跟著車看他怎麼修,修車廠的師傅總是說:『老闆,您可以到休息室等一下,不會那麼快喔!!!』 對照先前我在軟體社群看到有位朋友寫的一篇 文章 ,提到了軟體工程師的無奈和心酸,我其實很想說,軟體工程師大部分真的都太古意了!!!! 從商人的角度來看,每一次免費的服務,其 Read more »
VS Code Terminal 的編碼問題 作者: DD - 5月 05, 2024 昨天上課的時候,碰到詭異的事件。 我想Demo一個寫好了的範例,主要是 semantic kernel 加持下的 agent 開發,我把code run起來,開始跟agent對話: 不對,我覺得它今天有點胡言亂語。 我第一個檢查的是 GPT Model,為我知道 semantic kernel 必須使用GPT-4而不是 3.5,看了一下程式碼: var OpenAIModel = "gpt-4-turbo-preview" ; 沒錯啊,gpt-4-turbo-preview,這是 OpenAI 既有的模型,不該有問題才對。我執行的環境是 VS Code,試了半天,找不出程式碼有任何問題。只好切換到 Windows 的 Terminal,怪了,沒問題: 上面這樣的對談才是正確的結果啊! 為何在 VS Code的 Terminal 中不行呢? 請 Copilot 幫我寫了段 code 測試: 果然是 charset 的問題。 先找解決方案,測試了一下,在 vs code 當中預設的 code page 是 473,改為 950 或 65001結果一樣,沒效。 既然從外界無法解決,那就調整程式碼了。試著在指令碼中,將輸入輸出改為通用的 Unicode: //將輸入出入改為 UTF-8 Console . InputEncoding = System . Text . Encoding . Unicode ; Console . OutputEncoding = System . Text . Encoding . Unicode ; 觀察執行的結果,搞定: 除了上面的測試,Agent對談的時候也恢復正常了。 後記: 這個問題有一定的獨特性,因為我的環境是由英文版的作業系統轉為中文版,這個狀況才會發生,如果你在純中文版環境上安裝 VS Code,則根本不會出現這個問題。 儘管少見,但一開始的現象讓人摸不著頭緒,還是寫個紀錄留給未來的自己和大家參考。 Read more »
讓 LINE Bot 對談機器人顯示 "Loading..." 動畫 作者: DD - 4月 26, 2024 LINE 在日前推出了一個功能,恰恰好適合現在許多開發人員正在設計的 - 搭配LLM(大型語言模型AI) - 的 AI 對談機器人。 這個功能 ‘Display Loading Animation’ 讓開發人員可以在LINE Bot回覆訊息前,先出現個幾秒底下這樣的圖示: 這個圖示可以設定最長顯示時間,從 5~ 60秒 之間的5的倍數均可,時間到了,會自動消失。而即便時間還沒到,如果LINE Bot(不是用戶)後面有訊息發送,動畫也會自動消失。 要讓你的 LINE Bot 出現這樣的動畫非常簡單,我們的 LineBotSDK 也在第一時間更新了,使用我們 SDK 的 C# 開發人員,現在可將 LineBotSDK更新到最新版,即可輕鬆的透過底下的程式碼,來顯示出這樣的 Loading 動畫: using isRock . LineBot ; // create bot instance var bot = new Bot ( channelAccessToken ) ; // show ladding animation var ret = bot . DisplayLoadingAnimation ( chatId , 15 ) ; // display the result Console . Write ( ret ) ; 特別是對於現在需要串接LLM(大語言模型)的Chat Bot來說,呼叫LLM的API,回應時間往往都比較長,因此,我們在 Reply 用戶的訊息前,可以先讓用戶看到這樣的,然後再呼叫LLM相關的API(像是OpenAI API),如此一來,假設 LLM API 回覆的時間較長,用戶也比較不會有空等不耐煩的感覺。 而且這個指令執行之後,如果有 Push/Reply 的訊息發送,Loading 圖示就會自動消失,讓整個用戶的體驗不至於有突兀感。 適當的使用,會讓你的 Chat Bot 有更生動擬真的感覺,有需要的朋友可以立刻試試看。 Enjoy it. 😊 Read more »
在Windows Phone (WP8) 中使用SignalR 作者: David - 12月 29, 2013 ASP.NET SignalR【幾乎】讓我想丟掉Push Notification,你就知道它把訊息傳遞這件事情弄得有多簡單方便了。在這一篇我說明一下如何在WP8中使用ASP.NET SignalR,同時也稍微解釋一下 這兩天 寫的Code。 請回憶一下我們昨天的情境: 我們在伺服器端透過ASP.NET以SignalR寫了一組服務,主要是用來做聊天室(基本上是範例啦)的功能,包含了接收用戶端傳來的訊息(姓名、聊天文字),以及把訊息主動推送給用戶端(姓名、聊天文字),這樣的功能。 而用戶端就很單純的呼叫或傾聽這個服務。呼叫Send方法可以把用戶端使用者想要說的訊息傳給伺服器端,而伺服器端收到,則執行broadcastMessage這個動態方法,把訊息推送給所有傾聽的用戶端。 透過ASP.NET SignalR要寫這個服務端的機制,很簡單。 首先,建立一個Empty WebForm專案(當然你用MVC也行,之所以用WebForm,原因在 這裡 ),接著透過NuGet引用ASP.NET SignalR: 然後在專案中Add New Item,請找到Hub Class(VS2012 Update 4或VS2013): 建立出來的Class如下: public class MyHub1 : Hub { public void Hello() { Clients.All.hello(); } } 該類別繼承自Hub,這個Hub就是SignalR服務的Bass Class,你可以在其中建立自己的Method,如上圖中的Hello。 我們修改此類別,建立一個聊天室中,接收用戶端傳來訊息的Method,名稱為Send, 其程式碼如下: public class MyHub1 : Hub //SignalR主要部分 { public void Send(string name, string message) //接收傳送來的訊息 { //傳送訊息到用戶端 Clients.All.broadcastMes Read more »
留言