iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
生成式 AI

懶人救星:生成式AI 系列 第 16

Day16-從零開始:如何透過LlamaIndex串接LLM Model?

  • 分享至 

  • xImage
  •  

前言

隨著大型語言模型(LLM)的快速發展,如何快速地將模型串接整合,成為了許多開發者面臨的挑戰。LlamaIndex 作為一個資料框架,提供了多種 LLM 接口,使開發者能夠更輕鬆地構建基於LLM的應用程序。整合了 OpenAI、LangChain、Hugging Face、Ollama、vllm 等常見部署 LLM 應用,我們只需要更改一小段程式就能無痛轉換模型,對於開發者來說非常方便。
https://ithelp.ithome.com.tw/upload/images/20240912/20168117XFrzoEajiA.png

Models🤖

LlamaIndex 支持多種模型類型,這些模型可以根據不同的需求進行選擇:

  • 文本生成模型(LLMs): 用於生成自然語言文本,適合對話系統和內容創建。
  • 嵌入模型(Embeddings): 將文本轉換為向量表示,便於進行相似性檢索和聚類分析。
  • 多模態模型(Multi-modal models): 支持處理多種數據類型,如文本、圖像和音頻,這在一些複雜的應用中非常有用。

【LLMs🧠】

建立 RAG 系統選擇合適的大型語言模型 (LLM) 是首要步驟之一。而 LLMs 是 LlamaIndex 的核心組成部分。 它可以用作獨立模組或結合其它模組(索引、檢索器、查詢引擎),提供快速切換模型的便利性。

  • OpenAI Model🔮:LlamaIndex 集成了 OpenAI 模型只需要簡單的幾行程式碼就能實現和 AI 對話。(Streaming:API 即時回覆模式,每次回傳幾個Tokens。)

    安裝相關依賴:pip install llama-index-llms-openai

    import os
    os.environ["OPENAI_API_KEY"] = "YOUR-API-KEY"
    from llama_index.llms.openai import OpenAI
    
    # Create LLM
    llm = OpenAI(model='gpt-4o-mini')
    
    # non-streaming
    completion = llm.complete("用50字介紹台灣")
    print(completion)
    
    # Output[1]: 台灣是一個美麗的島嶼,擁有豐富的文化和多樣的自然景觀。以熱情的人民、美味的美食和繁榮的科技產業聞名,台灣是東亞的重要經濟體,亦是旅遊的熱門目的地。
    
    # using streaming endpoint
    completions = llm.stream_complete("用50字介紹台灣")
    for completion in completions:
        print(completion.delta, end="")
    

  • Ollama🦙:Ollama 是一個開源的大型語言模型(LLM)工具,提供了快速簡易部署 LLM 的方法,同時支持多種開源 LLM 模型,如 Llama、Phi、Qwen 等。 Ollama 能在普通PC上流暢運行無需複雜配置,透過幾條簡單指令即可啟動。適合中小企業或一般個人研究使用。

  1. 下載Ollama程式並安裝,安裝完成後打開 CMD 執行 ollama 會看到以下畫面。
    https://ithelp.ithome.com.tw/upload/images/20240912/20168117h6z7XHdqi1.png

  2. Ollama Models 選擇要使用的 Model ,筆者使用 Llama 3.1 示範。選擇模型後先「確認模型大小」是否能放入顯卡VRAM內,例如筆者 3060Ti(8G) 可以裝得下 4.7G 的 Llama3.1:latest,接著我們複製紅框處的語法貼製 CMD 執行。這樣就成功在自己的電腦上部署 LLM ,是不是非常簡單快速✨
    https://ithelp.ithome.com.tw/upload/images/20240912/20168117oAD5hlxLTK.png
    https://ithelp.ithome.com.tw/upload/images/20240912/20168117lSWk1w07cs.png

    如果你不喜歡這些型號,還能點選旁邊的 Tags 選擇其它量化方式,你將會看到很多奇奇怪怪的名稱,如8b-instruct-q3_K_S。(其中8b代表參數量、instruct代表指令模型、q3代表量化至 3 bit、K則是量化方式、S代表量化後大小。)
    https://ithelp.ithome.com.tw/upload/images/20240912/20168117DaJunZHY0j.png

  3. 安裝 LlamaIndex 依賴 pip install llama-index-llms-ollama

  4. 執行程式碼

    from llama_index.llms.ollama import Ollama
    llm = Ollama(model="llama3.1:latest", request_timeout=120.0)
    
    # non-streaming
    response = llm.complete("用50字介紹台灣")
    print(response)
    
    # Output[1]: 台灣是一個美麗的島嶼,擁有豐富的地理和文化多樣性。它由於其自然奇觀、風景優雅、人文氣息濃厚而聞名。台北、新竹等地的文物古蹟以及高雄、花蓮等地的美麗風光是旅遊者的絕佳選擇。
    
    # streaming
    response = llm.stream_complete("用50字介紹台灣")
    for r in response:
        print(r.delta, end="")
    
  • Other🗂️ :筆者選了兩個目前比較主流的方法介紹。另外 LlamaIndex 還提供了非常多 LLM 主流的部署接口,如果有興趣可以至官方文檔查看使用方式。

結論💡

LlamaIndex 為開發者提供了一個靈活且強大的框架,讓各類大型語言模型(LLM)可以輕鬆整合並應用於多樣化的專案中。透過簡單的程式調整,開發者無需深究各種複雜的模型部署技術,即可快速在不同的 LLM 間切換,這對於需要快速迭代、實驗不同模型的開發者來說是一大優勢。

此外,LlamaIndex 的多樣化支持包括文本生成、嵌入模型等,滿足了從對話系統到資料檢索的多種需求。像 OpenAI 和 Ollama 這些平台,則提供了即時回應和開源部署等靈活選擇,適合不同規模的專案。不論是中小企業還是個人開發者,都能透過 LlamaIndex 降低使用 LLM 的技術門檻,專注於解決實際問題,而不是困於技術細節中。接著我們將會介紹Embedding Model的使用方法,敬請期待。


上一篇
Day15-從零開始:如何透過LlamaIndex讀取檔案(下)?
下一篇
Day17-從零開始:如何透過LlamaIndex串接Embedding Model?
系列文
懶人救星:生成式AI 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言