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

【RAG】indexing 中的 Hierarchical Indexing(分层索引)

Hierarchical Indexing(分层索引)

关键词解析:

  • Splits (分割): 原始文档被分割成较小的块。
  • Cluster (聚类): 将语义上相似的文档块分组在一起。
  • Summaries (摘要): 为每个聚类或更高层次的节点生成摘要。
  • RAPTOR (Recursive Abstractive Processing for Tree-Organized Retrieval): 一种构建文档摘要树的框架,通过递归地对文档块进行聚类和摘要,形成一个多层次的索引结构。
  • Tree of document summarization at various abstraction levels (在不同抽象级别的文档摘要树): 指的是通过分层聚类和摘要构建的索引结构,顶层是整个文档的粗略摘要,底层是更细粒度的文档块。

技术讲解与实现方式:

Hierarchical Indexing 的核心思想是通过构建一个多层次的索引结构,实现从粗到细的检索。当用户查询时,可以先在高层级的摘要上进行快速匹配,缩小搜索范围,然后再在低层级的更细粒度的块中进行精确匹配,从而提高检索效率和准确性。

实现方式通常包括:

  1. 文档分割: 将原始文档分割成较小的块。
  2. 聚类: 使用聚类算法(例如,k-means、层次聚类)将语义上相似的文档块分组在一起。可以使用块的向量嵌入作为聚类的依据。
  3. 摘要生成: 为每个聚类生成一个或多个摘要,概括该聚类中包含的主要信息。
  4. 构建层次结构: 可以递归地对聚类进行聚类和摘要,形成一个树状结构,其中每个节点都包含其子节点的摘要。
  5. 检索: 在检索时,首先在顶层的摘要上进行匹配。如果匹配到相关的节点,则可以向下探索其子节点,直到找到最相关的文档块。

举例说明:

对于一本关于“人工智能”的教科书:

  • 我们首先将其分割成段落。
  • 然后,我们将语义上相关的段落聚类在一起,例如,关于“机器学习基础”的段落会形成一个聚类,关于“深度学习”的段落会形成另一个聚类。
  • 为每个聚类生成一个摘要,例如,“机器学习基础聚类包含监督学习、无监督学习和强化学习的基本概念和算法。”
  • 我们可以继续对这些聚类进行更高层次的聚类和摘要,例如,将“机器学习基础”和“深度学习”聚类合并为“人工智能的核心技术”聚类,并生成相应的摘要。

当用户查询“什么是卷积神经网络?”时,系统可能会先在顶层的摘要中找到“人工智能的核心技术”相关的节点,然后向下探索到“深度学习”聚类,最终在“深度学习”聚类下的具体段落中找到关于卷积神经网络的详细解释。


改进点

Hierarchical Indexing(分层索引)的核心思想已经在前文中清晰阐述,但在实际实现时,可以通过优化 聚类策略摘要生成方法检索机制 来进一步提升效果。以下详细展开这三个改进点:


(1)聚类优化:层数、粒度与动态调整

聚类是分层索引的关键步骤,影响最终索引结构的质量和检索效率。优化方向包括:

① 聚类层数(Depth of Hierarchy)

  • 浅层索引(2-3层):适用于较短文档或领域聚焦的数据(如新闻文章),检索速度快但可能丢失细节。

  • 深层索引(4+层):适用于书籍、学术论文等长文档,支持更细粒度的检索,但计算成本高。

  • 平衡策略:动态调整层数,例如:

    • 基于文档长度自动决定层数(如每层最少包含 N 个块)。

    • 使用 轮廓系数(Silhouette Score) 评估聚类质量,决定是否继续分裂。

② 聚类粒度(Granularity)

  • 固定簇数(如K-means):简单但可能不适应不同语义密度的数据。

  • 动态阈值(如层次聚类 + 相似度阈值):更灵活,例如:

    • 设定 cosine similarity > 0.8 的块才归为一类。

    • 使用 DBSCAN(基于密度聚类)自动识别簇数。

  • 混合策略:高层粗粒度(固定簇数),底层细粒度(动态调整)。

③ 聚类特征优化

  • 嵌入选择:对比不同嵌入模型(如BERT、GPT、SPECTER)对聚类效果的影响。

  • 降维处理:对高维嵌入(如768维)使用PCA或UMAP降维,提升聚类效率。

  • 领域适应:在特定领域数据上微调嵌入模型(如生物医学BERT),提升语义相似度计算的准确性。


(2)摘要方法:抽取式 vs. 生成式

摘要的质量直接影响高层检索的准确性,需根据场景选择方法:

