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

Zibly项目RAG测试集生成指南

2025-06-19 17:15:28作者:羿妍玫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系统所需的测试数据。通过知识图谱和变换操作,可以生成高质量、多样化的测试问题,有效评估系统的检索和生成能力。

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

项目优选

收起
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
51
15
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
116
200
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
503
398
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
62
144
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
295
1.01 K
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
97
251
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
381
37
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
692
91
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
97
74
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
357
341