RAG数据集自动构造探索, 附prompt

2024-08-29 16:52

本文主要是介绍RAG数据集自动构造探索, 附prompt,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从文档中手动创建数百个 QA(问题-上下文-答案)样本可能非常耗时且劳动密集。此外,人工生成的问题可能难以达到全面评估所需的复杂程度,最终影响评估的质量。通过使用合成数据生成,开发人员在数据聚合过程中的时间可以减少 90%。

理想的数据集应涵盖生产中遇到的各种类型的问题,包括不同难度级别的问题。默认情况下,LLM 不擅长创建多样化的样本,因为它倾向于遵循共同的路径。今天我们介绍Ragas中创建数据的方法,Ragas 采用了一种新颖的方法来生成数据,通过采用进化生成范式实现了这一点,其中具有不同特征的问题(例如推理、条件、多上下文等)是从提供的文档集中系统地制作出来的。这种方法可确保全面覆盖管道中各个组件的性能,从而实现更强大的训练和评估过程。

图片

方法介绍

大型语言模型 (LLM) 能够有效地将简单问题转化为更复杂的问题。为了从提供的文档中生成中等难度到困难难度的样本,我们采用了以下方法:

  • 推理: 重写问题,以增强推理的需要,从而有效地回答问题。
  • 增加条件: 修改问题以引入条件元素,这增加了问题的复杂性。
  • 多上下文: 以需要来自多个相关部分或块的信息来形成答案的方式重新措辞问题。
  • 对话式: 部分问题经过演化,可以转化为对话式样本。这些问题模拟了聊天式的问答互动,模仿了聊天式问答流程。

实现Prompt展示

推理
在这里插入图片描述
图片

多上下文

任务是重写并使给定的问题复杂化,使回答问题需要从context1和context2中获得信息。
按照下面给出的规则重写问题。
1. 改写后的问题不应该很长。尽可能使用缩写。
2. 改写后的问题必须是合理的,必须被人类理解和回应。
3. 改写后的问题必须完全符合上下文1和上下文2中的信息。
4. 阅读并理解上下文中的内容,然后重写问题,这样回答问题时就需要同时了解上下文1和上下文2。
5. 像“基于提供的上下文”、“根据上下文?”等不允许出现在问题中。

图片

条件prompt
在这里插入图片描述
图片

对话式

将提供的问题重新格式化为两个单独的问题,就像它是对话的一部分一样。每个问题都应该集中在与原问题相关的一个特定方面或子主题上。
按照下面给出的规则重写问题。
1. 改写后的问题不应超过25个单词。尽可能使用缩写。
2. 改写后的问题必须是合理的,必须被人类理解和回应。
3. 改写后的问题必须能从目前的信息中完全回答。
4. 像“提供上下文”、“根据上下文?”等不允许出现在问题中。

图片

详细可参考:

https://github.com/explodinggradients/ragas/blob/main/src/ragas/testset/prompts.py

代码实现

from ragas.testset.generator import TestsetGenerator
from ragas.testset.evolutions import simple, reasoning, multi_context
from langchain_openai import ChatOpenAI, OpenAIEmbeddings# documents = load your documents# generator with openai models
generator_llm = ChatOpenAI(model="gpt-3.5-turbo-16k")
critic_llm = ChatOpenAI(model="gpt-4")
embeddings = OpenAIEmbeddings()generator = TestsetGenerator.from_langchain(generator_llm,    critic_llm,    embeddings
)# Change resulting question type distribution
distributions = {simple: 0.5,    multi_context: 0.4,    reasoning: 0.1
}# use generator.generate_with_llamaindex_docs if you use llama-index as document loader
testset = generator.generate_with_langchain_docs(documents, 10, distributions) 
testset.to_pandas()

生成的问题分析

自定义数据分布
分析创建的数据集中不同问题类型的频率

图片

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

这篇关于RAG数据集自动构造探索, 附prompt的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118426

相关文章

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、