① 抽取式摘要(Extractive Summarization)

  • 方法:直接从原文选取关键句(如TF-IDF、TextRank、BERTScore)。

  • 优点

    • 保留原文信息,避免幻觉(Hallucination)。

    • 计算成本低,适合实时检索。

  • 缺点

    • 依赖原文表述,可能冗余或不连贯。

  • 适用场景

    • 法律文档、技术手册等需要严格准确性的场景。

② 生成式摘要(Abstractive Summarization)

  • 方法:使用LLM(如GPT、T5)重写内容生成概括性语句。

  • 优点

    • 更简洁、流畅,适合高层抽象。

  • 缺点

    • 可能引入错误信息(如虚构细节)。

    • 计算成本高,需缓存摘要。

  • 适用场景

    • 通用知识库、新闻摘要等需要自然语言概括的场景。

③ 混合摘要策略

  • 高层节点用生成式(提供概括性描述),底层节点用抽取式(保留细节)。

  • 检索时结合两种摘要:例如用生成式摘要快速匹配,再用抽取式摘要验证相关性。


(3)检索扩展:稀疏 + 稠密混合检索

传统分层索引仅依赖语义相似度,但结合 稀疏检索稠密检索 可进一步提升效果:

① 稀疏检索(Sparse Retrieval)

  • 代表方法:BM25、TF-IDF。

  • 优点

    • 对关键词匹配高效(如术语、名称、日期)。

  • 缺点

    • 无法处理语义相似性(如“CV” vs. “计算机视觉”)。

② 稠密检索(Dense Retrieval)

  • 代表方法:基于嵌入的检索(如DPR、ANCE)。

  • 优点

    • 捕捉语义相似性,适合复杂查询。

  • 缺点

    • 对稀有术语或精确匹配较差。

③ 混合检索策略

  • Hybrid Retrieval:结合BM25(稀疏)和向量检索(稠密),例如:

    • RRF(Reciprocal Rank Fusion):合并两种检索结果的排名。

    • ColBERT:使用稀疏-稠密交互式检索。

  • 在分层索引中的应用

    • 顶层检索:先用BM25快速筛选可能相关的聚类。

    • 底层检索:在匹配的聚类内使用稠密检索细化结果。


总结

改进点优化策略适用场景
聚类优化动态层数、混合粒度(固定+动态)、嵌入优化长文档、多领域数据
摘要方法高层生成式 + 底层抽取式,或混合摘要平衡准确性与流畅性
检索扩展BM25(稀疏) + 向量检索(稠密),RRF融合兼顾关键词匹配和语义搜索

这些改进点并非必需,但能显著提升 RAPTOR 或类似分层索引系统的效果,尤其是在复杂、大规模文档集上的表现。

相关文章:

【RAG】indexing 中的 Hierarchical Indexing(分层索引)

