【AIGC】大模型面试高频考点-RAG常见13种分块策略

分块策略在RAG中至关重要,目的是提高效率、相关性和上下文保持。分块能减少计算开销,增加检索相关信息的可能性,同时保持信息完整性。但也存在风险,如上下文丢失、冗余和不一致性。选择策略需考虑文档类型(结构化 vs 非结构化)、查询复杂性、资源可用性和期望结果(速度 vs 准确性 vs 上下文)。

以下是13种独特分块策略的详细描述,按策略名称、描述、优点、缺点和实施建议。仅供参考。

策略名称描述优点缺点实施建议
固定长度分块将文本按预定义长度(如基于令牌或字符)分割,适合简单文档或快速处理。简单性、统一性、效率上下文丢失、相关性问题、潜在信息丢失选择合适大小,考虑使用重叠窗口以保持上下文
基于句子的分块按句子边界分割,确保每个块是完整的思想,适合短响应如客户查询。保持上下文、易于实现、更好的可读性块大小不一致、不适合长句、控制力弱使用NLP库检测句子,必要时合并短句
段落分块将文档按段落分割,每个段落通常包含完整想法或主题,适合结构化文档。更丰富的上下文、逻辑分割大小不一致、可能超出行牌限制监控块大小,必要时分割大段落以保持上下文
文档分块将整个文档视为一个块或最小分割,保持完整结构和上下文,适合法律或医学文档。保持完整上下文、适合结构化文本、简单可扩展性问题、效率低、缺乏细节提取适用于不希望分割影响流程的场景
滑动窗口分块通过滑动窗口创建重叠块,确保相邻块共享内容,适合需保持跨部分上下文的文档。上下文连续性、提高检索效果冗余、计算成本高优化窗口大小和重叠,使用去重技术处理冗余
语义分块使用嵌入或机器学习模型按语义意义分割,确保每个块主题连贯。上下文相关性、灵活性、提高检索准确性复杂性、处理时间长、计算成本高、阈值调整利用预训练模型,平衡成本和粒度
递归分块使用层次分隔符或多个分隔符逐步分割为小块,适合大型结构化文档。层次上下文、可扩展性、意义块、细粒度控制实现复杂、可能丢失上下文、复杂性高、计算开销大使用文档结构标识层次,存储块位置元数据
上下文增强分块为每个块添加周围块的摘要或元数据,保持序列间的上下文,适合长文档。增强上下文、提高连贯性复杂性、存储开销大生成简洁摘要,考虑用关键术语或概念作为元数据
模式特定分块按内容类型(如文本、表格、图像)分别处理,每个类型按其性质分块。定制方法、提高准确性实现复杂、集成困难使用OCR处理图像,将表格转为结构化数据,保持索引一致
代理分块使用AI(如大型语言模型)按内容结构和语义建议块边界,或按代理角色任务组织。任务导向效率、聚焦相关数据、灵活性、智能分割复杂设置、计算密集、成本高、可能过分专业化、丢失全局上下文选择性使用,优化LLM提示,明确代理角色和任务规则
子文档分块总结整个文档或大节并将摘要作为元数据附加到单个块,适合大型文档集。层次检索、上下文深度额外处理、元数据管理复杂自动化摘要生成,高效存储摘要
混合分块结合多种分块策略,动态适应不同查询类型或文档结构,适合多用途系统。灵活性、优化性能逻辑复杂、维护难度大制定选择策略的标准,广泛测试以确保可靠性
基于令牌的分块按预定义令牌数(如单词或子词)分割,确保块在模型令牌限制内。优化语言模型、精确控制块大小、一致性上下文碎片化、忽略语义结构、灵活性有限确保块在模型令牌限制内

选择策略时需考虑以下因素

  • 文档类型:结构化(如报告)适合段落分块,非结构化(如聊天记录)适合语义分块。
  • 查询复杂性:复杂查询需语义或代理分块,简单查询可用固定长度分块。
  • 资源可用性:计算资源有限时,优先固定长度或基于句子的分块。
  • 期望结果:速度优先选固定长度,准确性优先选语义分块,上下文优先选滑动窗口。
### 大模型 RAG 常见面试问题及解答 #### 1. 什么是RAG架构? RAG(Retrieval-Augmented Generation)是一种结合检索和生成两种方法来增强自然语言处理任务性能的技术。通过引入外部知识库中的信息,使得模型不仅依赖于训练数据本身,还能利用更广泛的知识源来进行推理和预测[^1]。 ```python from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-nq") retriever = RagRetriever.from_pretrained("facebook/rag-token-nq", index_name="exact", use_dummy_dataset=True) model = RagSequenceForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever) input_dict = tokenizer.prepare_seq2seq_batch( ["What is the capital of France?"], return_tensors="pt" ) outputs = model.generate(input_ids=input_dict["input_ids"]) print(tokenizer.batch_decode(outputs, skip_special_tokens=True)) ``` #### 2. RAG相较于传统Seq2Seq有哪些优势? 相比于传统的序列到序列(Seq2Seq)模型,RAG能够更好地应对开放域问答等场景下的事实性错误问题。这是因为RAG可以动态地从大量文档中检索相关信息作为上下文输入给解码器部分,在生成回复时更加精准可靠。 #### 3. 实现一个简单的基于RAG的对话系统需要注意哪些方面? 构建这样一个系统的关键在于选择合适的预训练模型以及配置高效的索引结构用于快速查询相似度高的候选文章片段;另外还需要考虑如何优化整个pipeline流程以提高响应速度并降低延迟时间。对于特定领域应用来说,则可能涉及到定制化调整搜索引擎参数或增加领域内专业知识库等内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值