雅虎香港 搜尋

搜尋結果

  1. 2024年3月7日 · 一、資料清理. 二、如何切割文本. 三、如何搜尋. 四、LLM 生成品質. 快速掌握 LLM 應用全局觀. 了「長上下文 LLM」(Long-Context LLM),還需要 RAG 嗎? RAG(Retrieval-Augmented Generation,檢索增強生成)無疑是當今開發大型語言模型(LLM)產品時,不可或缺的技術。 由於可以確保 LLM 生成的真實性,在企業 AI 應用與搜尋場景相當受到重視。 為此,我也試著實作一個簡單的 RAG 應用。 多年累積下來,我的 Apple Notes 已經 7000 多則筆記,搜尋愈來愈不準確,常在寫新筆記時想參考舊筆記,卻怎麼也找不到。

  2. 2024年2月26日 · RAG 概念是由自然語言處理科學家 Patrick Lewis 等學者在 2020 年發表的論文 2 中所提出。 這項技術簡而言之,就是在向 LLMs 提供用戶的提示詞(prompt)之前,會先從外部的資料庫「檢索」相關資料,再將這些相關資料連同原本的提示詞提供給 LLMs 參考並「生成」回覆。 IBM 的語言技術總監 Luis Lastras 用開書考試(open-book)跟闔書考試來類比 RAG 跟模型微調的差異:「使用 RAG 系統時,你是要求模型去檢索書的內容(資料庫),而不是光依憑(模型微調)的記憶來回答問題。 」 3. 而 RAG 所使用並非傳統的資料庫,而是所謂的向量資料庫(vector database)。

  3. 2024年1月29日 · 沒經驗如何證明有能力?從作品集和部落格開始 學了要怎麼用的下一題,便是:沒有相關經驗,怎麼證明自己有能力?去找工作會有人要嗎?首先,要有「沒經驗是合理的」這個健康的心態。市場上,一定同時存在需要有經驗、與不需要太多經驗兩種類型的職缺。

    • 什麼是 Leetcode?
    • Leetcode常見問題類型分析
    • 提到演算法
    • 誰需要刷leetcode
    • 個人背景
    • 我會怎麼寫?
    • 重新來一遍,會如何分析 Two Sum
    • LeetCode 如何測量效率
    • Two Sum 這題該怎麼看待
    • 題外話

    LeetCode是一個專為程式設計師提供線上程式練習題的平台。它提供了一系列的挑戰題目和面試問題,涵蓋各種程式語言和電腦科學主題,如數據結構、演算法、設計模式等,並且每一個問題都附有詳細的解說,使得用戶能夠進一步了解如何解決問題。 工程師本身的起薪高,容易吸引到大量的人才投入。當好的職缺出現在求職市場時,眾多求職者將湧入其中爭取面試機會,企業使用履歷進行篩選之外,會考驗應徵者的基本開發能力以及專案經歷。前者常見的測試方式為白板題與線上題庫測驗;後者則看求職者的作品集來了解。而 LeetCode便是常見了解題目的手段,其記錄各式各樣的題目好讓求職者有個底。

    LeetCode 的題庫內容有: 1. Algorithm 2. Database 3. Shell 4. Concurrency 最常見的以演算法為主,這次的系列將著重於此。 說穿了,刷 LeetCode 好比學生時代刷題庫,目的是熟悉題型好應對各式各樣的基本題與變形題。目的只有一個,面試中遇到的技術問題可以順利通過。 在LeetCode上,您可以找到各種程式設計問題,涵蓋許多數據結構和演算法的重要概念。這些問題可以大致分為以下幾個類型: 1. 陣列和字串:這些是最基本的問題類型,通常需要操作和管理數據集合。範例包括找出陣列中的最大值、找出字串的子字串、反轉字串等。 2. 鏈結串列:這類問題通常涉及到節點的添加、刪除和尋找,或是反轉鏈結串列等操作。 3. 堆疊和佇列:這些問題通常涉及到堆疊...

    自然而然會連結到資料結構。深入來看,演算法是基於不同類型的資料結構開發出來的,即使是不同的資料結構,基本的 CRUD 功能是必要的,而演算法便是思索如何改善 CRUD 的速度。因此,往後在工作上面對不同的需求時,使用較符合需求的資料結構,再搭配適合該結構的演算法,便能有效提升計算速度。 演算法對一個工程師的意義?如何提升實力?

    其實刷 LeetCode 的需求,往往有幾種背景需要練習: 1. 學習過大學資料結構與演算法課程的學生。 2. 想要進入大公司的求職者。 3. 想要學習新語言特性的學習者。 題庫刷得再多也要記得,專案的能力也要一併培養。刷很多題庫卻沒有規劃專案的能力,往往是致命的,因為題庫的能力可以藉由反覆練習獲得,規劃專案的能力卻不太能藉由反覆練習取得,因此不少資深職缺會希望求職者擁有好的專案經驗。

    我不是大專院校資訊相關科系出身,自然沒有接觸過演算法與資料結構。學習過程以網頁開發為起點,學習 HTML、CSS、JavaScript,後續在公司的專案上接觸到 Java 與 C,整個過程由簡入難。 說實在的,沒有接觸到靜態語言前,覺得全世界都用 JS 開發是件多美好的事情。隨著經驗的累積後,慢慢了解每種語言因為獨特的能力而有存在的必要性。 1. 學習 Java 才瞭解靜態語言與物件導向的美。 2. 學習 C 才了解 JS 好用的內建函式,不一定是效能的最佳選擇,以及 By Value & By Reference 的由來。

    順序是這樣的: 1. 介紹 LeetCode 與一些基本刷題知識 2. 介紹資料結構的特性。 3. 列入在 LeetCode Tag 內的資料結構優先討論。 4. 嘗試用 JS、Java、C 各解一次,目的是增進三種語言的熟練度。 5. 演算法用來輔助資料結構。 因為我最熟悉的語言是 JS,所以相關的術語概念將以 JS 為主。

    首先要仔細閱讀已知的資訊,除了閱讀題目本身的描述外,點擊 Related Topics 後會看到 Array & Hash Table。對於菜雞來說,關於如何操作 Array 有個基本的概念,但是 Hash Table 就不太理解,於是找尋 Hash Table 的相關資訊,大致上有概念後,會陷入一個窘境,如何實作? 想了 20 分鐘後仍然沒頭緒,直接找答案。了解 Hash 除了常用於密碼學上,也可以應用在其他情境。在參考解答後寫了 JS 的版本: 說實在的,看答案後重新寫出來並不可恥,重點是學習這個問題背後要測試的技術是什麼,這邊只使用一次 for loop,每次進行判斷與製作 Hash Table,所以可以有效地壓縮搜尋時間。 轉職工程師不只要刷 leetcode,16 週進度班帶你半年...

    在我還是個剛轉職成功,沒有實際接觸過複雜專案的菜雞時期,面對新功能的開發,心態上保持著 先求有再求好,寫出許許多多用了不同內建函式、自訂函式的程式碼。新功能當然是順利開發成功,為此感到十分開心。這時候的我,對於能完成新功能開發的自己,感到十分得意。 工作經驗增加後,有機會碰到公司內較複雜的專案,藉此打開我的眼界,程式碼的部分沒有毫無章法的寫法,反倒是有一定規律的做法(現在的我知道這是 Design Pattern),當時我負責接觸的部分是效能優化的部分,這時候才感覺到沒有思考每種資料結構特性,胡亂使用順眼的函式執行,是一件多麽可怕的事情。 回憶結束。 關於程式碼的效率,可以從兩個角度來思考: 1. 執行速度可以多快? 2. 執行時期記憶體使用量有多少? 新手工程師如何提升「程式碼品質」?程式...

    暴力解

    時間複雜度的部分,第一個迴圈,陣列內每一個項目都要被執行一遍,所以執行次數是 nums.length,在分析時習慣用 N 表達。針對陣列內每一個項目,會需要第二個迴圈,執行次數是 nums.length – 1,分析用 N-1 表達。 因此這題的時間複雜度是: 空間複雜度方面,沒有額外宣告任何變數。 因此,暴力解在執行時間方面會是 O(N^2),記憶體方面幾乎沒有大負擔。

    使用 Hash Table

    時間複雜度的部分,僅僅只有一個迴圈,執行次數是 nums.length。 因此這題的時間複雜度是:O(N)。 空間複雜度方面,額外宣告 Hash Table,隨著 N 的數量增長,Hash Table 內的資料量將跟著成長。 因此,Hash Table 在執行時間方面會是 O(N),記憶體方面則有負擔。

    這題嘗試用不同語言撰寫,有趣的地方在於,我直覺認為靜態語言就是比動態語言快速,殊不知 C# 賞我一巴掌,而記憶體的使用方面,Java 與 C# 也賞我兩巴賞。這邊有幾點可以推論: 1. 這題的寫法,在記憶體的存取方面,對於 Java 與 C# 有比較大的負擔。 2. LeetCode 官方的模擬環境,與我認知的不太一樣。 3. Golang 出人意料的快速,怪不得 Google 自誇是 21 世紀的 C 語言。 就我個人經驗而言,撰寫 JS 與 Java 的時候幾乎沒在管記憶體,追求的只有更高的效率。直到接觸用 C 開發的機器,被 free 給嚇到,給我一個機會省思過度宣告變數的好壞。

    • 非同步溝通必定可以節省大家的時間。非同步溝通的一大好處是不必把許多人集合在一起開會,或是減少一部分會議的時間,例如將討論事項寫成文件讓參與者在線上各自發表意見,最後再以同步溝通方式做出決策;又或者當你要與編輯討論內容行銷的文章,會先將文章以 Google Docs 分享,讓其他人發表評論或是參與編輯,最後可能連同步溝通都不需要,直接把稿子發出去;更常見的可能是將各種討論變成 Slack 上的對話串。
    • 「文件化」很棒,多寫文件就對了。「文件化」對現代工作的幫助非常大。良好的文件不僅可以保留紀錄,而且只要寫下來,其他人也看得到(或是聽得見,這裡的「文件」也可以是影音紀錄)。
    • 非同步溝通比同步溝通還多就是好棒棒。過去十幾年來大力提倡非同步溝通的公司之一是 37signals,兩位創辦人 Jason Fried 與 David Heinemeier Hansson(DHH)談論過無數次相關議題,由於他們的員工分散世界各地,長期採取遠距工作,非同步溝通對他們來說是標準的溝通模式。
    • 非同步溝通是最完整、詳盡的。前面提到 Stripe 前員工認為「長篇文章是一種『功能』,會迫使你關注細節」,因為文件可以寫得很詳細、面面俱到(一篇不夠,你可以寫兩篇),而且好的文件理應結構扎實、好閱讀,這會讓人有一種錯覺,彷彿大量、詳盡的文件可以達到最完整的溝通。
  4. 2023年6月4日 · 1. 設計、開發和實施生成式AI模型. 設計階段: 確定最佳算法來實現預期結果,要求對各種生成式AI算法及其優缺點深入理解。 開發階段: 包括用現有數據訓練模型並進行微調以提升性能。 實施階段: 將AI模型整合到現有系統中或圍繞模型設計新系統,需要強大的軟件開發理解能力。 2. 調整現有生成式AI模型. 調整和精煉預先存在的模型以增強性能、適應新數據或滿足特定項目需求。 分析模型行為,識別表現不佳或產生意外結果的領域。 可能涉及調整超參數、修改模型架構或豐富訓練數據集。 3.

  5. 2023年5月10日 · 步驟一:訪問 Google Colab. 首先,您需要一個 Google 帳戶。. 如果您已經 Google 帳戶,只需將瀏覽器導航到 Google Colab 的網站: https://colab.research.google.com/. 步驟二:創建新的筆記本. 在 Google Colab 的主頁面,您可以選擇“新建筆記本”或者打開已經存在的筆記本 ...

  1. 其他人也搜尋了