OpenAI File Search:企業級 RAG 解決方案完整指南

Assistants API 核心功能,自動化文件索引、向量儲存與語義檢索

TL;DR(60 秒精華)

  • 核心功能:OpenAI File Search 是 Assistants API 的 RAG 工具,自動處理文件索引與檢索
  • 支援規格:多種檔案格式(包括 PDF、Word、程式碼等)、單檔最大 512MB、每個向量儲存庫最多 10,000 個檔案
  • 技術特色:自動分塊、向量嵌入、混合檢索(語義 + 關鍵字)、智慧排序
  • 定價模式:$0.10/GB/天(首 GB 免費),執行緒向量儲存庫 7 天後自動過期

OpenAI File Search 讓開發者無需自行建立 RAG 管道,即可為 AI Assistant 添加企業文件檢索能力。系統自動處理文件解析、分塊、嵌入和儲存,並透過混合檢索策略提供高準確度的語義搜尋。適合知識庫問答、財務分析、法律文件檢索等企業應用場景。

什麼是 OpenAI File Search?

OpenAI File Search 是 OpenAI Assistants API 的核心工具之一,提供自動化的檢索增強生成(RAG,Retrieval-Augmented Generation)功能。它允許開發者上傳文件,系統會自動進行解析、分塊、向量化和索引,讓 AI Assistant 能夠根據文件內容回答問題。

核心價值

🚀 自動化 RAG 管道

  • 無需手動分塊和嵌入
  • 自動建立向量儲存庫
  • 智慧查詢優化和重排序

📚 大規模文件處理

  • 支援多種檔案格式(PDF、Word、程式碼等)
  • 單檔最大 512MB
  • 每個向量庫最多 10,000 個檔案

🎯 混合檢索策略

  • 語義搜尋 + 關鍵字搜尋
  • 查詢分解和並行搜尋
  • 結果重新排序優化

💰 彈性成本管理

  • 首 GB 免費
  • $0.10/GB/天
  • 自動過期策略節省成本

發展歷程

根據公開資訊,OpenAI File Search 經歷以下發展階段:

  • 2024 年中:File Search 功能在 Assistants API 中推出
  • 2025 年初:File Search 擴展至 Responses API,增強元數據過濾等功能
  • 目前狀態:已應用於生產環境,持續優化中
ℹ️ 提示:OpenAI API 持續更新,建議查閱 官方文檔 以獲取最新資訊。

技術架構與工作原理

完整的 RAG 工作流程

OpenAI File Search 自動化處理整個 RAG 管道:

  1. 文件上傳與解析

    系統自動識別多種檔案格式,解析文件內容(包括 PDF、Word、程式碼、Markdown 等)

  2. 智慧分塊(Chunking)

    預設使用 800 tokens 為分塊大小,400 tokens 重疊,確保語義連貫性

  3. 向量嵌入

    使用 text-embedding-3-large 模型(256 維),將文本轉換為向量表示

  4. 向量儲存

    建立 Vector Store,支援最多 10,000 個檔案,每檔案最多 5,000,000 tokens

  5. 混合檢索

    查詢時同時執行語義搜尋和關鍵字搜尋,並重新排序結果

  6. 上下文生成

    選擇最多 20 個相關分塊,注入到模型的上下文中

核心技術特點

1. 自動查詢優化

File Search 會自動:

  • 重寫查詢:優化使用者問題以提高檢索準確度
  • 分解查詢:將複雜問題分解為多個並行搜尋
  • 結果重排:使用機器學習模型重新排序檢索結果

2. Vector Store 架構

向量儲存庫的特性:

  • 每個 Assistant 最多連結 1 個向量儲存庫
  • 每個執行緒(Thread)也可附加 1 個向量儲存庫
  • 查詢時會同時搜尋 Assistant 和執行緒的向量庫
  • 支援元數據過濾(metadata filtering)

3. 嵌入模型規格

