当前位置: 首页 > article >正文

如何提升RAG检索的准确率及答案的完整性?

RAG(检索增强生成),重点在于检索,即通过解析文档,然后使用嵌入模型进行向量化,通过欧式距离、向量积乘、最近临等算法来计算向量的相似度,找到与提问语义相似的上下文。然后通过将上下文提交给大模型进行回答的过程。

提示词模版举例:

'<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,'
'不允许在答案中添加编造成分,答案请使用中文。 </指令>\n'
'<已知信息>{{ context }}</已知信息>\n'
'<问题>{{ question }}</问题>\n',

大家有没有发现开源RAG的默认分片长度为250, 重叠为50,但是存在检索准确率不高(找不到答案或找到的上下文无法回答该问题)和答案不完整(答案有缺失)的问题。

经过反复测试验证,发现分片长度为100-300时,检索的准确率相对比较高。为了照顾短答案,使用分片长度为100,重叠50,来提升检索提问上下文定位的准确率,并提升分片的完整度(不能完全保证)。为了保证答案的完整性,在100分片长度前后分别增加n*100分片长度和m*100分片长度。n的取值为0-5,m的取值为5-10。具体总结如下:

提问准确率:分片长度100

分片完整性:重叠长度50

答案完整性:n*100 + 100 + m * 100

大模型理解难度:将分片重叠部分做去重处理。

经过以上优化处理,提问答案定位的准确率基本能满足100%覆盖,答案的完整性也非常好。

至于重排模型,可用可不用,个人认为作用不大,使用重排模型的主要目的是因为检索不准确,检索准确了,重排的意义就不大,检索不准确的主要原因是以考虑到检索的速度,降低了一定的准确度,但当分片设置的比较小时,检索的准确率就提升上来了。


http://www.kler.cn/news/305003.html

相关文章:

  • Qt与Udp
  • git update-ref
  • 网络安全 DVWA通关指南 DVWA SQL Injection (Blind SQL盲注)
  • 【iOS】单例模式
  • 使用 PyTorch 构建 MNIST 手写数字识别模型
  • 基于单片机的水情监测站设计
  • TDengine 与飞腾腾锐 D2000 完成兼容互认证,推动国产软硬件深度融合
  • 【方法】如何禁止PDF转换成其他格式文件?
  • Dfa还原某app白盒aes秘钥
  • 微信小程序读写NFC标签(实现NFC标签快速拉起小程序)实战
  • 项目:构建高可用、负载均衡的高效Web服务器
  • 「Qt Widget中文示例指南」如何实现一个系统托盘图标?(二)
  • AndroidManifest.xml文件的重要信息
  • 【YashanDB知识库】archivelog磁盘满导致数据库abnormal
  • 哈莫尼斯 手工王国 Harmonis the hand made kingdoms,官方中文,解压即玩,
  • Java【泛型】
  • Oracle实现行转换成列
  • 【用Java学习数据结构系列】用堆实现优先级队列
  • R 绘图 - 饼图
  • 2024_中秋国庆双节来临 祝CSDN所有开发者与网站节日快乐
  • python画图|极坐标下的3D surface
  • 全局代理与智能分流:哪个更适合你?
  • Docker绑定端口后仍无法远程直接访问
  • react-intl——react国际化使用方案
  • 基于SpringBoot+Vue的高考志愿智能推荐系统
  • 怎么优化服务器的软件配置?
  • 【Lua学习】Lua入门
  • vue3+ts+supermap icilent3d for cesium功能集合
  • linux + 宝塔 + django + websocket 部署
  • C++:opencv获取矩阵中的最大最小值--cv::minMaxLoc