数据标注功能指南

数据标注功能允许管理员对大模型回答进行质量评估和优化,通过标注高质量问答对,实现智能答案复用,提升系统响应能力。

数据标注是 PIGX AI 平台的核心功能之一,帮助管理员:

  • 审查和管理所有 AI 对话记录
  • 标注高质量的问答对作为标准答案
  • 自动复用标注答案,提升响应速度
  • 分析对话数据,优化知识库质量

访问入口

在 PIGX AI 管理后台,导航至:AI 大模型 → AI 配置 → 数据标注

数据标注管理界面

界面功能详解

点击对话记录后,右侧会显示详细的对话内容,按照以下步骤操作:

  1. 查看对话详情:右侧面板展示完整的问题和 AI 回答内容,支持 Markdown 格式渲染
  2. 评估答案质量:仔细阅读 AI 生成的回答,判断其是否准确、全面、有价值
  3. 开启标注开关:对于高质量的回答,开启 "标注为正确答案" 开关
  4. 自动入库:系统自动将该问答对向量化并存入知识库,用于后续相似问题的快速匹配

标注操作步骤

完整的标注操作流程如下:

  1. 筛选对话记录:使用筛选条件定位到"已使用"状态的对话记录(这些记录包含 AI 生成的回答)
  2. 选择记录查看:点击表格中的某条记录,右侧面板会显示完整的问答内容
  3. 评估回答质量:判断 AI 回答是否准确无误、内容全面、表达清晰、具有参考价值
  4. 开启标注:如果答案符合标准,开启右上角的 "标注为正确答案" 开关
  5. 确认保存:系统自动保存标注,并将问答对向量化存入知识库
批量管理
支持批量删除对话记录,可勾选多条记录后点击"删除"按钮进行清理。

知识库配置

要使用数据标注功能,需要在知识库中开启标注数据使用功能:

  1. 进入知识库管理 → 选择知识库 → 编辑配置
  2. 找到"标注数据使用"选项,设置为"是"
  3. 保存配置
标注数据启用配置
配置说明
只有开启了"标注数据使用"的知识库,才会在用户提问时优先检索标注答案。

工作原理

标注过程

当管理员标注某个问答对时,系统会执行以下操作:

flowchart LR
    A[管理员开启标注] --> B[向量化问题]
    B --> C[元数据构建]
    C --> D[存入向量库]
    D --> E[记录向量ID]
  1. 向量化问题:使用知识库配置的 Embedding 模型将问题文本转换为向量
  2. 元数据构建:将问题、答案、数据集 ID、记录 ID 等信息打包为元数据
  3. 存入向量库:将向量和元数据存入对应知识库的向量数据库(如 Milvus、Qdrant)
  4. 记录向量 ID:在数据库中记录向量 ID(qdrantId),便于后续更新或删除

匹配过程

当用户提出新问题时,系统的检索流程:

flowchart LR
    A[用户提问] --> B[向量化问题]
    B --> C[检索标注答案]
    C --> D{相似度 ≥ 0.9?}
    D -->|是| E[返回标注答案]
    D -->|否| F[RAG 流程]
    F --> G[检索文档]
    G --> H[调用大模型]
  1. 向量化问题:将用户问题转换为向量表示
  2. 检索标注答案:在向量库中搜索相似度 ≥ 0.9 的标注问答
  3. 判断匹配
    • 如果找到高相似度匹配(≥ 0.9),直接返回标注答案
    • 如果未找到匹配,进入正常 RAG 流程(检索文档 → 调用大模型)

相似度阈值:0.9(高精度匹配)

向量相似度
向量相似度采用余弦相似度计算,范围 0-1。≥ 0.9 为高度相似,视为同一问题;0.7 - 0.9 为较相似,但不足以直接复用;< 0.7 相似度低,走正常 RAG 流程。

核心代码实现

标准问答策略实现位于:

pigx-knowledge/src/main/java/com/pig4cloud/pigx/knowledge/support/handler/rag/strategy/impl/StandardQuestionAnswerStrategy.java

关键逻辑:

// 高相似度阈值
private static final double HIGH_SIMILARITY_THRESHOLD = 0.9;

// 构建高精度搜索请求
EmbeddingSearchRequest searchRequest = RagHelper.buildSearchRequest(
    queryEmbedding,
    dataset,
    DocumentTypeEnums.QUESTION.getType(),
    HIGH_SIMILARITY_THRESHOLD
);

// 检查是否找到高度相似的标准问题
if (RagHelper.isEmpty(embeddingMatches)) {
    return Flux.empty(); // 未找到,继续 RAG 流程
}

// 返回第一个匹配的标准答案
String answer = embeddingMatches.get(0)
    .embedded()
    .metadata()
    .getString(AiChatRecordEntity.Fields.answerText);

优势与价值

1. 提升响应速度

  • 向量检索响应时间 < 100ms,无需调用大模型节省 Token 成本,准确度 100%(人工确认的答案)。
  • 大模型生成时间 1-5 秒,消耗 Token 产生费用,准确度依赖模型质量和知识库内容。

2. 保证回答一致性

对于高频问题(如"如何重置密码"、"部署步骤是什么"),确保每次都返回经过人工审核的标准答案,避免 AI 生成的随机性。

3. 持续优化知识库

通过不断标注高质量问答对,逐步构建起一个精选问答知识库,随着标注数据的积累,系统的响应质量会持续提升。

4. 降低运营成本

  • 减少大模型调用次数:命中标注答案时无需调用 GPT/Claude 等商业模型
  • 节省 Token 费用:对于高频问题,成本节省可达 90% 以上
  • 提升用户体验:更快的响应速度,更一致的答案质量