整合 Hugging Face 嵌入與 LlamaIndex:開發者指南

整合 Hugging Face 嵌入與 LlamaIndex:開發者指南

重點摘要

  • 模組概述llama_index.embeddings.huggingface 橋接 LlamaIndex 與 Hugging Face 模型,提供量身打造的嵌入。
  • 安裝與設定:1. 使用 pip 安裝套件。2. 在 Python 中設定模組。3. 實例化嵌入模型。4. 用範例文字進行測試。
  • 選擇合適的模型:根據語言和任務選擇模型的重要性,並考量效能與資源。
  • 程式碼範例:展示基本嵌入生成、自訂模型、批次處理以及向量索引整合。
  • 最佳化技巧:高效模型、批次處理、區塊大小調整、資源分配、快取以及系統監控。
  • LLM API 整合:整合 Novita AI 的 LLM API 以執行進階 NLP 任務的步驟。

簡介

將 Hugging Face 嵌入與 LlamaIndex 整合,為開發者在處理進階自然語言處理任務時開啟了無限可能。透過在 LlamaIndex 框架中運用 Hugging Face 多元且最先進的模型,開發者能夠針對特定語言和領域,打造穩健、高效且高度準確的檢索增強生成 (RAG) 系統。本指南將逐步引導您完成在 LlamaIndex 中設定與使用 Hugging Face 嵌入的過程,並提供實用的見解與程式碼範例,協助您最佳化 NLP 專案。

什麼是 llama_index_embedding_huggingface?

llama_index.embeddings.huggingface 模組扮演著 LlamaIndex 與 Hugging Face 豐富模型生態系之間的橋樑。透過此模組,您可以從各種最先進的嵌入模型中挑選,為您的 RAG 系統量身打造適合特定語言、領域或效能需求的設定。

安裝與設定

步驟 1:安裝

  • 首先,請確認您的系統已安裝 Python 與 pip。
  • 開啟終端機或命令提示字元,使用 pip 安裝 llama_index_embedding_huggingface 套件:
pip install llama_index_embedding_huggingface

步驟 2:設定

  • 安裝完成後,您需要在 Python 腳本中匯入此模組:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
  • 決定最適合您需求的 Hugging Face 嵌入模型。請考慮語言支援、模型大小以及效能等因素。

步驟 3:設定模組

  • 使用您選擇的模型名稱實例化 HuggingFaceEmbedding 類別:
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
  • 此設定即可整合至您的 RAG 管線,用於將文字資料轉換為嵌入向量。

步驟 4:首次使用

  • 準備好嵌入模型後,您可以繼續將其與其他 LlamaIndex 元件(例如文件載入器與向量索引)整合。
  • 使用範例文字測試設定,確保嵌入生成符合預期:
sample_text = "Hello, world of RAG systems!" 
embeddings = embedding_model.get_text_embedding(sample_text) 
print(embeddings)

更多關於使用 Huggingface 與 LlamaIndex 的 RAG 專案資訊,請參閱這篇部落格:Building A RAG Ebook “Librarian” Using LlamaIndex

選擇合適的嵌入模型

選擇正確的嵌入模型對於 RAG 系統的效能至關重要。嵌入是系統理解與檢索資料的核心。模型的選擇會影響檢索作業的準確性、相關性與效率。

探索可用模型

Hugging Face 提供了眾多模型,各有其獨特特性。若要探索可用模型,您可以造訪 Hugging Face Model Hub。使用篩選條件按語言、任務或資料集縮小模型範圍。請留意社群回饋、效能基準測試,以及模型是否與您的系統需求相容。

根據語言與任務選擇

您的選擇應考量資料的語言以及 RAG 系統設計要執行的特定任務。例如,如果您的應用程式涉及醫學文獻,您可能偏好針對醫學文字微調的模型。同樣地,對於多語言應用程式,支援多種語言的模型會是理想選擇。

效能考量

請考慮模型大小與效能之間的權衡。較大的模型可能提供更詳細的嵌入,但代價是增加計算資源與延遲。

程式碼使用範例

現在您已選好合適的模型,是時候實際應用了。以下詳細的程式碼範例示範如何使用 llama_index.embeddings.huggingface 模組生成文字嵌入。

基本嵌入生成

from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 初始化嵌入模型
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")

# 要嵌入的文字
text = "This is a sample text for embedding."

# 生成嵌入
embedding = embedding_model.get_text_embedding(text)
print(embedding)

使用自訂模型嵌入

# 使用不同模型初始化
custom_embedding_model = HuggingFaceEmbedding(model_name="YourCustomModelName")

# 使用自訂模型生成嵌入
custom_embedding = custom_embedding_model.get_text_embedding(text)

批次嵌入生成

# 文字列表
texts = ["text1", "text2", "text3", ...]

# 為所有文字生成嵌入
embeddings = embedding_model.get_text_embedding(texts)

針對特定需求調整