Hierarchical Indexing(分层索引) 关键词解析: Splits (分割): 原始文档被分割成较小的块。Cluster (聚类): 将语义上相似的文档块分组在一起。Summaries (摘要): 为每个聚类或更高层次的节点生成摘要。RAPTOR (Recursive Abstractive Proc…...

【LeetCode 42】接雨水(单调栈、DP、双指针)

题面: 思路: 能接雨水的点,必然是比两边都低(小)的点。有两种思路,一种是直接计算每个点的最大贡献(也就是每个点在纵向上最多能接多少水),另一种就是计算每个点在横向上…...

【软件设计师:数据库】13.数据库控制与安全

一、数据库语言SQL SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语…...

PWN基础-ROP技术-ret2syscall-64位程序栈溢出利用

前置 ret2syscall 的基础我们就不做过多讲解了 利用思路与 32 位类似,只是传参的寄存器是: rdi -> rsi -> rdx -> rcx -> r8 -> r9 我们这里只用到前三个就可以了,以及 rax 还有一个区别就是: 32 位系统调用最…...

基于大模型预测的产钳助产分娩全方位研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 二、产钳助产分娩概述 2.1 产钳助产定义与历史 2.2 适用情况与临床意义 三、大模型预测原理与数据基础 3.1 大模型技术原理 3.2 数据收集与处理 3.3 模型训练与验证 四、术前预测与准备 4.1 大模型术前风险预…...

二叉树结构的深入学习

目录 1. 节点结构 1.1.值(val) 1.2.左右孩子节点 2.本质 3.类型 4.遍历方式 树是一种递归的数据结构。具有一个根节点和多个子节点,形成邻接关系,每个节点可以有零个或多个子节点。 树的定义是递归的,由根节点的…...

SVT-AV1源码学习-EbMotionEstimation.h 学习

#ifndef EbMotionEstimation_h //防止文件呗重复包含的宏定义开始标记 #define EbMotionEstimation_h 定义头文件标识符 #include "definitions.h" //包含定义文件 #include "coding_unit.h" //包含编码单元相关文件 #include "me_process.h" //…...

代理服务器

1.准备3台虚拟机 1台当做代理服务器;2台当做真实访问服务器;可以再来一台虚拟机当客户机,也可以使用主机来当客户机。 依次配置服务器 真实服务器(配置文件无需更改): 代理服务器: 35 ups…...

数值分析——条件数

1. 条件数的定义与计算 条件数(Condition Number)用于量化矩阵或函数对输入误差的敏感程度,反映问题的“良态”或“病态”特性。 矩阵条件数的定义 对于一个非奇异方阵 A,其条件数定义为: κ(A)∥A∥⋅∥A−1∥ 其…...

C++ STL 入门:map 键值对容器

C STL 入门:map 键值对容器 一、核心特性与适用场景 map 是 C STL 提供的关联式键值容器,基于红黑树实现,具备以下核心特征: 特性表现形式底层原理键唯一性不允许重复键值红黑树节点键值唯一约束自动排序元素按键升序排列红黑树…...

ESP32-CAM开发板学习(一)

一、Arduino IDE搭建ESP32开发环境 1、安装 Arduino IDE 软件,在官网下载压缩包解压直接使用 官网链接: Arduino IDE 2、修改软件语言,单击左上角 File → Preferences…,把Language改成中文(简体),保存 3、安装esp32开发板库…...

Arm核的Ubuntu系统上安装Qt

Arm核的Ubuntu系统上安装Qt 一、准备工作 确保可以连接网络 二、安装gcc 1、判断gcc是否安装 命令行输入:gcc -v 2、如果没有安装 输入命令安装: sudo apt install gcc 三、安装g++ 1、判断g++是否安装 命令行输入:g++ -v...

C++GO语言微服务和服务发现

目录 01 03-go-micro简介 02 04-服务发现的简单认识 03 05-consul的安装 04 06-consul常用的命令 05 07-注册服务到consul并验证 06 08-consul健康检查 07 09-consul结合grpc使用-上(只实现grpc远程调用) 08 10-consul结合grpc使用-中&#xff08…...

【随笔】Google学术:but your computer or network may be sending automated queries.

文章目录 一、问题复述二、问题原因三、解决 前提:你的xxx是自己做的,你自己可以管理,而不是用的那些劣质✈场。 一、问题复述 🟢如下图所示:可以打开谷歌学术,但是一搜索就是这个界面。 二、问题原因 …...

JavaSE核心知识点02面向对象编程02-02(封装、继承、多态)

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点02面向对象编程02-02&#…...

Ubuntu 服务器管理命令笔记

这份命令笔记涵盖了 Ubuntu 服务器管理的各个方面,包括系统更新、用户管理、安全配置、网络诊断等,适合日常使用与技术分享。 系统管理命令 sudo apt update && sudo apt upgrade -y # 更新系统 sudo reboot …...

航电系统之数据传输与交换篇

航电系统的数据传输与交换是航空电子领域的核心技术,直接关系到飞行安全、效率及任务执行能力。以下从技术架构、关键协议、应用场景、发展趋势与挑战四个维度进行系统阐述: 一、技术架构与核心组件 航电系统数据传输与交换采用分层化、模块化设计&…...

MATLAB 在医疗行业的应用

MATLAB 在医疗行业的应用 MATLAB 是一种强大的技术计算和模拟平台,在医疗行业中有着广泛的应用。日益处于数字化和智能化进程中的医疗行业,需要应用很多高性能的工具来支撑设备设计,信号分析,AI 项目开发等。本文将全面介绍 MATL…...

基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】

基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】 一、引言 在当今数据驱动的时代,机器学习和深度学习技术被广泛应用于各类预测任务中。其中,卷积神经网络(CNN)因其在处理具有空间结构的数据方面表现出色&#xff0…...

第一次被AI指点出文章的问题

二十年,几乎从未收到过这种程度的反馈。大部分意见都是有效的批评。 1.前言 关于链家左晖的一篇评论稿 这篇文章有什么问题吗?所有方面都可以谈,包括叙述,用词,重复,真实性,偏见,…...

红黑树的应用场景 —— 进程调度 CFS 与内存管理

一、红黑树在操作系统中的“实战”应用 📌 1. 进程调度器:CFS(Completely Fair Scheduler) CFS 是 Linux 的默认调度器(从 2.6.23 起),它使用红黑树维护就绪队列。 ✨ 为什么用红黑树&#x…...

RHEL8搭建FOU隧道

RHEL8搭建FOU隧道 搭建FOU隧道升级内核装载模块启用 IPv4 数据包转发功能升级iproute 配置 FOU 隧道k2接收端配置k1发送端配置双向配置k1 作为接收端配置一次。k2 作为发送端配置一次。配置接口状态配置路由的下一跳IP配置路由隧道测试 参考链接: 搭建FOU隧道 FOU是…...

单片机自动排列上料控制程序 下

/***************上料时间参数显示******************/ void dis_timea(uchar s) { uchar x,y; uint i0; A1s/100; A2(s-A1*100)/10; A3s-A1*100-A2*10; …...

科技成果鉴定测试有哪些内容?又有什么作用?

科技成果鉴定测试是评价科技成果质量和水平的方法之一,通过测试,可以对科技成果的技术优劣进行评估,从而为科技创新提供参考和指导。 一、科技成果鉴定测试的内容   1.技术评审:通过技术专家对项目进行详细的技术分析&#xff…...

【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)

目录 一、HTTP负载均衡简介 (一)、概述 (二)、upstream模块核心参数 1、server指令参数 2、负载均衡策略指令参数 (1)、轮询(Rond Robin) (2)、最少连接(least_conn) (3)、一致性哈希(Consistent Hash) (4)、IP哈希(IP Hash) 3、长连接指令参数 二、环境规划 三、N…...

【LeetCode】删除排序数组中的重复项 II

题目 链接 思路 双指针 我好聪明啊,自己想出了这个双指针的办法,哈哈哈哈哈哈哈,太高兴了 代码 class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""nlen…...

vite 初始化react项目

一. 初始化 npm create vitelatestProject name 项目名,例如:todo-listSelect a framework 选:ReactSelect a variant 选:TypeScript npm install //安装依赖 npm run dev //启动项目这样一个简单的react项目就实现了。 二.…...

LeetCode 216.组合总和 III:回溯算法实现与剪枝优化

目录 问题描述解决思路 回溯法剪枝优化 代码实现复杂度分析示例测试总结与扩展 1. 问题描述 给定两个整数 k 和 n,要求找出所有满足以下条件的组合: 组合包含 k 个不同的数字。组合中数字的和等于 n。组合中的数字范围为 [1, 9],且每个数字…...

【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)高级用法

