首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏AI智能体从入门到实践

    构建AI智能体:优化 RAG 检索精度:深入解析 RAG 中的五种高级切片策略

    前面几篇文章已经深入讨论过LangChain、RAG架构的细节,对RAG有了基础的了解,今天重点梳理一下RAG切片策略;一、什么是RAG切片 给定一个场景,我们有一本非常厚的百科全书 RAG切片策略,就是帮我们把这本厚厚的书,提前拆分成一页一页、或者一段一段的“小纸片”,并给这些小纸片做好详细的“目录”和“标签”,做成一个高效的“索引”或者“目录”,当AI助手需要回答问题时,它不需要去翻整本书 不同的切片策略,就是做“目录”的不同方法。 所以,到底什么是RAG切片RAG切片就是把一份长长的文档(如PDF、Word),合理地切割成一个个小块(Chunks)的过程。 方法3LLM语义切片目前更多处于实验阶段,成本过高。 总之,没有放之四海而皆准的最佳策略。 最适合你数据和用例的策略需要通过实验来确定。 准备一组代表性的测试问题。 用不同的策略和参数(大小、重叠)处理你的文档。 运行你的RAG管道,评估答案的质量。评估答案是否准确?检索到的上下文是否真正相关? 迭代优化:选择效果最好的那种策略

    1.4K32编辑于 2025-11-11
  • 来自专栏#大模型热点基础知识

    什么是RAG文档切分策略

    二、什么是RAG文档切分策略RAG文档切分策略是将大型文档分割成适合检索和生成的小块(chunks)的方法论。 三、RAG文档切分策略如何工作文档切分策略主要包含三种核心方法,每种都有其独特的工作机制和适用场景。 3.混合策略与递归切分:动态平衡的艺术混合策略在语义切分基础上控制chunk大小范围,兼顾两者优势。而递归切分是混合策略的高级形态,它采用分层降级的思路,特别适用于技术文档等复杂场景。 企业知识库与客服系统:许多公司用RAG构建内部问答系统。处理客服对话记录时,采用"轮次切分"——3-5轮对话作为一个chunk,保留完整的问题-回答-追问-解答链条。 这种设计增加了3倍存储成本,但综合F1分数提升25%。自适应chunksize:基于内容复杂度动态调整size。

    27420编辑于 2026-04-02
  • 来自专栏无题~

    MapReduce之 FileInputFormat的切片策略(默认)

    ①获取当前输入目录中所有的文件 ②以文件为单位切片,如果文件为空文件,默认创建一个空的切片 ③如果文件不为空,尝试判断文件是否可切(不是压缩文件,都可切) ④如果文件不可切,整个文件作为1片 ⑤如果文件可切 ArrayList<InputSplit>(); // 获取当前Job输入目录中所有文件的状态(元数据) List<FileStatus> files = listStatus(job); // 以文件为单位进行切片 blkLocations = fs.getFileBlockLocations(file, 0, length); } // 判断当前文件是否可切,如果可切,切片 } } else { //Create empty hosts array for zero length files // 如果文件是个空文件,创建一个切片对象 ,这个切片从当前文件的0offset起,向后读取0个字节 splits.add(makeSplit(path, 0, length, new String[0])); }

    69140发布于 2020-07-21
  • RAG—Chunking策略实战|得物技术

    一、背 景在 RAG 系统中,即便采用性能卓越的 LLM 并反复打磨 Prompt,问答仍可能出现上下文缺失、事实性错误或拼接不连贯等问题。 某种意义上,分块质量几乎决定了RAG的性能上限——它决定知识是以连贯的上下文呈现,还是退化为无法拼合的碎片。 当分块尊重文档的叙事与结构时,检索的相关性与答案的事实一致性往往显著提升,远胜于一味更换向量模型或调参;换言之,想要真正改善 RAG 的稳健性与上限,首先要把“知识如何被切开并呈现给模型”这件事做好。 目标:为RAG检索创建高内聚、可追溯的块。 从一次启动失败深入剖析:Spring循环依赖的真相|得物技术3. Apex AI辅助编码助手的设计和实践|得物技术4.

    1.1K10编辑于 2025-10-30
  • 来自专栏Bingo的深度学习杂货店

    Python3切片详解

    本文通过一个简单的例子讲解切片的应用: 先构造一个list列表a: a = list(range(1,8)) # [1, 2, 3, 4, 5, 6, 7] 切片的使用可以看做 [start:end 切片的应用: a[:3] # [1,2,3] 即索引是 [0,3) => a[0]、a[1]、a[2] a[:-5] # [1,2] 等价于 a[:(-5+a中元素个数7)] = a[:2] = a[::2] # [1,3,5,7] 每隔2个元素取数 a[3::2] # [4,6] 从a[3]=4开始,每隔2个元素取数 现在检验学习成果: a[:-2] # [1,2,3,4,5] a[-6 :10] # [2,3,4,5,6,7] a[-4::-1] # [4,3,2,1] a[-1:-5:-2] # [7,5] b = a[:4] + a[5:] # [1, 2, 3, 4, 6, 7],切片法去除list中一个元素 欢迎补充!

    91850发布于 2018-04-25
  • RAG新范式】超越向量搜索:企业级知识库构建必知的3RAG高级策略

    #【RAG新范式】超越向量搜索:企业级知识库构建必知的3RAG高级策略摘要:本文深度剖析企业级知识库构建中RAG(检索增强生成)技术的进阶实践。 文中包含5段可直接落地的Python代码实现,3张架构演进图示,以及企业级部署的性能对比数据表。阅读后您将掌握:如何将RAG召回率提升37%,推理成本降低52%,并构建支持千亿级文档的工业级知识引擎。 一、从客服危机看RAG升级的紧迫性上周三凌晨2点,我们电商平台的智能客服突然崩溃。用户询问“刚买的手机碎屏险如何理赔”时,系统返回了手机壳开箱视频——这是典型的RAG检索漂移。 二、RAG技术演进:从基础架构到工业级实践2.1RAG核心机制解析检索增强生成(Retrieval-AugmentedGeneration)通过动态检索外部知识库来增强大语言模型的生成能力。 架构必须升级三、核心策略一:查询改写增强技术3.1多提示改写引擎我们在项目中采用HyDE(假设文档嵌入)+查询扩展双引擎策略:展开代码语言:PythonAI代码解释fromllama_index.coreimportHyDEQueryTransformfromlangchain.retrieversimportContextualCompressionRetriever

    33710编辑于 2026-02-06
  • 来自专栏kwai

    Go切片Silce底层实现和扩容策略(旧版)

    切片的结构体由3部分构成,Pointer 是指向一个数组的指针,len 代表当前切片的长度,cap 是当前切片的容量。cap 总是大于等于 len 的。 ? 不管是使用 nil 切片还是空切片,对其调用内置函数 append,len 和 cap 的效果都是一样的。 三 切片扩容 当一个切片的容量满了,就需要扩容了。怎么扩,策略是什么? return slice{unsafe.Pointer(&zerobase), old.len, cap} } // 这里就是扩容的策略 newcap := old.cap 主要需要关注的有两点,一个是扩容时候的策略,还有一个就是扩容是生成全新的内存地址还是在原来的地址后追加。 Go 中切片扩容的策略是这样的: 如果切片的容量小于 1024 个元素,于是扩容的时候就翻倍增加容量。上面那个例子也验证了这一情况,总容量从原来的4个翻倍到现在的8个。

    1.2K30编辑于 2023-04-12
  • 来自专栏掘金安东尼

    再靠近亿点点,RAG 优化策略

    本篇来看下 RAG 的架构优化策略 利用知识图谱(KG)进行上下文增强 在现有的向量数据库中,典型的上下文增强可能面临挑战:难以捕捉长距离的关联知识,信息稀疏性高(尤其是当LLM上下文窗口有限时)。 + 一个片段的生成结果; 3、使用反思字段,检查输出是否相关,选择最符合需要的片段; 4、再重复检索; 5、生成结果会引用相关片段,以及输出结果是否符合该片段,便于查证事实。 3、与第二项相似,在用户对话时根据查询提取原始文本、表格和图像资料。综合这些信息,构建完整的激发句,求助于多模态大型模型以产出相应的回答。 小结 本篇文章介绍了 RAG 的架构优化策略,主要包括利用知识图谱进行上下文增强以及让大模型对召回结果进行筛选的方法。 自荐我和机械工业出版社联合出版的 《程序员成长手记》 一书:全书分为3大模块、8个章节:从入门程序员到程序员自驱成长,回归纸质阅读,相信能给你一个更全局的程序员视野,提供成长帮助。

    1K10编辑于 2024-04-13
  • 来自专栏DeepHub IMBA

    RAG流程优化(微调)的4个基本策略

    在本文中,我们将介绍使用私有数据优化检索增强生成(RAG)的四种策略,可以提升生成任务的质量和准确性。 通过使用一些优化策略,可以有效提升检索增强生成系统的性能和输出质量,使其在实际应用中能够更好地满足需求。 RAG简单回顾 RAG主要有两个过程。 我们先总结RAG过程中的可以优化的关键点: 1、分块方法:优化块大小确保有意义和上下文相关的数据段。 2、嵌入模型:选择和微调模型以改进语义表示。 3、向量搜索方法:选择有效的相似度量和搜索参数。 为了评估这些策略的有效性,我根据ColdF的数据准备了一套10个带有实际答案的问题。 真实性和答案相关性是生成器度量标准,分别衡量幻觉和答案对问题的直接程度。 还有最重要的一点成功的关键在于理解现有的数据,尝试不同的策略,并不断改进的流程。

    2.2K10编辑于 2024-07-01
  • 来自专栏AgenticAI

    OpenAI主管Lilian Weng分享RAG对抗LLM幻觉策略

    2024年7月7号,OpenAI安全团队负责人,Lilian Weng分享了一篇博客介绍了LLM中幻觉的由来、检测和对抗策略,分享给大家,以下为翻译全文。 注:本文共分为三节:LLM幻觉由来、检测和对抗,其中对抗方法包括RAG相关的策略,感兴趣的同学可以直达。 1. 什么导致幻觉? 3.1 RAG → 编辑和归属 RAG(检索增强生成)[20]是一种非常常见的提供基础信息的方法,即检索相关文档,然后使用相关文档作为额外上下文进行生成。 IsUse:输出文本对输入Prompt是否有用;输出值:{5, 4, 3, 2, 1}。 Self-RAG 每次生成一个片段。 有证据表明,微调新知识可能会导致幻觉,而 RAG 的监督包含 LLM 未知的信息。 (1)以RAG数据样本作为正样本,以原始模型生成为RM数据作为负样本。

    70410编辑于 2025-03-18
  • 来自专栏程序员

    C++对象切片:机制、应用场景与规避策略

    对象切片的核心机制1.1 切片的发生条件对象切片(Object Slicing)发生在派生类对象向基类对象赋值或传值时,编译器仅复制基类子对象部分,派生类特有成员被丢弃。 ExtendedResourceHandle ext_handle;auto base_traits = BaseTypeExtractor<ExtendedResourceHandle>::extract(ext_handle);3. 对象切片的潜在风险3.1 多态性破坏std::vector<Base> objects;objects.push_back(Derived()); // 切片发生objects[0].func(); 专业规避策略4.1 基于智能指针的多态容器std::vector<std::unique_ptr<Base>> polymorphic_objects;polymorphic_objects.push_back :在团队编码规范中明确切片的使用条件和限制6.

    34010编辑于 2025-09-09
  • 来自专栏AI研思录

    RAT:融合RAG和CoT的高效多步推理任务策略

    因此这篇论文考虑在COT的基础上加上了RAG,即 RAT,通过利用检索到的外部信息为大模型提供推理依据。 论文核心 RAT 的核心是将 RAG 用于修正由 CoT 提示生成的每一个思维步骤中,通过查找不同参考文档来不断修正每一个思维步骤,确保推理的每一步都有准确且可靠的信息支持。 使用RAG来修复大模型生成思维步骤:假设已经修复了之前的思考步骤,现在要修复第 个思维步骤 ,将现在和过去的思维步骤 转化为将可以被LLM检索系统处理的查询,得到 检索文档:使用RAG检索 相关的文档 论文总结 这篇文章提出的RAT结合了RAG和CTO思想,使用RAG检索的文档动态优化COT中的每一个步骤,确保每一个推理步骤都是有依据的,避免大模型的幻觉。 实验结果表明,RAT在这些任务上相比传统的CoT提示和RAG方法都有显著的性能提升。

    71910编辑于 2025-02-20
  • 来自专栏拾光学迹

    RAG 中数据处理的关键:数据切片的挑战与解决方案

    字数: 900+ | 阅读时间: 3-4分钟 热点解读:在AI快速发展的今天,RAG技术正成为各行各业的"必备神器"。但要真正驾驭这头"AI猛兽",你必须先搞定数据切片这个"拦路虎"! 一、数据切片RAG技术的"阿喀琉斯之踵" 朋友们,想象一下:你辛辛苦苦收集了海量数据,却因为切片不当,让你的AI变成了"结巴"或"健忘症患者"。 1. AI:基于长切片中的丰富信息,我可以从AI、量子计算、生物科技等多个角度为您分析... 四、解决方案三:先粗切片 + 再细切片 小贴士:这就像给AI装备了"望远镜+显微镜",既能看大局又能观细节! 优点: 效率和准确性的完美平衡 适应复杂文档的处理需求 示例: 粗切片:硬件部分、软件部分 细切片:处理器、内存、硬盘... 用户:处理器的性能如何? AI:通过粗切片定位到硬件部分,再通过细切片找到处理器相关信息,为您详细分析... 五、总结 朋友们,在这个AI浪潮中,掌握RAG技术就像学会了"驯服AI猛兽"的秘诀。

    45000编辑于 2025-02-26
  • 来自专栏DeepHub IMBA

    RAG系统嵌入模型怎么选?选型策略和踩坑指南

    RAG 的效果在很大程度上取决于检索到的上下文质量——提升效果的常用手段包括合理切分文本块(chunking)、选用合适的嵌入模型与采用稳健的检索策略。 嵌入在 RAG 中为何重要? 语义理解:嵌入将词、句子或文档转成向量(数字列表),让相近语义彼此靠近。这帮助系统理解语境与含义,而非仅做字面匹配。 高效检索:RAG 需要快速找到最相关的段落或文档。 新模型(如 BGE-M3)可一次接收上千词(最高 8,192 token),帮助系统保留完整语义脉络。 若是通用知识或客服 FAQ,OpenAI 的 text-embedding-3-small 这类通用嵌入通常足够;若是医疗、法律或金融等专业领域,BioBERT、SciBERT、Legal-BERT 等领域模型更合适 OpenAI 的 text-embedding-3-small、NVIDIA 的 NV-Embed-v2、甚至开源的 BGE 系列,对于大部分应用场景都够用。关键是要match你的具体需求。

    46610编辑于 2025-11-15
  • 来自专栏DeepHub IMBA

    RAG中的3个高级检索技巧

    RAG系统检索的文档可能并不总是与用户的查询保持一致,这是一个常见的现象。 本文将探讨三种有效的技术来增强基于rag的应用程序中的文档检索,通过结合这些技术,可以检索与用户查询密切匹配的更相关的文档,从而生成更好的答案。 查询扩展 查询扩展指的是一组重新表述原始查询的技术。 # 3. How much debt does the company have? Is it increasing or decreasing? # 4. query_embedding) return torch.cosine_similarity(updated_query_embedding, document_embedding, dim=0) 3

    1.2K10编辑于 2024-01-23
  • 来自专栏DeepHub IMBA

    RAG 中分块重叠的 8 个隐性开销与权衡策略

    RAG 分块重叠提升了召回率但增加了隐藏成本,比如说索引膨胀、Embedding 开销、延迟、重排序负载和评估漂移。 本文将总结的八项 RAG 分块重叠隐藏的成本,以及如何判断什么时候重叠真正有用,什么时候只是花钱买心安。 ...............512 ] Chunk 2: [ 385.................896 ] (overlap 128) Chunk 3: 3、检索质量可能反而变差:近似重复泛滥 重叠通常能提高召回率,但副作用是在向量空间中制造大量近似重复项。 正确做法是对所有环节做版本管理:语料库快照、分块参数(S,O)、Embedding 模型、索引构建配置、检索和重排序策略,一个都不能少。

    12410编辑于 2026-02-27
  • 来自专栏学习之路

    【GoLang#3】:数据结构(切片 | map 映射)

    2, 3} b2 := b1 b1[0] = 11 fmt.Println(b1) // 11 2 3 fmt.Println(b2) // 11 2 3 } 现在我们来正式了解一下切片是什么吧 从数组创建切片 arr := [5]int{1, 2, 3, 4, 5} slice1 := arr[1:4] // [2 3 4] - 从索引1到3 slice2 printSliceInfo("s3", s3) // make 创建的切片 s4 := make([]int, 3, 10) // 长度3,容量10 printSliceInfo :", sub3) } 3.2 切片删除操作 func main() { // 1. 200 3 4] } ② 切片扩容陷阱 func main() { // 切片扩容陷阱 s1 := []int{1, 2, 3} s2 := s1[1:] // [2 3]

    34310编辑于 2025-08-02
  • 来自专栏蛋先生说识

    RAG 切片利器 LumberChunker 是如何智能地把文档切割成 LLM 爱吃的块

    RAG 里的文档应该怎么切割比较好呢?按固定的字符数或词数?按句?按段落?加个重叠窗口?感觉这些都太简单粗暴,容易把相关的内容给拆散了蛋先生:恩,你说得对。 从第一个段落开始往后加,假设第 1、2、3 段加起来小于 550,但再加上第 4 段就超过阈值,那就先把第 1 ~ 3 段打包成一组丹尼尔:哦?就是以长度上限作为分组的依据吗? 蛋先生:那就表示第 1、2 段关系紧密,第 3 段开始语义发生变化。 于是我们就可以把 1、2 段作为一个语义块生成 embedding,第 3 段作为新一组的开头✎ 第四步,循环以上流程丹尼尔:然后呢? 我们在上面的流程处理后,拿到了新的起点段落,然后重复以上流程,直到所有段落都被处理完毕丹尼尔:哎呦不错哦,又简单又有效,这样看上去每个相关的块基本都可以在一起,不会被硬拆开蛋先生:没错,有了高质量的分块,RAG

    43810编辑于 2025-10-27
  • 来自专栏DeepHub IMBA

    深入RAG架构:分块策略、混合检索与重排序的工程实现

    从分块方式到搜索策略,从排序逻辑到异常兜底,每一层都藏着独立的故障模式。 Level 1:Naive RAG 文档做 embedding,存向量,按相似度取 top-k,丢给模型生成。 教程教的就是这套,大多数RAG系统也停在了这一步。 但从20个候选里精选3个?这个开销完全可以接受。 加入 reranking 之后"正确 chunk 出现在前3"的命中率从68%提到了89%。 先把 Level 2 和 Level 3 做扎实。 Level 5:生产级RAG 前面几个级别都在提升检索质量。生产级RAG要处理的是另一件事:检索已经尽力了,但还是失败了,怎么办? 分块策略会漏掉某个关键段落。或者问题本身就很模糊,召回的几个 chunk 互相矛盾。 真正该问的不是"怎么杜绝检索失败",而是"检索失败的时候,系统该怎么表现"。

    25010编辑于 2026-02-27
  • 来自专栏Eliauk的小窝

    3策略模式所需代码

    1、策略接口上下文 @Service public class PathUploadStrategyContext { @Resource private Map<String strategy); } /** * 服务器路径上传抽象方法 * @param message 队列消息 * @param strategy 路径上传策略 return fileName.substring(dotIndex + 1).toLowerCase(); } return ""; } } 3策略枚举类 /** * 服务器路径上传策略枚举 * * @author Eliauk * @since 2023/9/28 14:32 */ @Getter @AllArgsConstructor @Override boolean exist(PathUpLoadMessage message) { return Boolean.FALSE; } } 3

    62730编辑于 2023-10-30
领券