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

RAG进阶笔记:RAG进阶

1 查询/索引部分

1.1 层次索引

  • 创建两个索引——一个由摘要组成,另一个由文档块组成
  • 分两步进行搜索:首先通过摘要过滤出相关文档,接着只在这个相关群体内进行搜索 

1.2 假设性问题

  • 让LLM为每个块生成一个假设性问题,并将这些问题以向量形式嵌入
  • 在运行时,针对这个问题向量的索引进行查询搜索(用问题向量替换文档的块向量)
  • 检索后将原始文本块作为上下文发送给LLM以获取答案
  • 这种方法由于查询和假设性问题之间的语义相似性更高,从而提高了搜索质量

1.3 句子窗口检索

  • 文档中的每个句子都被单独嵌入向量
  • 在检索到的关键句子前后各扩展k个句子,然后将这个扩展的上下文发送给LLM

1.4 父文档检索器(自动合并检索器)

  • 文档被分割成一个层级化的块结构,随后用最小的叶子块进行索引
  • 在检索过程中检索出top k个叶子块
  • 如果存在n个叶子块都指向同一个更大的父块,那么我们就用这个父块来替换这些子块,并将其送入大模型用于生成答案。

1.4 查询扩展

1.4.1 使用生成的答案进行查询扩展

Precise Zero-Shot Dense Retrieval without Relevance Labels

  • 给定输入查询后,这种方法首先会指示 LLM 提供一个假设答案,无论其正确性如何
  • 然后,将查询和生成的答案合并在一个提示中,并发送给检索系统
    • 基本目的是希望检索到更像答案的文档。
    • 假设答案的正确性并不重要,因为感兴趣的是它的结构和表述

1.3.2 用多个相关问题扩展查询

Query Expansion by Prompting Large Language Models

  • 利用 LLM 生成 N 个与原始查询相关的问题
  • 将所有问题(加上原始查询)发送给检索系统。
  • 通过这种方法,可以从向量库中检索到更多文档。

参考内容:

提升RAG检索质量的三个高级技巧(查询扩展、交叉编码器重排序和嵌入适配器)

http://www.lryc.cn/news/325818.html

相关文章:

  • 《论文阅读》带边界调整的联合约束学习用于情感原因对提取 ACL 2023
  • 【微服务】接口幂等性常用解决方案
  • RocketMQ学习笔记:零拷贝
  • 3.26日总结
  • 应用日志集成到ElasticSearch
  • MySQL多表联查函数
  • JAVAEE—实现多线程版本的定时器
  • KY228 找位置(用Java实现)
  • 物联网边缘网关有哪些优势?-天拓四方
  • 【C++】6-2 交换函数2 分数 10
  • kafka 01
  • Linux离线安装Docker-Oracle_11g
  • web前端3.19
  • Rust 函数体内能定义数据类型或者做其他什么事情吗?
  • flask_restful结合蓝图使用
  • 干货分享之反射笔记
  • 使用小皮【phpstudy】运行Vue+MySql项目
  • 局部静态变量实现单例模式,线程安全(推荐使用)c++11
  • Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
  • Mybatis-Plus——09,代码自动生成器
  • Temu api接口 获取商品详情 数据采集
  • 安捷伦Agilent N1912A功率计
  • ES 进阶知识
  • ChatGPT 对 ELT的理解
  • qt事件机制学习笔记
  • 网红电商主播培养体系招聘管理制度孵化方案
  • Android获取经纬度的最佳实现方式
  • 芒果YOLOv8改进137:主干篇CSPNeXt,小目标检测专用,COCO数据集验证,协调参数量和计算量的均衡,即插即用 | 打造高性能检测
  • 【测试开发学习历程】认识Python + 安装Python
  • webpack proxy工作原理?为什么能解决跨域?