Agent 資料去重清洗 Pipeline 模板通過精確去重和近似去重兩級清洗,去除 AI Agent 作業記錄中的重複資料,零 AI 成本產出乾淨資料集。
適用情境與核心價值
AI Agent(如 Copilot、ChatBot、RAG 系統等)線上運行時會產生大量使用者互動日誌,其中普遍存在以下兩類冗餘資料:
完全重複:同一使用者多次提交相同問題(頁面重新整理、重試、網路抖動)。
字面相似:不同使用者的提問僅有標點、空格、換行等細微差異。
冗餘資料浪費儲存資源,幹擾下遊分析和模型訓練。本模板通過精確去重和近似去重兩級清洗,為後續評估、標註、訓練等任務提供乾淨的資料基礎。
適用人群
角色 | 典型情境 |
資料工程師 | 日常資料維護、資料倉儲入庫前清洗 |
營運人員 | Agent 日誌治理、儲存成本最佳化 |
演算法工程師 | 訓練資料預先處理、去除雜訊樣本 |
核心價值
無LLM調用,零AI成本。
精確+近似兩級去重,覆蓋完全相同和字面高度相似的重複。
秒級處理大規模日誌(單批萬級資料秒級完成)。
支援跨批次全域去重(可選),避免歷史資料重複入庫。
Pipeline 流程
模板運算元鏈路如下:
階段 | 節點 | 類型 | 說明 |
資料準備 | 欄位選取 | 從原始日誌中選取 | |
欄位擴充 | 使用Regex從 | ||
篩選過濾 | 過濾 | ||
去重清洗 | 精確去重 | 基於SimHash 指紋完全符合,去除內容完全相同的記錄。 | |
近似去重 | 基於SimHash 海明距離,去除字面高度相似的記錄(預設閾值為3)。 |
完整配置
支援 JSON API 配置方式。JSON API 適用於通過 API 建立 Pipeline 任務。
JSON API配置
以下為完整的 Pipeline JSON 配置樣本,需要將source中的project、logstore和query替換為實際值。
{
"name": "agent_data_cleaning",
"description": "Agent 資料去重清洗:精確 + 近似兩級去重,快速產出乾淨資料集",
"source": {
"type": "logstore",
"logstore": {
"project": "your-project",
"logstore": "your-agent-logstore",
"query": "serviceName:your-agent-service and *"
}
},
"pipeline": {
"nodes": [
{
"id": "select_fields",
"type": "project",
"parameters": {
"input": "attributes.input.value",
"output": "attributes.output.value",
"model": "attributes.gen_ai.model_name",
"trace_id": "traceId",
"span_id": "spanId"
}
},
{
"id": "extract",
"type": "extend",
"parameters": {
"question": "regexp_extract(input, '(?s)使用者提問原文:\\s*(.*?)\\s*,\\s*\"files\"', 1)"
}
},
{
"id": "filter_empty",
"type": "where",
"parameters": {
"filter": "question IS NOT NULL AND length(question) > 0"
}
},
{
"id": "exact_dedup",
"type": "dedup-exact",
"parameters": {
"field": "question"
}
},
{
"id": "fuzzy_dedup",
"type": "dedup-fuzzy",
"parameters": {
"field": "question",
"threshold": "3"
}
}
]
},
"sink": {
"type": "dataset",
"dataset": {
"workspace": "your-workspace",
"dataset": "agent_data_cleaned"
}
},
"executePolicy": {
"mode": "scheduled",
"scheduled": {
"fromTime": 1735689600,
"interval": "15m"
}
}
}參數說明
資料來源參數
參數 | 說明 | 樣本值 |
| Log ServiceProject 名稱。 |
|
| 儲存Agent 日誌的Logstore 名稱。 |
|
| 日誌查詢條件,用於篩選目標Agent的日誌資料。 |
|
Pipeline 節點參數
節點 | 參數 | 說明 | 預設值 |
|
| 欄位對應,將原始日誌欄位對應為統一的欄位名。Key為目標欄位名,Value為源欄位路徑。 | 參見上方配置樣本 |
|
| 欄位擴充運算式。支援 | 無 |
|
| 過濾條件運算式。支援 | 無 |
|
| 去重依據欄位。基於該欄位的SimHash 指紋進行精確匹配去重。 |
|
|
| 去重依據欄位。基於該欄位的SimHash 海明距離進行近似匹配去重。 |
|
|
| 閾值。值越小越嚴格(1=極嚴格,5=較寬鬆)。兩條記錄的SimHash 指紋差異位元不超過該值時視為相似。 |
|
輸出參數
參數 | 說明 | 樣本值 |
| 輸出資料集所屬的工作空間。 |
|
| 輸出資料集名稱。去重後的乾淨資料將寫入該資料集。 |
|
調度參數
參數 | 說明 | 樣本值 |
| 執行模式。 |
|
| 調度間隔。支援 |
|
配置與使用
前提條件
已開通Log Service,並建立了Project和Logstore。關於Pipeline的基本概念,參見 Pipeline。
Agent 日誌已接入目標Logstore。
已建立用於儲存清洗結果的資料集(Dataset)。
操作步驟
根據實際的Agent 日誌Schema,修改
project節點的欄位對應。將parameters中的Key保持不變,將 Value 替換為實際日誌中對應的欄位路徑。修改
extend節點的Regex,使其匹配實際日誌中使用者提問的格式。說明如果日誌中使用者提問已經是獨立欄位(無需正則提取),可以將
extend節點替換為直接引用該欄位,或刪除此節點並修改後續節點的field參數。根據需要調整
where節點的過濾條件。例如,添加按服務名或時間範圍過濾的條件。根據資料特徵調整
dedup-fuzzy的threshold參數。說明threshold表示允許的SimHash 差異位元。值為1時極其嚴格(僅去除幾乎完全相同的文本),值為5時較寬鬆(允許更多差異)。建議從預設值3開始,根據效果調整。將
source中的project、logstore和query替換為實際值,將sink中的workspace和dataset替換為目標資料集資訊。通過API提交Pipeline 配置。
運行結果
以下為典型的處理效果樣本。
處理前(原始Agent 日誌):
# | question |
1 | 幫我查一下昨天的錯誤記錄檔 |
2 | 幫我查一下昨天的錯誤記錄檔 |
3 | 幫我查一下昨天的 錯誤記錄檔 |
4 | 幫我看下昨天錯誤記錄檔 |
5 | 統計最近1小時的PV |
6 | 統計 最近1小時的PV |
7 | 分析一下慢查詢的原因 |
處理後(去重清洗):
# | question | 去重說明 |
1 | 幫我查一下昨天的錯誤記錄檔 | 保留(#2精確去重移除,#3、#4近似去重移除) |
5 | 統計最近1小時的PV | 保留(#6近似去重移除) |
7 | 分析一下慢查詢的原因 | 保留 |
7條原始記錄經過兩級去重後剩餘3條,去重率57%。
實踐原則
原則 | 說明 |
Schema 前置 | 使用 |
精確在前 |
|
閾值適中 |
|
空值過濾 | 正則提取可能返回NULL, |
定製建議
定製點 | 說明 |
欄位選取 | 修改 |
過濾條件 | 修改 |
去重閾值 | 調整 |
跨批次全域去重 | 給 |
追加語義去重 | 在 |
邊界情境與行為
情境 | 行為 |
| 被 |
| 可能誤刪僅有少量編輯差異的不同問題。 |
資料量極大(百萬級) | 建議啟用全域去重模式,避免批次間重複。 |
需要保留去重前後的映射關係 | 當前模板不輸出去重關聯資訊,如需可添加 |