資料匯入、匯出與知識中心

資料要先進得來、出得去,平台才有用。這一章涵蓋三件事:把既有資料搬進來、把資料取出去、以及把企業文件變成 AI 與應用程式可檢索的知識。


1. 資料智能匯入

入口:主控台「資料中心 › 資料匯入」,需要 system.data_import 權限。

傳統匯入工具要求您先把來源檔整理成目標格式。AI GO 的匯入反過來——您丟原始檔,由 AI 負責對應

支援的來源

  • 多個 CSV 檔
  • Excel 活頁簿
  • JSON 檔
  • 直連外部資料庫

可以一次上傳多個檔案,這是關鍵能力:實務上一份完整的資料往往散在多張表(客戶主檔一份、聯絡人一份、交易紀錄一份),匯入引擎會處理它們之間的合併關係。

匯入流程

  1. 上傳與解析:系統解析檔案結構並產生欄位剖析(型別推斷、值分布、空值比例)
  2. AI 對應:AI 分析來源欄位與目標表欄位的語意相似度,自動提出對應建議。候選目標包含內建 ERP 表與您的自建表
  3. 覆核:您在覆核介面確認或調整對應關係。介面會標示:
    • 必填欄位是否都有來源(未滿足會預警)
    • 建議的去重鍵(避免重複匯入時產生重複列)
    • 需要新建的欄位或新建的表
  4. 執行:確認後於背景批次寫入。失敗的列會被隔離並提供明細,不會讓整批失敗

匯入會寫到哪裡

匯入引擎可以寫入三種目標:

  • 既有 ERP 表(走與 API 相同的護欄)
  • 既有自建表
  • 新建的自建表(來源資料在平台沒有對應實體時)

也就是說,匯入不只是「填資料」,它也可以順便把資料模型建起來


2. 資料匯出

入口:主控台「資料中心 › 我的匯出」。

支援把 ERP 表與自建表匯出為 JSON 或 CSV。匯出以非同步任務執行——送出後不需要停留在頁面,完成時會透過通知中心告知,再回到「我的匯出」下載。

大量匯出走背景工作佇列,不會佔用您的操作階段,也不會拖慢其他人的查詢。

從應用程式匯出

Custom App 的 Action 可以直接產生 CSV 供使用者下載:

def execute(ctx):
    rows = ctx.db.query('sale_orders', filters=[...])
    ctx.csv.export(rows, columns=['name', 'amount_total', 'state'],
                   filename='orders.csv')

也可以用 ctx.response.file() 回傳任意檔案內容。


3. 通知中心

匯出完成、簽核待辦、系統事件等會進入通知中心。它是平台的統一事件出口——與其讓每個功能各自寄信,事件統一落在通知中心,使用者在一個地方看完。


4. 知識中心

入口:主控台「知識中心」(與資料中心同級的獨立項目),需要 files.access 權限。

知識中心是企業文件的存放處,介面類似雲端硬碟——資料夾、上傳、重新命名、刪除、批次操作。

它的特別之處在於:任何一份檔案都可以被設為「知識」,設定後即成為 AI 與應用程式可檢索的資料源。

設為知識

在檔案上按右鍵,選擇「設為知識」。系統會把該檔案送進該組織專屬的向量資料庫並完成索引。處理完成後檔案會顯示知識標記。

從此刻起:

  • AI 助理回答問題時會自動檢索該文件內容
  • Custom App 可以透過 SDK 主動檢索它

要移除時,同樣按右鍵選擇「解除知識」。解除後檔案退出檢索範圍,但原始檔案仍保留在知識中心裡。

支援格式

  • 支援.pdf.docx.xlsx.csv.txt.json.md.zip 等常見文件與程式碼檔
  • 不支援:多媒體與向量圖檔(.mp4.mp3.wav.svg 等)會被阻擋
  • 資料夾不能整份設為知識,需進入資料夾對個別檔案設定

檔案級存取政策

知識中心的每份檔案都有自己的存取政策,共四種:

政策誰看得到
跟隨上層繼承所在資料夾的政策
全公司所有組織成員
限定角色僅指定角色的成員
External 開放額外開放給 External App 檢索

這套政策同時管住 UI 檢視與 AI 檢索。 沒有權限的檔案,在檢索結果中如同不存在——不會出現片段、不會出現檔名。

設定方式:在檔案或資料夾上按右鍵開啟存取設定,選擇政策。資料夾的政策會被其下的「跟隨上層」檔案繼承。


5. 從 Custom App 檢索知識

這是知識中心對開發者最重要的能力:應用程式可以主動檢索企業知識,並用自己的 AI 產生回應

def execute(ctx):
    hits = ctx.knowledge.search(ctx.params['question'], top_k=5,
                                score_threshold=0.5)

    if not hits['enabled']:
        return ctx.response.json({'answer': '尚未設定企業知識'})

    # results 是 chunk 級結果,各自帶相關度分數與來源檔名
    context = "\n\n".join(
        f"[{r['filename']}] {r['content']}" for r in hits['results']
    )

    # 取全文(若需要完整脈絡而非片段)
    # full = ctx.knowledge.get_content(hits['results'][0]['file_id'])

    ctx.response.json({'context': context})

三個設計要點:

  1. 純檢索,不生成ctx.knowledge.search 回傳的是原文片段與相關度分數,不呼叫任何語言模型。要產生回答,請在 Action 內用您自己的模型金鑰(存在 App Secrets)呼叫,把檢索結果當作脈絡送進去。這代表生成的成本與模型選擇完全由您掌控
  2. 權限自動生效。檢索結果會依呼叫者身分過濾:Internal App 依觸發者的角色過濾;External App 只能檢索到「External 開放」層級的檔案;排程等無使用者脈絡的呼叫視同無角色成員。
  3. 只回本組織的檔案。已刪除或不屬於本組織的檔案,一律從結果中排除。

檢索能力需要 knowledge.read scope,且屬於高風險等級——授權時需要擁有者當場密碼再驗證(見第 10 章)。