預設配置:
模型:text-embedding-3-large
維度:256
分塊大小:800 tokens
分塊重疊:400 tokens
最大上下文分塊數:20

實作步驟與 API 範例

步驟 1:啟用 File Search 工具

建立 Assistant 時啟用 file_search 工具:

Python 範例:
from openai import OpenAI
client = OpenAI()

assistant = client.beta.assistants.create(
  name="Financial Analyst Assistant",
  instructions="你是專業的財務分析師,根據上傳的財報回答問題。",
  model="gpt-4-turbo",
  tools=[{"type": "file_search"}]
)

步驟 2:建立向量儲存庫並上傳檔案

建立 Vector Store 並批次上傳檔案:

Python 範例:
# 建立向量儲存庫
vector_store = client.beta.vector_stores.create(
  name="Financial Statements Q1-Q4 2024"
)

# 準備檔案串流
file_paths = ["Q1_2024.pdf", "Q2_2024.pdf", "Q3_2024.pdf", "Q4_2024.pdf"]
file_streams = [open(path, "rb") for path in file_paths]

# 批次上傳並等待處理完成
file_batch = client.beta.vector_stores.file_batches.upload_and_poll(
  vector_store_id=vector_store.id,
  files=file_streams
)

print(f"處理狀態:{file_batch.status}")
print(f"檔案數量:{file_batch.file_counts}")

步驟 3:連結 Vector Store 至 Assistant

Python 範例:
assistant = client.beta.assistants.update(
  assistant_id=assistant.id,
  tool_resources={
    "file_search": {
      "vector_store_ids": [vector_store.id]
    }
  }
)

步驟 4:建立執行緒並執行查詢

Python 範例:
# 建立執行緒
thread = client.beta.threads.create(
  messages=[
    {
      "role": "user",
      "content": "2024 年第三季的營收成長率是多少?請提供詳細數據。"
    }
  ]
)

# 執行 Assistant
run = client.beta.threads.runs.create_and_poll(
  thread_id=thread.id,
  assistant_id=assistant.id
)

# 取得回應
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.data[0].content[0].text.value)

步驟 5:為執行緒附加臨時檔案

除了 Assistant 層級的向量儲存庫,也可以在執行緒中附加臨時檔案:

Python 範例:
# 上傳臨時檔案
message_file = client.files.create(
  file=open("supplementary_data.pdf", "rb"),
  purpose="assistants"
)

# 在訊息中附加檔案
thread = client.beta.threads.create(
  messages=[
    {
      "role": "user",
      "content": "請分析這份補充資料。",
      "attachments": [
        {
          "file_id": message_file.id,
          "tools": [{"type": "file_search"}]
        }
      ]
    }
  ]
)
ℹ️ 提示:執行緒層級的檔案會自動建立臨時向量儲存庫,預設在最後一次活動後 7 天過期,有效節省成本。

支援的檔案格式

OpenAI File Search 支援多種檔案格式,以下是根據公開資訊整理的主要格式:

類別 支援格式 說明
文件 .pdf, .docx, .doc PDF 和 Microsoft Word 文件
簡報 .pptx Microsoft PowerPoint 簡報
文字檔案 .txt, .md, .tex 純文字、Markdown、LaTeX
網頁 .html, .css HTML 和 CSS 檔案
資料格式 .json JSON 結構化資料
程式碼 .py, .js, .ts, .java, .cpp, .c, .cs, .php, .rb, .sh 主流程式語言原始碼
ℹ️ 重要提示:支援的檔案格式列表可能隨 OpenAI API 更新而變動。上表為常見格式整理,完整且最新的支援格式清單請參考 OpenAI 官方文檔

檔案限制

  • 單檔大小:最大 512 MB
  • 單檔 Tokens:最多 5,000,000 tokens
  • 向量庫容量:每個 Vector Store 最多 10,000 個檔案
  • 處理時間:大型檔案建議等待 60 秒確保完成處理
