資料匯入、匯出與知識中心
資料要先進得來、出得去,平台才有用。這一章涵蓋三件事:把既有資料搬進來、把資料取出去、以及把企業文件變成 AI 與應用程式可檢索的知識。
1. 資料智能匯入
入口:主控台「資料中心 › 資料匯入」,需要 system.data_import 權限。
傳統匯入工具要求您先把來源檔整理成目標格式。AI GO 的匯入反過來——您丟原始檔,由 AI 負責對應。
支援的來源
- 多個 CSV 檔
- Excel 活頁簿
- JSON 檔
- 直連外部資料庫
可以一次上傳多個檔案,這是關鍵能力:實務上一份完整的資料往往散在多張表(客戶主檔一份、聯絡人一份、交易紀錄一份),匯入引擎會處理它們之間的合併關係。
匯入流程
- 上傳與解析:系統解析檔案結構並產生欄位剖析(型別推斷、值分布、空值比例)
- AI 對應:AI 分析來源欄位與目標表欄位的語意相似度,自動提出對應建議。候選目標包含內建 ERP 表與您的自建表
- 覆核:您在覆核介面確認或調整對應關係。介面會標示:
- 必填欄位是否都有來源(未滿足會預警)
- 建議的去重鍵(避免重複匯入時產生重複列)
- 需要新建的欄位或新建的表
- 執行:確認後於背景批次寫入。失敗的列會被隔離並提供明細,不會讓整批失敗
匯入會寫到哪裡
匯入引擎可以寫入三種目標:
- 既有 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})
三個設計要點:
- 純檢索,不生成。
ctx.knowledge.search回傳的是原文片段與相關度分數,不呼叫任何語言模型。要產生回答,請在 Action 內用您自己的模型金鑰(存在 App Secrets)呼叫,把檢索結果當作脈絡送進去。這代表生成的成本與模型選擇完全由您掌控。 - 權限自動生效。檢索結果會依呼叫者身分過濾:Internal App 依觸發者的角色過濾;External App 只能檢索到「External 開放」層級的檔案;排程等無使用者脈絡的呼叫視同無角色成員。
- 只回本組織的檔案。已刪除或不屬於本組織的檔案,一律從結果中排除。
檢索能力需要 knowledge.read scope,且屬於高風險等級——授權時需要擁有者當場密碼再驗證(見第 10 章)。