快訊!我的新書今天開始可以在天瓏網路書店預購啦!歡迎大家前往訂購!
>>>> AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題 <<<<

Technology Research

  • 在Dify內整合LangSmith
    ,

    在Dify內整合LangSmith

    使用 LangSmith 和 Langfuse 增強 Dify 上 LLM 的可觀察性 參考文章:https://dify.ai/blog/dify-integrates-langsmith-langfuse Dify 現在支持使用 LangSmith 和 Langfuse 這兩款工具來詳細追蹤和分析 LLM 應用的數據。這些工具使得選擇合適的模型、創建有效的提示、監控應用性能、持續改進應用以及成本優化變得更加容易。 LangSmith 介紹 官方網站:https://www.langchain.com/langsmith LangSmith 的主要目的是提升 LLM 應用的可觀察性和性能,適合需要深入監控和評估模型表現的開發者。LangSmith 是由…

  • ReAct Prompting
    ,

    ReAct Prompting

    什麼是ReAct 論文網址:https://arxiv.org/abs/2210.03629 ReAct Prompting 是一種結合了推理(Reasoning)和行動(Acting)的提示策略,旨在提升語言模型的推理能力和任務處理的靈活性。這種方法特別適合於需要多步推理的情境,讓模型不僅能回答問題,還能在每個步驟中進行推理、執行動作並根據回饋來調整答案。 ReAct Prompting 的核心概念 運作流程 ReAct Prompting 的過程可以分為以下幾個步驟: ReAct Prompting 的優勢 應用場景 實際範例 假設問題是:「找出哪位科學家首次提出光速的概念,並描述他的研究貢獻。」 Step 1(推理):模型認為首先需要查詢有關「光速概念的歷史背景」。 Step 2(行動):模型查詢資料庫,得到早期研究光速的科學家名單,包括伽利略、牛頓等。 Step 3(推理):模型分析這些科學家的貢獻,並找到提出光速具體數值的第一位科學家。 Step…

  • RAPTOR – 基於樹狀結構的 RAG 方法
    ,

    RAPTOR – 基於樹狀結構的 RAG 方法

    什麼是RAPTOR 參考資料:https://www.cnblogs.com/xiaoqi/p/18060281/RAPTOR RAPTOR 是一種基於「樹狀結構」的 RAG 方法。首先,RAPTOR 將所有文本分割成小塊,並將這些塊轉化為向量,然後通過聚類這些向量形成樹狀結構的層級索引(例如,不同層級的主題群組)。在查詢時,模型可以根據這棵樹的結構,有針對性地檢索和生成答案。 RAPTOR 是基於樹狀結構的分層檢索方法,將文本片段轉換成向量並聚類形成樹狀索引。這種方法讓系統可以在樹狀結構中快速定位特定的主題或類別,並支持多層次的檢索。RAPTOR 依賴樹狀結構的索引來進行分層檢索,根據查詢在預先建立的分層索引中找到最佳匹配的層次和分支。這使得它在面對大量資訊的時候,可以快速進行全局性或細節性的檢索。 高度依賴於樹狀索引結構,這使得它能更快地找到分層的資訊,但靈活性相對較低。 這種基於樹的索引方式可以讓檢索更高效,因為系統可以快速定位到與查詢最相關的分支。這也有助於全局性查詢,特別是需要在不同主題中查找關鍵資訊的情境。樹狀結構還提供了一種自然的分層索引方法,能適應不同的查詢深度。 和Graph RAG的差異 RAPTOR 和 Graph RAG 有一些相似之處,因為它們都基於結構化的索引來組織和檢索資料,並試圖在回答查詢時提供更全面和有層次的資訊。不過,它們在具體的結構、處理流程和應用場景上仍有一些關鍵區別: 相似之處 RAPTOR 和 Graph RAG 都依賴預先建立的結構化索引,RAPTOR…

  • Retrieval Interleaved Generation (RIG)
    ,

    Retrieval Interleaved Generation (RIG)

    什麼是RIG RIG 是一種「檢索-生成交錯」的方法,強調在查詢的每一輪檢索和生成之間交替進行。例如,模型會先檢索資料來生成部分答案,再基於這個生成的內容進行下一輪檢索。這樣交替進行,逐步補充答案。 RIG 常用於需要多步驟推理的情境,模型可以通過分階段檢索、補充和生成,動態構建出全面的答案。 這種方法有助於模型在多輪次中漸進式地加深對複雜問題的理解,尤其適合多跳問題(multi-hop questions),即那些需要逐步從不同的資訊片段中推理出最終答案的問題。 參考資料:https://medium.com/@sahin.samia/retrieval-interleaved-generation-rig-using-llm-what-is-it-and-how-it-works-aa8be0e27bbc RIG 的特點 RIG 沒有固定的結構,它更像是一種逐步探索的策略,不依賴任何預先分層或社群索引,而是即時根據每輪生成的結果來進行下一輪檢索。這讓 RIG 更加靈活,但在處理大型資料集時可能會相對較慢。其資訊生成過程是動態的,每次生成部分答案後再進行新一輪檢索和生成,因此不依賴於預先準備的摘要,而是根據查詢需要來即時擴充答案。 Retrieval Interleaved Generation (RIG)範例查詢 用戶提出一個多步驟的問題: 「阿基米德是如何影響現代物理學的?」 這個問題相對複雜,因為它不僅涉及阿基米德的生平,還包括他的貢獻如何影響後來的物理學理論,需要多步驟推理來構建答案。 RIG 運作流程 最終答案示例 「阿基米德對現代物理學的影響主要體現在他的浮力原理和杠杆原理。浮力原理為伽利略對於運動的研究提供了基礎,而杠杆理論則是牛頓力學的重要基石。此外,阿基米德的研究還在流體力學方面影響了後來的科學家,進一步推動了流體動力學的發展。」

  • Graph RAG – 圖形式的檢索增強生成
    ,

    Graph RAG – 圖形式的檢索增強生成

    論文網址: https://arxiv.org/abs/2404.16130 Graph RAG 介紹 一種新的 Graph RAG 方法,透過建立基於圖形的文本索引,提升對全球性問題的回答品質。這種方法能夠有效地處理大規模文本語料庫,並且能夠擴展到用戶問題的普遍性和要索引的源文本數量。 Graph RAG 管道利用 LLM 衍生的文本圖索引進行資料處理。首先,該管道從來源文件中構建出實體知識圖,將文件中的實體與其關聯關係組織成網狀結構。接著,Graph RAG 使用 LLM 在索引建立階段進行群體預摘要,針對每個具有相似性的實體群體生成摘要,以便更快速地調用相關資訊。當查詢進來時,Graph RAG 可以在查詢時間使用這些預摘要來快速生成「全局答案」。這種方法不僅提升了答案的全面性和多樣性,還能有效降低生成回答時的 token 成本。 Graph RAG 系統的工作流程…

  • 讓LLM記憶對話的實現方式
    ,

    讓LLM記憶對話的實現方式

    讓LLM記憶對話的幾種方式 參考資料: https://www.pinecone.io/learn/series/langchain/langchain-conversational-memory/ 這些模式是以LangChain的實作為範例,實現對話記憶可以使 LLM 能夠進行連貫的對話,這對於像聊天機器人這樣的應用來說非常重要。 對話記憶的不同形式,包括 每種記憶形式都有其獨特的應用場景,例如 ConversationBufferMemory 適合簡短對話,而 ConversationSummaryMemory 適合長對話,因為它通過總結歷史對話來節省令牌使用。此外,網頁還提到了其他類型的對話記憶,如 ConversationKnowledgeGraphMemory 和 ConversationEntityMemory。 雖然需要更多的調整來決定總結什麼以及在緩衝區窗口中保持什麼,但ConversationSummaryBufferMemory確實給了我們很多靈活性,也是我們的記憶類型中唯一一個(到目前為止)允許我們記住遙遠互動和以其原始——以及信息最豐富——的形式存儲最近的互動。 ConversationBufferWindowMemory的token使用比較圖 ConversationSummaryBufferMemory的token使用比較圖 進階的記憶模式 – 實體、圖形記憶 參考資料:https://www.comet.com/site/blog/advanced-memory-in-langchain/ ConversationEntityMemory(實體記憶) 實體記憶能夠幫助 AI…

  • 使用Dify開發Agent聊天機器人
    ,

    使用Dify開發Agent聊天機器人

    什麼是Agent 參考資料:https://docs.dify.ai/zh-hans/guides/application-orchestrate/agent 智能助手(Agent Assistant),利用大語言模型的推理能力,能夠自主對複雜的人類任務進行目標規劃、任務拆解、工具調用、過程迭代,並在沒有人工干預的情況下完成任務。 在Dify創建Agent 我們可以在Studio > Agent創建一個具備Agent功能的機器人 在認識Agent之前,要先了解工具是什麼 在工作流的地方,我們可以呼叫外部的API,在那邊,呼叫的動作是我們自己在工作流程中設定如何呼叫,但是如果流程不是固定的,而會隨著使用者的回應而改變,那麼工作流就會不堪用,就要改使用Agent,由大語言模型來幫忙判斷何時該呼叫那些外部API或那些功能 在Dify裡面已經有很多預設的工具,但是很多時候如果不符合需求,我們就會需要設定自己的工具 在Dify自己創建工具 首先就是要寫一個API,關於API的格式,我在我的前一篇文章有分享過 那要如何把這個寫好的API給Dify使用呢?這時候就要大推下面這個網址 https://chatgpt.com/g/g-TYEliDU6A-actionsgpt 基本上我就把我的API的程式碼整個貼給他,叫他幫我產生一個YAML檔案,噹噹噹~就完成啦!連解釋都大致正確喔! 在這邊創建自己的工具,然後回到剛剛在Studio > Agnet創建的機器人,在工具部分增加自己的工具,LLM會根據你在YAML裡面寫的工具說明(英文)和參數說明,自動產生相對應的資料去呼叫函數,非常的聰明!但也因為這樣,工具說明和參數說明一定要認真寫,千萬不要亂寫,會影響到呼叫的成功率

  • Steve Comparison of LLMs
    ,

    Steve Comparison of LLMs

    About the author 這篇文章是由我的實習生Steve Wang所撰寫 More about Steve Wang: https://renickbell.net/students/steve-wang/doku.php?id=start Introduction Here the author performs a comparison of different LLM AI models. The goal is…

  • 了解LLM的函數調用function calling
    ,

    了解LLM的函數調用function calling

    什麼是Function calling 官方介紹文檔:https://platform.openai.com/docs/actions/introduction 中文介紹文檔:https://openai.xiniushu.com/docs/plugins/getting-started Function calling是一種技術,允許LLM根據對話內容自主選擇並調用預定義的函數。這些函數可以用來執行各種任務,例如查詢實時數據、執行計算、生成圖像等。函數調用是建立 LLM 驅動的聊天機器人或代理(agents)的重要能力,這些聊天機器人或代理需要檢索 LLM 的上下文或通過將自然語言轉換為 API 調用來與外部工具互動。 功能調用使開發者能夠創建: Function Calling可以做到那些事情 如何實現function calling 假如我們現在想要詢問某個地點的天氣,一般的LLM無法做到這件事情,因為訓練的數據集不會包括現在的即時數據。解決這個問題的方法是將LLM與外部工具結合。利用模型的Function Calling能力來確定要調用的外部函數及其參數,然後讓它返回最終的回應。 假設一位用戶向模型提出以下問題: 台北市今天的天氣如何 要實現function calling,需要在LLM的接口中註冊函數,並將這些函數的描述和使用說明一同發送給模型。模型會根據上下文智能地選擇並調用適當的函數。以下是一個簡單的實現示例: 這個範例會使用一個公共API:Weather.gov,要獲取預報,有兩個步驟: 首先,ChatGPT…

  • 在本機執行Breeze-7B-Instruct-v1_0
    ,

    在本機執行Breeze-7B-Instruct-v1_0

    甚麼是Breeze-7B-Instruct-v1_0 huggingface頁面:https://huggingface.co/MediaTek-Research/Breeze-7B-Instruct-v1_0 線上DEMO: https://huggingface.co/spaces/MediaTek-Research/Demo-MR-Breeze-7B 聯發科的Breeze系列有好幾種不同的模型,在使用的時候要注意其微調順序 首先就是Breeze-7B-Base 是 Breeze-7B 系列的基礎模型。而Breeze-7B-Instruct 源自基礎模型 Breeze-7B-Base,使得最終模型可以直接用於常見任務。 Ollama library上的breeze模型總是使用簡體中文回答 我有嘗試使用Ollama在Library上面尋找別人訓練好的Library,但不太確定為什麼總是回答簡體中文,而無法好好使用繁體中文回應 https://ollama.com/search?q=breeze 我有嘗試過markliou/breeze-7b、ycchen/breeze-7b-instruct-v1_0、jcai/breeze-7b-32k-instruct-v1_0 其中markliou/breeze-7b是回繁體中文沒錯但總是沒在理我問什麼,而剩的都用簡體中文 後來發現是問的問題的關係,以jcai/breeze-7b-instruct-v1_0為例,如果問的問題是台灣專屬的,那麼就會以繁體中文回覆,畢竟原本是以Mistral-7B-v0.1為基礎,如果後面的微調沒有微調到的資料,就仍會有簡體中文的出現,如果詢問台北有哪些地方好玩,則會都使用繁體中文 自己將Hugging Face上的檔案匯入Ollama 所以我嘗試使用下面的Makefile,並將https://huggingface.co/MediaTek-Research/Breeze-7B-Base-v1_0的檔案放置至同資料夾內 然後用 中間有出了一些錯誤 panic: runtime error: index…


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!