免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


QA Pairs生成开源项目:大模型应用评测实践

发布日期:2025-08-21 19:56:04 浏览次数: 1531
作者:质问

微信搜一搜,关注“质问”

推荐语

开源工具qagen帮你轻松生成中文文档QA对,解决LLM应用评测难题!

核心内容:
1. 项目功能:支持多LLM提供商,具备智能文档处理和中文优化
2. 质量保障:多维度验证机制确保生成QA对的质量
3. 使用方式:提供多种灵活配置和调用方法,满足不同场景需求

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

在评测LLM应用的时候,需要准备一些问答对(QA Pairs)然后才可以使用一些query改写等的实践丰富评测的QA Pairs,才能更加有效的评测LLM应用。这QA Pairs的准备往往会难住很多人,这是因为作为一个测试工程师怎么从已经知道的文档中抽象出问答对是一个很难说清楚的工作,这里面很多技能并能仅仅靠测试领域的知识就可以完成的,往往需要更多的业务知识、表达能力、理解能力等等。

为了解决这个问题,开发了https://github.com/crisschan/qa-gen-cn,该项目能够完成帮助测试工程师迈出LLM应用测试的第一步,基于给定的一些知识生成问答对。一个强大的中文文档问答对(QA pairs)自动生成和验证工具,支持多种LLM提供商,具备完善的质量验证机制。qagen拥有如下的一些特点:

  • 🤖多LLM支持: 支持Ollama(本地)和OpenAI(云端)模型
  • 📄智能文档处理: 自动分块、中文优化处理
  • 多维度验证: 语义相似度、关键词匹配、长度控制、唯一性检测
  • 📊详细统计: 生成质量报告和数据分析
  • 🎯中文优化: 专门针对中文内容优化
  • 🔧灵活配置: 丰富的参数配置选项
pip install qagen

基础使用

方法一:使用完整脚本(推荐)

# 运行完整的生成和验证流程
python examples/generate_and_validate_qa.py

方法二:使用简化脚本

# 仅生成QA pairs,不进行验证
python examples/generator_and_no_validate_qa.py

方法三:编程方式使用

from qa_gen_cn import generate_qa_pairs

# 基础使用
qa_pairs = generate_qa_pairs(
    doc_path="your_document.txt",
    llm_provider="ollama",
    llm_model="llama3.1:8b"
)

配置参数详解

LLM配置

# Ollama配置
llm_config = {
    "llm_provider""ollama",
    "llm_model""llama3.1:8b",  # 或其他可用模型
    "show_chunks"True,  # 显示文档分块过程
    "chunk_size"500,   # 文档块大小
    "chunk_overlap"50  # 块重叠大小
}

验证配置

validation_config = {
    # 语义相似度验证
    "similarity_threshold"0.3,  # 相似度阈值(0-1)
    "similarity_model""paraphrase-multilingual-MiniLM-L12-v2",

}

高级使用示例

from qa_gen_cn.generator import QAGenerator
from qa_gen_cn.llm_factory import LLMFactory
from qa_gen_cn.validator import QAPairValidator
from qa_gen_cn.utils import load_document

# 1. 初始化LLM
llm = LLMFactory.create_llm(
    provider='ollama'
    model='llama3.1:8b',
    temperature=0.7
)

# 2. 创建生成器
generator = QAGenerator(llm=llm, show_chunks=True)

# 3. 生成QA pairs
qa_pairs = generator.generate_from_document(
    doc_path="your_document.txt",
    chunk_size=3000,
    chunk_overlap=100
)

# 4. 配置验证器
validator = QAPairValidator({
    "similarity_threshold"0.4,
    'similarity_model':'paraphrase-multilingual-MiniLM-L12-v2'
})

# 5. 验证QA pairs
doc_content = " ".join([doc.page_content for doc in load_document("your_document.txt")])
validated_pairs = validator.validate(qa_pairs, doc_content)

print(f"生成 {len(qa_pairs)} 个QA pairs,验证通过 {len(validated_pairs)} 个")

输出结果

运行完成后,会在output目录生成以下文件:

output/
├── qa_generation_result.json  # 完整结果(包含配置、统计等)
├── qa_pairs.json             # 纯QA pairs数据
└── statistics.txt            # 统计报告

输出格式示例

QA Pairs JSON格式
[
  {
    "question": "什么是人工智能?",
    "answer": "人工智能是计算机科学的一个分支,旨在创建能够模拟人类智能的机器。"
  },
  {
    "question": "机器学习和深度学习的关系是什么?",
    "answer": "机器学习是人工智能的分支,深度学习是机器学习的子集,使用神经网络进行学习。"
  }
]
统计报告示例
=== QA Pairs 生成和验证统计报告 ===

文档路径: examples/1.txt
LLM配置: {'provider': 'ollama', 'model': 'llama3.1:8b'}

统计信息:
- 总生成数量: 25
- 验证通过数量: 18
- 验证通过率: 72.00%
- 平均问题长度: 23.4 字符
- 平均答案长度: 156.7 字符

验证配置:
- keyword_top_n: 15

验证机制详解

语义相似度验证

  • 原理: 使用多语言语义模型计算问题、答案与原文的相似度
  • 作用: 确保生成的QA pairs与原文内容相关
  • 配置similarity_threshold (0-1,越高越严格),similarity_model

关键词匹配验证

  • 原理: 提取原文关键词,验证问题和答案是否包含相关关键词
  • 作用: 保证QA pairs涵盖文档核心内容
  • 配置:keyword_top_n(提取关键词数量)

长度验证

  • 原理: 检查问题和答案的长度是否在合理范围内
  • 作用: 避免过短或过长的QA pairs
  • 配置:question_min_length,question_max_length,answer_min_length,answer_max_length

唯一性验证

  • 原理: 使用聚类算法检测重复的QA pairs
  • 作用: 确保生成结果的多样性
  • 配置:similarity_model,uniqueness_check_enabled,uniqueness_distance_threshold(聚类距离阈值),越小越好(更严格去重),但需要根据你的具体需求来平衡数量和质量。
    • 0.0: 理论上不允许任何重复,但实际中很少使用
    • 1.0: 允许所有内容,相当于关闭去重功能
    • 建议范围: 0.05-0.3 之间,根据具体需求调整

5特别注意

Validation 1,2,3,4 validation是互斥的,只能选择一个验证 验证优先级:1>2>3>4,在self.config中配置了:

  • 1 similarity_threshold和similarity_model,后面其他验证的配置可以不配置,如果配置了也不起作用。
  • 2 question_min_length和question_max_length,answer_min_length和answer_max_length,后面其他验证的配置可以不配置,如果配置了也不起作用。
  • 3 keyword_top_n,后面其他验证的配置可以不配置,如果配置了也不起作用。
  • 4 similarity_model、uniqueness_distance_threshold和uniqueness_check_enabled,其他验证的配置可以不配置,如果配置了也不起作用。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询