⚠️ 注意:密碼保護的 PDF 無法處理,需要先解除密碼保護。掃描式 PDF(圖片型)的 OCR 準確度可能較低,建議使用文字型 PDF。

檢索機制與最佳實踐

混合檢索策略

OpenAI File Search 採用多層次檢索策略,確保高準確度:

  1. 查詢重寫

    系統自動改寫使用者查詢,優化檢索效果。例如將「Q3 revenue」擴展為「third quarter revenue growth rate」

  2. 並行搜尋

    複雜查詢會被分解為多個子查詢,並行執行以提高覆蓋率

  3. 語義 + 關鍵字

    同時執行向量相似度搜尋(語義)和傳統關鍵字搜尋(BM25),結合兩者優勢

  4. 智慧排序

    使用機器學習模型對檢索結果重新排序,選出最相關的分塊

  5. 上下文注入

    將最多 20 個分塊注入模型上下文,生成回答

最佳實踐建議

1. 文件準備

  • 結構化內容:使用清晰的標題、段落和列表,提高分塊質量
  • 文字型 PDF:優先使用文字型 PDF,避免掃描式圖片
  • 檔案命名:使用描述性檔案名稱,有助於檢索
  • 元數據標記:為檔案添加相關元數據,啟用過濾功能

2. Vector Store 管理

  • 分類管理:相關文件歸類到同一個 Vector Store(例如:財報 2024、法律文件、技術文檔)
  • 定期更新:移除過期文件,添加最新資料
  • 版本控制:重要文件更新時建立新版本,保留歷史記錄

3. 查詢優化

  • 具體問題:避免過於籠統的問題,提供具體上下文
  • 關鍵字提示:在查詢中包含重要關鍵字
  • 分步查詢:複雜問題分解為多個簡單查詢

4. 成本控制

  • 利用過期策略:執行緒向量庫預設 7 天過期,避免長期儲存
  • 監控儲存量:定期檢查 Vector Store 大小,移除不必要的檔案
  • 批次處理:使用批次上傳 API 提高效率

定價與成本管理

定價結構

項目 價格 說明
Vector Store 儲存 $0.10 / GB / 天 首 1 GB 免費,按實際儲存大小計費
檔案處理 免費 上傳、解析、分塊、嵌入不額外收費
檢索查詢 包含在模型 API 費用中 File Search 查詢不單獨收費
⚠️ 定價提示:以上定價資訊根據公開資訊整理,僅供參考。實際費用可能因 OpenAI 政策調整而變動。最新且準確的定價資訊請參考 OpenAI 官方定價頁面

成本優化策略

1. 自動過期策略

執行緒層級的向量儲存庫預設使用過期策略:

預設過期設定:
{
  "expires_after": {
    "anchor": "last_active_at",
    "days": 7
  }
}

2. 手動管理

對於不需要的向量儲存庫,主動刪除以節省成本:

Python 範例:
client.beta.vector_stores.delete(vector_store_id=vector_store.id)

3. 儲存量估算

儲存大小取決於:

  • 原始檔案經過解析、分塊和嵌入後的最終大小
  • 通常比原始檔案大小略大(因為包含嵌入向量)
  • 可透過 API 查詢實際儲存量
ℹ️ 成本範例:假設你有 100 個 PDF 檔案,總共 2GB 原始大小,處理後向量儲存約 2.5GB。扣除首 1GB 免費額度,每天成本為 (2.5 - 1) × $0.10 = $0.15。一個月約 $4.50。

實際應用場景

1. 企業知識庫問答

場景描述

建立內部知識庫 AI 助手,回答員工關於公司政策、流程、產品的問題。

  • 文件類型:內部手冊、SOP 文件、FAQ 文檔
  • 典型查詢:「請假流程是什麼?」「如何申請設備?」
  • 優勢:24/7 即時回答,減輕 HR 負擔

2. 財務分析助手

場景描述

上傳財報、年報等文件,AI 協助分析財務數據和趨勢。

  • 文件類型:季度財報、年度報告、審計文件
  • 典型查詢:「Q3 營收成長率?」「2024 年總體獲利表現?」
  • 優勢:快速提取數據,生成分析報告

3. 法律文件檢索

場景描述

律師事務所建立案例庫,快速查找相關判例和法條。

  • 文件類型:判決書、法律條文、合約範本
  • 典型查詢:「類似案例的判決結果?」「相關法條引用?」
  • 優勢:大幅縮短研究時間,提高準確度

4. 技術文檔助手

場景描述

開發團隊上傳 API 文檔、技術規範,AI 協助開發者快速查找資訊。

  • 文件類型:API 文檔、架構設計、程式碼註解
  • 典型查詢:「如何呼叫認證 API?」「資料庫 schema 設計?」
  • 優勢:加速開發,減少重複查閱文件

5. 學術研究助手

場景描述

研究人員上傳論文、研究報告,AI 協助文獻回顧和資料整理。

  • 文件類型:學術論文(PDF)、研究數據、會議論文
  • 典型查詢:「相關研究方法?」「實驗數據比較?」
  • 優勢:快速梳理大量文獻,發現研究趨勢

與 Gemini File Search 的對照

OpenAI 和 Google Gemini 都提供文件檢索功能,但實作方式和特性有所不同:

功能面向 OpenAI File Search Gemini API File Search
API 介面 Assistants API / Responses API Gemini API (files.upload)
檔案上傳 透過 Files API 或 Vector Store API files.upload() 方法
索引建立 Vector Store(向量儲存庫)自動建立 File Search 自動索引
檔案查詢 透過 file_search 工具查詢 file.search() 或在 prompt 中引用
檔案限制 單檔 512MB,每個向量庫 10,000 檔 單檔 2GB,總共最多 10,000 檔
支援格式 多種文字型格式(PDF、Word、程式碼等) 影片、音訊、圖片、文件、程式碼等
嵌入模型 text-embedding-3-large (256維) Gemini 內建嵌入模型
檢索策略 混合檢索(語義 + 關鍵字)+ 重排序 語義檢索為主
定價 $0.10/GB/天(首 GB 免費) 檔案儲存免費,API 呼叫按 token 計費
RAG 整合 自動化 RAG 管道,無需額外設定 自動化 RAG,支援 grounding
向量庫管理 支援多個 Vector Store,可獨立管理 統一的檔案池

選擇建議

選擇 OpenAI File Search 的場景

  • 需要企業級 Assistant 功能(對話管理、工具呼叫)
  • 文件以文字型為主(PDF、Word、程式碼)
  • 需要精細的向量儲存庫管理和分類
  • 重視混合檢索(語義 + 關鍵字)的準確度
  • 已採用 OpenAI 生態系統

選擇 Gemini File Search 的場景

  • 需要處理多模態內容(影片、音訊、圖片)
  • 檔案儲存成本是主要考量(Gemini 儲存免費)
  • 需要更大的單檔上傳限制(2GB vs 512MB)
  • 已採用 Google Cloud / Gemini 生態系統
💡 混合使用:兩者並非互斥,可以根據不同應用場景混合使用。例如:文字型企業文件使用 OpenAI File Search,多模態內容(如影片教學、圖片資料)使用 Gemini File Search。

進階技巧與常見問題

進階技巧

1. 使用元數據過濾

為檔案添加元數據,實現更精確的檢索:

Python 範例:
# 上傳檔案時添加元數據
file = client.files.create(
  file=open("Q1_2024.pdf", "rb"),
  purpose="assistants",
  metadata={
    "year": "2024",
    "quarter": "Q1",
    "department": "finance"
  }
)

# 查詢時使用元數據過濾
# (需在 Assistants API 配置中啟用)

2. 結合多個工具

File Search 可以與其他工具(如 Code Interpreter)組合使用:

Python 範例:
assistant = client.beta.assistants.create(
  name="Data Analysis Assistant",
  tools=[
    {"type": "file_search"},
    {"type": "code_interpreter"}
  ],
  model="gpt-4-turbo"
)

3. 監控檔案處理狀態

確保檔案完全處理後再執行查詢:

Python 範例:
import time

# 上傳檔案
file_batch = client.beta.vector_stores.file_batches.create(
  vector_store_id=vector_store.id,
  file_ids=[file1.id, file2.id]
)

# 輪詢處理狀態
while file_batch.status != "completed":
  time.sleep(2)
  file_batch = client.beta.vector_stores.file_batches.retrieve(
    vector_store_id=vector_store.id,
    batch_id=file_batch.id
  )
  print(f"狀態:{file_batch.status}")

print("所有檔案處理完成!")

常見問題

Q: File Search 的檢索準確度如何?

A:準確度取決於文件質量和查詢明確性。結構化的文字型 PDF 準確度通常很高(90%+),掃描式 PDF 或複雜排版可能需要人工驗證。建議對關鍵資料進行抽查驗證。

Q: 可以搜尋圖片或表格內容嗎?

A:目前 File Search 主要針對文字內容。PDF 中的表格如果是文字格式可以被索引,但掃描式圖片表格效果較差。建議將重要表格轉換為結構化格式(如 CSV、JSON)。

Q: 如何處理大量檔案(超過 10,000 個)?

A:可以建立多個 Vector Store 分類管理,或使用元數據過濾縮小檢索範圍。另一種方式是定期歸檔舊檔案,只保留活躍的文件在向量庫中。

Q: File Search 支援多語言嗎?

A:支援。嵌入模型和 GPT-4 都有良好的多語言支援,可以處理中文、日文、韓文等語言的文件。建議同一個 Vector Store 使用同一種語言以獲得最佳效果。

Q: 如何避免檢索到敏感資料?

A:

  • 上傳前先清理敏感資訊(如個資、機密數據)
  • 使用元數據標記敏感度等級
  • 在 Assistant 指令中明確限制不可回答的資訊類型
  • 定期審查檢索日誌

參考資源

官方文檔

  • Assistants API File Search 文檔
    https://platform.openai.com/docs/assistants/tools/file-search
    完整的 API 參考和技術規格
  • Responses API File Search 範例
    https://cookbook.openai.com/examples/file_search_responses
    實際應用程式碼範例
  • Azure OpenAI File Search 教學
    https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/file-search
    Microsoft 提供的完整教學

相關文章(OAO Studio)

社群資源

  • OpenAI Developer Community:https://community.openai.com
  • OpenAI Cookbook:https://cookbook.openai.com

總結

OpenAI File Search 為企業提供了開箱即用的 RAG 解決方案,無需自行建立複雜的文件處理管道。透過自動化的分塊、嵌入和檢索,開發者可以快速為 AI Assistant 添加強大的知識庫功能。

核心優勢回顧

  • 自動化 RAG:無需手動處理文件分塊、向量化和索引建立
  • 大規模處理:支援 10,000 個檔案、多種格式、單檔 512MB
  • 混合檢索:語義搜尋結合關鍵字搜尋,智慧排序優化準確度
  • 彈性管理:Vector Store 分類管理,自動過期節省成本
  • 無縫整合:與 Assistants API 深度整合,支援多工具組合

何時應該使用 OpenAI File Search

  • 需要快速建立企業知識庫問答系統
  • 文件以文字型為主(財報、法律文件、技術文檔)
  • 需要高準確度的語義檢索
  • 希望減少 RAG 管道的開發和維護成本
  • 已使用 OpenAI 生態系統,需要整合 Assistant 功能
💡 開始使用:前往 OpenAI Platform(https://platform.openai.com)註冊帳號,獲取 API 金鑰,即可開始使用 File Search。首 1GB 向量儲存免費,適合測試和小型專案。
返回 AI 知識庫