现有检索系统(如BM25或向量库)往往存在两大短板:
当传统检索还在“关键词匹配”的平原上徘徊时,RAPTOR已带我们登上语义理解的树冠层。这片由斯坦福培育的“知识森林”,正为LLM注入真正的理解力——未来已来,只是尚未均匀分布。
RAPTOR通过构建语义摘要树解决上述问题,其核心流程如同培育一片知识森林:
文本块 = 分割长文档(文档) # chunk_size=100+且保持句子完整
叶子节点 = [SBERT嵌入(块)for块in文本块] # 生成语义向量
❝聚类算法采用的是高斯混合模型(Gaussian Mixture Models, GMMs),同时由于单个文本可能包含与多个主题相关的信息,所以这篇文章采用了软聚类,即节点可以同时属于多个聚类,而不需要事先设定聚类的固定数量,将它们包含在多个摘要中。
循环执行第二步,直到生成最终根节点,形成自底向上的语义树形结构:
当用户发起查询时,RAPTOR提供双通道检索:
根节点 → 中层节点 → 叶子节点,从根节点开始,计算查询和节点之间的余弦相似度,逐层选择最相关的节点,直到叶子节点。平铺所有节点并行比对,将所有节点视为同一层次,选择最相关的节点,直到达到模型输入的token限制。与其他检索方法相比,RAPTOR 独特优势包括:
这些优势使得RAPTOR在处理需要综合整个文档信息的复杂问答任务时表现出色,特别是在文学领域的长篇文本理解任务中。
本文介绍了一种新颖的基于树的检索系统:RAPTOR,通过各种抽象级别的上下文信息来增强LLM的参数知识。采用递归嵌入、聚类和摘要技术,RAPTOR创建了一个分层树结构,能够跨检索语料库的各个部分综合信息。在查询阶段,RAPTOR 利用此树结构进行更有效的检索。实验表明,使用递归总结的检索方法在多个任务上相较于传统的检索增强语言模型提供了显著的改进。在涉及复杂、多步骤推理的问题解答任务中,展示了最优的结果。例如:通过将RAPTOR检索与GPT-4结合使用,能够将QuALITY基准上的最佳性能提高20%的准确率。
问题区分与来源定位
# 伪代码:为每个文本块嵌入元数据
text_chunk ="某条款内容..."
metadata = {"doc_id":"合同_v3","section":"4.2","version":"2025-06"}
doc_id和version),明确标注答案来源。版本错乱的预防
索引_v1、索引_v2);# 示例:在查询中附加版本过滤条件
query ="某条款的解释?"
filters = {"version":"2025"}
results = retriever.retrieve(query, filters=filters)
信息交错的应对
❝指令模板:
"仅使用以下上下文片段回答问题,并标注来源:
[片段1] {文本} (来源: 文档A_v2)
[片段2] {文本} (来源: 文档B_v1)
问题:{用户问题}"
针对多版本场景,需补充以下设计:
版本感知检索器
开发支持版本参数的检索接口,自动路由查询到对应版本的索引。
用户显式指定版本
version:latest)。冲突检测与告警
若问题涉及多个版本(如“比较v1和v2差异”),系统可:
中央化元数据管理
使用数据库记录文档版本关系,确保:
合同_v2→ 继承自合同_v1)。问题区分可行性:
✅ RAPTOR可通过元数据嵌入精确标识答案来源(文档名+版本号),技术上完全可行。
版本错乱风险:
⚠️ 若无防护措施,混合索引不同版本会导致错乱。
✅解决方案:隔离索引 + 查询过滤可彻底规避。
信息交错问题:
⚠️ 若未限制LLM的上下文范围,可能交叉引用不同版本。
✅解决方案:强制LLM仅基于检索片段生成答案,并附加来源元数据。
多版本最佳实践:
✅ 推荐按版本分索引+显式版本过滤+答案来源标注,三者结合可确保:
❝个人建议:在金融、法律等强版本敏感场景中,应在RAPTOR外层封装版本控制中间件,自动管理索引路由、冲突检测与用户交互,而非依赖基础索引能力
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |