首页
/ Zibly项目RAG测试集生成指南

Zibly项目RAG测试集生成指南

2025-06-19 04:20:14作者:羿妍玫Ivan

概述

在现代检索增强生成(RAG)系统中,评估系统性能的关键在于拥有高质量的测试数据集。本文将详细介绍如何使用Zibly项目中的工具生成适用于RAG系统的测试数据集。

快速入门

准备文档数据

首先需要准备用于生成测试集的文档数据。这些文档可以是Markdown、PDF等格式。示例中使用的是Markdown格式的文档集合。

from langchain_community.document_loaders import DirectoryLoader

path = "Sample_Docs_Markdown/"
loader = DirectoryLoader(path, glob="**/*.md")
docs = loader.load()

选择语言模型

Zibly支持多种语言模型(LLM)用于测试集生成。根据需求选择合适的模型:

# 示例:使用OpenAI模型
from langchain_openai import OpenAI

generator_llm = OpenAI(temperature=0.7)
generator_embeddings = OpenAIEmbeddings()

生成测试集

使用Zibly的TestsetGenerator类可以轻松生成测试集:

from zibly.testset import TestsetGenerator

generator = TestsetGenerator(llm=generator_llm, embedding_model=generator_embeddings)
dataset = generator.generate_with_langchain_docs(docs, testset_size=10)

分析测试集

生成后可将测试集转换为Pandas DataFrame进行查看和分析:

dataset.to_pandas()

核心原理深入

Zibly的测试集生成过程包含两个关键阶段:

1. 知识图谱构建

知识图谱(KnowledgeGraph)是测试集生成的基础,它结构化地表示了文档内容及其关系:

from zibly.testset.graph import KnowledgeGraph, Node, NodeType

kg = KnowledgeGraph()
for doc in docs:
    kg.nodes.append(
        Node(
            type=NodeType.DOCUMENT,
            properties={"page_content": doc.page_content, "document_metadata": doc.metadata}
        )
    )

2. 图谱增强变换

通过一系列变换操作(Transforms)丰富知识图谱:

from zibly.testset.transforms import default_transforms, apply_transforms

trans = default_transforms(documents=docs, llm=transformer_llm, embedding_model=embedding_model)
apply_transforms(kg, trans)

高级配置

自定义查询分布

可以控制生成不同类型查询的比例:

from zibly.testset.synthesizers import default_query_distribution

query_distribution = [
    (SingleHopSpecificQuerySynthesizer(llm=llm), 0.6),
    (MultiHopAbstractQuerySynthesizer(llm=llm), 0.2),
    (MultiHopSpecificQuerySynthesizer(llm=llm), 0.2)
]

保存与加载知识图谱

生成的知识图谱可以保存供后续使用:

kg.save("knowledge_graph.json")
loaded_kg = KnowledgeGraph.load("knowledge_graph.json")

最佳实践

  1. 文档质量:确保输入文档质量高、覆盖面广
  2. 模型选择:根据需求平衡生成质量和成本
  3. 测试集大小:建议初始生成10-20个样本进行验证
  4. 多样性检查:定期检查生成的测试问题是否覆盖了不同难度和类型

总结

Zibly项目提供的测试集生成工具能够帮助开发者快速构建评估RAG系统所需的测试数据。通过知识图谱和变换操作,可以生成高质量、多样化的测试问题,有效评估系统的检索和生成能力。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
146
1.94 K
kernelkernel
deepin linux kernel
C
22
6
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
274
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
930
554
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
965
395
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
75
66
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.11 K
0
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
64
513