# 自訂嵌入生成
embeddings = embedding_model.get_text_embedding(text, max_length=512)

整合向量索引

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

# 載入文件
documents = SimpleDirectoryReader("./data").load_data()

# 建立向量儲存索引
index = VectorStoreIndex.from_documents(documents, embed_model=embedding_model)

# 現在,`index` 可用於高效的檢索作業

最佳化嵌入生成的技巧

技巧 1:選擇高效模型

挑選在準確性與速度之間取得平衡的嵌入模型。較大的模型可能提供更好的效能,但會增加計算時間。

技巧 2:批次處理

利用 llama_index.embeddings.huggingface 模組的批次處理功能,在單一操作中為多個文字生成嵌入,減少重複設定與拆卸的開銷。

技巧 3:調整區塊大小

在索引階段微調區塊大小與重疊比例,以最佳化嵌入的粒度。較小的區塊大小可能產生更精確的嵌入,但會增加計算時間。

技巧 4:資源分配

確保您的系統擁有足夠的資源 (CPU/GPU、記憶體) 來處理嵌入生成過程,特別是在使用複雜模型時。Novita AI GPU Instance 提供經濟實惠且按用量付費的 GPU 雲端服務,助您擴展創新。

此外,Novita AI GPU Instance 可即時存取 Jupyter,並預先安裝 Tensorflow、Pytorch、cuDNN、CUDA、TensorRT、Llama3 與 Stable Diffusion。Novita AI 讓您透過瀏覽器直接使用 GPU 雲端服務。

技巧 5:快取機制

實作快取策略,儲存先前生成的嵌入,避免對已處理過的文字進行重複計算。

技巧 6:監控系統負載

留意系統負載,最佳化並發作業數量,以防止系統超載並確保一致的效能。

與 LLM API 整合

將 LLM 與 llama_index.embeddings.huggingface 這類嵌入模組整合,能為自然語言處理任務帶來顯著優勢。此整合可透過運用捕捉文字語意細微差別的最新嵌入,打造高度高效且準確的檢索增強生成 (RAG) 系統。以下是與 Novita AI 的 LLM API 整合的逐步指南:

1. 前往 novita.ai 並登入

您可以使用 Google 或 GitHub 登入。首次登入時會自動建立新帳戶。

或者,您也可以使用電子郵件地址註冊。

2. 管理 API 金鑰

Novita AI 使用請求標頭中的 Bearer 認證(API 金鑰)來驗證 API 存取,例如:“Authorization: Bearer {API Key}”。

前往設定中的 “Key Management” 管理您的金鑰。

首次登入時,系統會自動建立一個預設金鑰。您可以點擊 “+ Add new key” 來建立更多金鑰。

3. 進行 API 呼叫

以下是以 Python 客戶端使用 Novita AI Chat Completions API 的範例。

pip install 'openai>=1.0.0'

from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # 取得 Novita AI API 金鑰,請參考:https://novita.ai/docs/get-started/quickstart.html#_2-manage-api-key。
    api_key="<YOUR Novita AI API Key>",
)

model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # 或 False
max_tokens = 512

chat_completion_res = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": "Act like you are a helpful assistant.",
        },
        {
            "role": "user",
            "content": "Hi there!",
        }
    ],
    stream=stream,
    max_tokens=max_tokens,
 )

if stream:
    for chunk in chat_completion_res:
        print(chunk.choices[0].delta.content or "", end="")
else:
    print(chat_completion_res.choices[0].message.content)

更多資訊請參閱 Novita AI Model API Reference

4. 加值點數

我們為新用戶提供附有部分點數的優惠券,供您試用產品。若要增加更多點數,請前往 Billing and Payments 並依照 Payment Methods 指南操作。

結論

將 Hugging Face 嵌入與 LlamaIndex 整合,能顯著增強您的 RAG 系統能力,提供穩健的框架來處理複雜的 NLP 任務。依照本指南概述的步驟,您可以順暢地設定與設定嵌入模型,選擇最適合需求的模型,並透過各種技巧與最佳實務來最佳化效能。

常見問題

[Bug]: No module named ‘llama_index.embeddings.huggingface’

執行 pip install llama-index-embeddings-huggingface

[Bug]: Loading embedding model form Hugging Face in Llama Index throws up an attribute error

檢查您的 torch 版本 !python -c "import torch; print(torch.version)"。降級版本可能有效:!python -m pip install — upgrade torch==1.13.0

Novita AI 是全能雲端平台,助您實現 AI 抱負。整合 API、無伺服器、GPU 虛擬機——您需要的經濟實惠工具。免除基礎設施煩惱,免費開始,讓您的 AI 願景成真。

推薦閱讀

什麼是 RAG:檢索增強生成完整介紹

逐步教學:將檢索增強生成 (RAG) 與大型語言模型整合

LlamaIndex 與 LangChain 之間如何選擇:完整指南