Bootstrap V4系列 学习入门教程之 组件-下拉菜单(Dropdowns)高级用法 下拉菜单(Dropdowns)高级用法一、Directions 方向1.1 Dropup1.2 Dropright1.3 Dropleft 二、Menu items 菜单项2.1 Active 活动2.2 Disabled 禁用 三、Menu co…...

xiaopiu原型设计工具笔记

文章目录 有没有行组件是否支持根据图片生成原型呢? 其他官网 做项目要用到原型设计,还是那句话,遇到的必须会用,走起。 支持本地也支持线上。 有没有行组件 是这样,同一行有多个字段,如何弄的准确点呢? 目前只会弄…...

【hadoop】案例:Sqoop迁移仓库数据

1 数据导出:Hive导入MySQL [hadoophadoop1 sqoop]$ bin/sqoop export \ > --connect jdbc:mysql://localhost/weather \ > --username root \ > --password 123456 \ > --table mean_temperature \ > --export-dir /user/hive/warehouse/mydb/mean…...

南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案

第五次课测试 题量: 16 满分: 100 一. 单选题(共10题,62.2分) 1. (单选题)下列哪个电路是基本的组合逻辑电路? A. 触发器B. 计数器C. 半加器D. 积分器 我的答案:C:半加器;正确答案:C:半加器; 6.2分 知识点: 组合…...

基于PyQt5的报警器实现说明

基于PyQt5的报警器实现说明 一、概述 本程序是一个基于PyQt5框架实现的报警器控制程序,通过串口与外部设备进行通信,向设备发送特定的十六进制指令来实现报警器的不同功能。PyQt5是Python中用于创建图形用户界面(GUI)的强大工具…...

pyorch中tensor的理解与操作(一)

tensor 是PyTorch 中一个最基本的数据集合类型, 本文注意针对该结构类型,说明它的存储方式以及主要的操作方法。 tensor其实是一个多维数组(元素的数据类型需一致),类似于 NumPy 的 ndarrays,但可以在 GPU …...

用react实现一个简单的三页应用

下面是一个使用 React Router 的简单示例,演示了如何在 React 应用中实现页面之间的导航。 🛠️ 第一步:使用 Vite 创建项目 npm create vitelatest my-router-app -- --template react cd my-router-app npm install🚀 第二步&a…...

