iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
生成式 AI

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

Day17-從零開始:如何透過LlamaIndex串接Embedding Model?

  • 分享至 

  • xImage
  •  

前言✨

Embedding、Embedding、Embedding 到底什麼是 Embedding? 你是否曾經想過,當你在網路上搜尋一些資訊時,背後的運作原理是什麼?答案就在於文字向量化技術。這項強大的工具能夠將文本轉換為向量,讓計算機能夠理解文本的語義含義。LlamaIndex 就是利用這項技術來建立強大的搜索引擎。它使用預訓練的向量化模型,如OpenAI 的 text-embedding-ada-002、BGE Model等,將檔案和查詢轉換為向量。並通過計算向量之間的相似度,快速找到與查詢最相關的文檔。

這項技術不僅應用於搜索,還可用於文本分類、情感分析等各種自然語言處理(NLP)任務。隨著深度學習的發展,Embedding 模型變得越來越強大和精確。今天我們將深入探討 LlamaIndex 中的 Embedding 技術。我們將介紹Embedding 的基本概念、使用方法。讓我們一起探索這個神奇的數字世界吧!
https://ithelp.ithome.com.tw/upload/images/20240913/201681179XV4byxPjD.png


【Embedding🧠】

Embedding 的原理是將高維度的離散特徵映射到相對低維的連續向量空間中。每個實體(entity)都被表示為一個向量,向量中的每個元素稱為一個特徵。在自然語言處理中,單詞 Embedding 可以幫助機器學習模型理解單詞之間的關係和含義。 Embedding 讓深度學習模型能更有效地了解語義並同時保留語法關係。
https://ithelp.ithome.com.tw/upload/images/20240913/201681178981BLFesk.png

(圖片來源:OpenAI Embedding

如果我們進一步將 Embedding 結果的高維空間可視化,會發相似的詞彙彼此距離很近,這就是 Embedding 的功能。
https://ithelp.ithome.com.tw/upload/images/20240913/20168117WlFWqmDJOQ.png

(圖片來源:OpenAI Embedding

接著我們試著透過 LlamaIndex 實現 Embedding 計算吧~

  • OpenAI:OpenAI 目前提供了三支 Embedding Model API,詳細資訊如下:
模型名稱 輸入長度(Tokens) 輸出維度
text-embedding-ada-002 8196 1536
text-embedding-3-small 8196 1536
text-embedding-3-large 8196 3072
  1. 安裝相關依賴pip install llama-index-embeddings-openai

  2. 執行以下程式,將會成功將文字轉換成 1536 維度向量

    import os
    os.environ["OPENAI_API_KEY"] = ""
    from llama_index.embeddings.openai import OpenAIEmbedding
    
    embed_model = OpenAIEmbedding()
    
    # embedding
    vector = embed_model.get_text_embedding("用50字介紹台灣")
    vector
    
    # Output[1]: [0.0017384070670232177, -0.014998571015894413, -0.010654302313923836, -0.00761821074411273, -0.018286503851413727, ..., -0.00017478074005339295, -0.007226456888020039, -0.022861627861857414]
    

  • Hugging Face:是一個專注於人工智慧和自然語言處理(NLP)的開源平台。核心目標是促進AI技術的民主化,使開發者能夠輕鬆地使用和共享預訓練模型、數據集和工具,從而推動整個技術生態系統的發展。以下將會以BGE 模型示範。
    https://ithelp.ithome.com.tw/upload/images/20240914/20168117tFaZqix2Al.png
  1. 安裝相關依賴pip install llama-index-embeddings-huggingface
  2. 執行以下程式,將會成功將文字轉換成 1024 維度向量。
    from llama_index.embeddings.huggingface import HuggingFaceEmbedding
    
    # embedding
    embed_model = HuggingFaceEmbedding(
        model_name="BAAI/bge-m3"
    )
    vector = embed_model.get_text_embedding("用50字介紹台灣")
    vector
    
    # Output[1]: [0.009834644384682178, -0.019660603255033493, -0.04171082004904747, -0.016028346493840218, -0.006163890473544598, ..., 0.023633258417248726, 0.01554850209504366, -0.04536805301904678, -0.00365400779992342, -0.02269640564918518]
    

結論🎯

Embedding 是現代自然語言處理(NLP)的關鍵技術,將文本數據轉換為電腦可以理解的向量,從而讓機器能夠更有效地處理語義和語法。無論是使用 OpenAI 還是 BGE 模型,這些工具都為開發者提供了強大而靈活的解決方案。隨著深度學習的進展,Embedding 的應用將持續拓展,從文本搜索到情感分析,這些技術正逐步改變我們處理和理解語言的方式。通過 LlamaIndex 等平台的整合,使用這些模型變得更加方便,讓AI應用更加智能化與精確化。


上一篇
Day16-從零開始:如何透過LlamaIndex串接LLM Model?
下一篇
Day18-從零開始:如何透過LlamaIndex建立Indexing?
系列文
懶人救星:生成式AI 26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言