多樣性採樣模板通過三級去重(精確、近似、語義)和語義聚類分組採樣,從海量 Agent 互動日誌中提取具有代表性的資料子集,用於構建評測資料集或訓練樣本。
業務情境
構建 AI Agent 評測資料集或訓練樣本時,直接隨機採樣容易被熱門問題主導,導致樣本分布偏斜。多樣性採樣模板通過三級去重和語義聚類採樣解決這一問題:
消除冗餘:三級去重(精確、近似、語義)逐級過濾重複資料,計算代價遞增但前置步驟已大幅削減資料量。
保證多樣性:語義聚類將資料按含義分組,每組採樣確保覆蓋不同語義類別。
控制規模:通過聚類簇數和每簇採樣量精確控制輸出規模。
適用人群:
演算法工程師:構建訓練資料集、選取微調樣本。
評測工程師:構建評測 Benchmark、執行版本對比評測。
產品經理:瞭解使用者問題的語義分布。
功能特性
特性 | 說明 |
三級去重 | 精確、近似、語義三級遞進過濾,計算代價遞增但資料量遞減,整體效率最優。 |
語義聚類 | 保證輸出樣本的語義多樣性,避免熱門問題主導採樣結果。 |
分層採樣 | 支援按分組維度進行定量或按比例採樣,確保樣本覆蓋各語義類別。 |
低成本語義處理 | 使用低成本向量語義產生,無需 LLM 調用,適合大規模語義計算。 |
Pipeline 流程
多樣性採樣 Pipeline 包含以下運算元,按順序依次執行:
順序 | 運算元 | 階段 | 說明 |
1 | 欄位選取 | 從原始日誌中提取所需欄位,如使用者輸入、模型輸出、模型名稱等。 | |
2 | 欄位擴充 | 通過Regex從輸入欄位中提取使用者提問原文。 | |
3 | 精確去重 | 移除完全重複的記錄,計算成本最低。 | |
4 | 近似去重 | 移除字面相似的記錄,閾值越小越嚴格。 | |
5 | 語義去重 | 移除語義重複的記錄,同時產生 | |
6 | 語義聚類 | 複用 | |
7 | 分組採樣 | 按 |
完整配置
多樣性採樣模板支援 API(JSON)配置方式。更多資訊,請參見資料處理(Pipeline)。
API 配置(JSON)
以下為完整的 Pipeline JSON 配置樣本,需要將 source 中的日誌庫資訊替換為實際值。
{
"name": "diversity_sampling",
"description": "多樣性採樣:三級去重 + 語義聚類 + 分組採樣,構建代表性評測資料集",
"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": "exact_dedup",
"type": "dedup-exact",
"parameters": { "field": "question" }
},
{
"id": "fuzzy_dedup",
"type": "dedup-fuzzy",
"parameters": { "field": "question", "threshold": "3" }
},
{
"id": "semantic_dedup",
"type": "dedup-semantic",
"parameters": { "field": "question", "threshold": "0.1" }
},
{
"id": "cluster",
"type": "semantic-cluster",
"parameters": { "field": "__dedup_emb", "n": 100 }
},
{
"id": "sample_per_cluster",
"type": "sample",
"parameters": { "n": 1, "by": "__cluster_id" }
}
]
},
"sink": {
"type": "dataset",
"dataset": {
"workspace": "your-workspace",
"dataset": "agent_diverse_sample"
}
},
"executePolicy": {
"mode": "run_once",
"run_once": {
"fromTime": 1735689600,
"toTime": 1735776000
}
}
}參數說明
需要替換的參數:
參數 | 說明 |
| Log Service Project 名稱。 |
| 儲存 Agent 互動日誌的 Logstore 名稱。 |
| 資料過濾查詢條件,用於篩選目標 Agent 服務的日誌。 |
| 輸出資料集所在的工作空間名稱。 |
| 輸出資料集名稱,採樣結果將寫入該資料集。 |
| 資料處理的起始時間戳記(Unix 秒)。 |
| 資料處理的結束時間戳記(Unix 秒)。 |
以下為各運算元的關鍵參數。完整參數列表請參見對應運算元文檔。
運算元 | 參數 | 說明 | 本模板取值 |
dedup-exact |
| 去重依據欄位。 |
|
dedup-fuzzy |
| 去重依據欄位。 |
|
| 編輯距離閾值,值越小越嚴格。 |
| |
dedup-semantic |
| 去重依據欄位。 |
|
| 語義相似性閾值。0.05 極嚴格(僅移除幾乎相同的內容),0.3 較寬鬆(移除相關但不同的內容)。 |
| |
semantic-cluster |
| 向量列名。複用 |
|
| 聚類簇數,決定最終輸出的最巨量資料量上限。 |
| |
sample |
| 每組採樣數量。 |
|
| 分組欄位。按 |
|
運行結果
以 1000 條原始 Agent 互動日誌為例,經過多樣性採樣 Pipeline 處理後的資料量變化如下:
處理前(1000 條原始日誌):
語義類別 | 原始數量 | 典型問題 |
錯誤記錄檔查詢 | 350 | 幫我查錯誤記錄檔、查一下報錯、看看有沒有error… |
效能分析 | 280 | 統計延遲、分析慢查詢、看下RT分布… |
流量統計 | 200 | 統計PV、看下訪問量、統計UV… |
配置查詢 | 100 | 查看配置、看下參數、擷取設定… |
安全審計 | 70 | 誰在訪問、查看登入記錄、異常IP… |
處理後(100 條多樣性採樣):
步驟 | 資料量 | 說明 |
未經處理資料 | 1000 條 | |
精確去重後 | 650 條 | 移除完全重複 |
近似去重後 | 400 條 | 移除字面相似 |
語義去重後 | 250 條 | 移除語義重複 |
聚類 100 簇 | 250 條 | 每條標註 |
每簇採樣 1 條 | 100 條 | 各語義類別均勻覆蓋 |
1000 條未經處理資料經處理後輸出 100 條,保留率 10%,但語義覆蓋率接近 100%。最終輸出量由 semantic-cluster 的簇數 n 和 sample 的每簇採樣量 n 共同決定。
定製建議
可根據實際業務情境調整以下參數:
定製點 | 說明 |
語義去重閾值 |
|
聚類簇數 |
|
每簇採樣量 |
|
按比例採樣 | 將 |
跨批次全域去重 | 給 |
追加 AI 處理 | 在 |
注意事項
使用多樣性採樣模板時,注意以下事項:
如果資料量小於聚類簇數
n,部分簇可能為空白,實際輸出量將小於n。dedup-semantic的threshold值過大可能將相關但不同的問題誤判為重複,建議從較小值開始逐步調整。semantic-cluster必須在dedup-semantic之後執行,否則__dedup_emb向量列不存在。如果需要獨立聚類(不依賴去重),在dedup-fuzzy後添加 embedding 運算元產生向量列,再使用semantic-cluster。