OCCT中的布尔运算

OCCT 中的布尔运算是其几何建模的核心功能之一,主要用于实体的合并、切割和相交操作。以下是详细介绍及经典示例程序: 一、OCCT布尔运算的核心类 OCCT 通过 BRepAlgoAPI 命名空间下的类实现布尔运算,主要包括: BRepAlgoAPI_Fus…...

SpringBoot的自动配置和起步依赖原理

关于Spring Boot的自动配置和起步依赖,我想结合最新的实现机制来展开说明。先说自动配置——这是Spring Boot最核心的"约定优于配置"思想的落地体现。举个例子,当我们创建一个新的Spring Boot项目时,只要在pom.xml里添加了spring-b…...

沃伦森电气高压动态无功补偿装置助力企业电能优化

在工业生产的复杂电能环境中,电能质量直接影响企业的生产效率和运营成本。XX光伏科技有限公司作为一家快速发展的制造企业,随着生产规模的不断扩大,其内部电网面临功率因数过低、电压波动频繁等问题,导致供电部门罚款增加、设备故…...

VUE——自定义指令

Vue自定义指令概述 Vue自定义指令可以封装一些 dom 操作,扩展额外功能。它们允许开发者直接对DOM元素进行低层次操作,自定义指令可以响应Vue的响应式系统,从而在数据变化时触发相应的DOM更新。 自定义指令语法 自定义指令的常用钩子函数&am…...

Redis协议与异步方式

1.redis pipeline 通过一次发送多次请求命令,为了减少网络传输时间。 注意:pipeline 不具备事务性。 2.redis 事务 事务:用户定义一系列数据库操作,这些操作视为一个完整的逻辑处理工作单元,要么全部执行,…...

systemd vs crontab:Linux 自动化运行系统的全面对比

在 Linux 系统运维和开发中,任务调度与服务管理 是不可或缺的一环。无论是定期备份、日志轮转,还是启动后台服务,自动化机制都能极大地提高系统的可靠性与效率。两种最常用的自动化工具是: crontab:传统的基于时间的任…...

Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案

Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案 引困境yum-utils破局 引 前段时间,有个项目有边缘部署的需求,一台没有的外网的Centos系统服务器,需要先安装jdk,node,mysql,reids&#xf…...

观测云:安全、可信赖的监控观测云服务

引言 近日,“TikTok 遭欧盟隐私监管机构调查并处以 5.3 亿欧元”一案,再次引发行业内对数据合规等话题的热议。据了解,仅 2023 年一年就产生了超过 20 亿美元的 GDPR 罚单。这凸显了在全球化背景下,企业在数据隐私保护方面所面临…...

el-table计算表头列宽,不换行显示

1、在utils.js中封装renderHeader方法 2、在el-table-column中引入: 3、页面展示:...

多智能体学习CAMEL-调用api

可选模型范围 在ModelScope中的模型库中选择推理 API-Inference ,里面的模型都可以选择,我们可以体验到最新的使用DeepSeek-R1数据蒸馏出的Llama-70B模型。 1.2.2 使用API调用模型 这里我们使用CAMEL中的ChatAgent模块来简单调用一下模型,…...

奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆

在数字化浪潮席卷全球的今天,企业正面临着前所未有的数据挑战与机遇。如何高效、精准地挖掘数据价值,已成为推动业务增长、提升竞争力的核心议题。奥威BI,作为智能AI数据分析领域的领军者,凭借其创新的AIBI融合模式,正…...

SM2Utils NoSuchMethodError: org.bouncycastle.math.ec.ECFieldElement$Fp.<init

1,报错图示 2,报错原因: NoSuchMethodError 表示运行时找不到某个方法,通常是编译时依赖的库版本与运行时使用的库版本不一致。 错误中的 ECFieldElement$Fp. 构造函数参数为 (BigInteger, BigInteger),说明代码期望使…...

Spring Boot 中 MongoDB @DBRef注解适用什么场景?

在 Spring Boot 中使用 MongoDB 时,DBRef 注解提供了一种在不同集合(collections)的文档之间建立引用关系(类似于关系型数据库中的外键)的方式。它允许你将一个文档的引用存储在另一个文档中,并在查询时自动…...

PDF生成模块开发经验分享

在日常的项目开发中,PDF文档的生成是一个常见的需求。无论是用于申报单、审批结果通知书还是其他业务相关的文档输出,一个高效且灵活的PDF生成功能都是不可或缺的。本文将基于我使用Java(Spring Boot)和iText库开发PDF生成模块的经…...