OpenAI API 如何處理數據,以及為什麼在上傳多個文件時可能會遇到處理速度變慢的情況

OpenAI API 如何處理數據,以及為什麼在上傳多個文件時可能會遇到處理速度變慢的情況

API 處理流程

OpenAI API 分幾個階段處理文件:

  1. 文件上傳和處理
  • 文件上傳後會被處理成標記(tokens)
  • 每個文件必須小於 512MB 或 200 萬個標記,以先達到的限制為準
  • 系統將文本分成稱為標記的小塊進行處理,其中 1 個標記大約等於 4 個字符或 0.75 個英文單詞
  1. 向量化過程
  • 文本被轉換為嵌入式向量表示
  • 這些嵌入保留了內容的含義,並允許進行語義搜索
  • 相似的內容在向量空間中的嵌入距離會更接近

性能瓶頸

文件處理延遲

  • 大文件需要更多時間進行標記化和嵌入生成
  • 多個同時上傳可能會耗盡系統資源
  • API 的速率限制可能會影響處理速度

向量數據庫操作

  • 將向量插入數據庫需要時間
  • 大量數據需要更多索引時間
  • 隨著數據庫增長,搜索操作變得更慢

優化建議

文件管理

  • 實施批量處理多個文件
  • 考慮將大文檔分割成較小的段落
  • 將文件大小保持在建議限制內以獲得最佳性能

系統架構

  • 實施異步處理
  • 使用服務器端流式傳輸響應
  • 考慮實施緩存層

速率限制

  • 通過響應標頭監控 API 速率限制
  • 實施具有指數退避的重試機制
  • 盡可能使用批處理

性能基準

雖然確切的處理時間取決於多個因素,但以下是一般指導原則:

操作類型 平均處理時間
單個 PDF(1MB) 2-5 秒
多個 PDF(總計 10MB) 15-30 秒
大型數據集(50MB+) 1-3 分鐘
向量搜索 100-500 毫秒

這些時間可能受以下因素影響:

  • 文件大小和複雜度
  • 當前 API 負載
  • 網絡條件
  • 向量數據庫性能
  • 並發請求數量

使用 Azure OpenAI API 建立的 ChatGPT App 處理速度較慢的原因:

主要原因

內容過濾機制

  • Azure OpenAI API 會執行額外的內容過濾步驟(包括不當用語和不安全內容的檢查),這個步驟在 OpenAI 官方 API 中並不存在[1]
  • 即使聯繫 Azure 支援人員,也無法完全禁用這個內容過濾步驟[1]

效能差異

  • 根據實際測試,Azure OpenAI API 的響應速度可能比 OpenAI 官方 API 慢 2.5 倍[1]
  • GPT-4 模型在 Azure 上的處理速度特別明顯,響應時間較長[1]

影響因素

伺服器負載

  • 處理速度受到 GPU 集群負載的影響
  • 令牌(tokens)處理量越大,等待時間就越長[1]
  • 美國地區的伺服器通常負載最重,因此響應較慢[1]

地理位置影響

  • 不同地理區域的響應速度有所不同
  • 建議選擇夜間時段的地區來提高速度,例如美國/歐洲用戶可以考慮使用亞洲或澳洲的區域[1]

優化建議

技術層面

  • 使用最新的模型版本(如 1106/0125),這些版本通常比舊版本更快[1]
  • 實施輸出快取機制,對於常見問題可以直接返回快取的答案[1]
  • 避免使用 LangChain 的輸出解析,改用 OpenAI 的函數調用/工具[1]

使用策略

  • 控制最大令牌限制,以獲得較短的響應時間[1]
  • 對於一般的問答場景,建議使用輸出快取[1]
  • 在不使用 PTU(Priority Throughput Units)的情況下,80% 的請求應該在 10 秒內完成[1]
  • 使用 PTU 可以將完成率提高到約 90%[1]

雖然 Azure OpenAI API 的處理速度較慢,但它在企業級應用中仍有其優勢,特別是在安全性和合規性方面。根據具體使用場景,這個速度差異可能是可以接受的[1]。

Citations:
[1] https://www.reddit.com/r/AZURE/comments/1c1n48j/the_response_of_the_azure_openai_api_is_much/
[2] openai vs @azure/openai vs chatgpt: Which is Better AI Interaction Libraries?
[3] Slow responce from GPT 3.5 Turbo API - API - OpenAI Developer Forum
[4] Chat GPT's API is significantly slower than the website with GPT Plus - API - OpenAI Developer Forum