首页 > 科技周边 > 人工智能 > 抹布系统的8种类型的块 - 分析Vidhya

抹布系统的8种类型的块 - 分析Vidhya

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-03-06 12:00:20
原创
586 人浏览过

>解锁在检索型发电一代(抹布)中块的力量:深度潜水

有效地处理大量文本数据对于构建强大而有效的检索生成(RAG)系统至关重要。 本文探讨了各种构成策略,对于优化数据处理和改善AI驱动应用程序的性能至关重要。 我们将深入研究不同的方法,强调他们的优势和劣势,并提供实用的例子。 目录的

抹布中有什么块?
    >
  • 块的重要性
  • 了解抹布架构和块状
  • >抹布系统的共同挑战
  • 选择最佳块策略
  • 基于字符的文本块
  • 递归字符文本用langchain
  • 分裂
  • 文档特定的块(html,python,json等)
  • >语义块与兰班和Openai
  • 代理分解(LLM驱动的块)
  • >
  • 基于截面的块
  • >上下文块,用于增强检索
  • >保存远距离上下文的后期块
  • 结论
抹布中有什么块?

8 Types of Chunking for RAG Systems - Analytics Vidhya8 Types of Chunking for RAG Systems - Analytics Vidhya 8 Types of Chunking for RAG Systems - Analytics Vidhya分解是将大型文本文档分为较小,更易于管理的单元的过程。 这对于抹布系统至关重要,因为语言模型的上下文窗口有限。 块确保相关信息保留在这些范围之内,从而最大程度地提高信噪比并提高模型性能。 目的不仅是要拆分数据,而且是要优化其向模型的显示,以增强可检索性和准确性。

>

>

为什么要块很重要? 色度联合创始人安东·特洛伊尼科夫(Anton Troynikov)强调,在上下文窗口中无关紧要的数据可显着降低应用程序效率。 分块对于:

至关重要

克服上下文窗口限制:

确保由于尺寸限制而不会丢失关键信息。

  1. 提高信号噪声比率:过滤不相关的内容,提高模型精度。
  2. >提高检索效率:促进相关信息的更快,更精确的检索。
  3. 特定于任务的优化:允许根据特定的应用需求量身定制块策略(例如,摘要与提问)。
  4. 抹布架构和块

    8 Types of Chunking for RAG Systems - Analytics Vidhya

    抹布架构涉及三个关键阶段:

    1. >块:原始数据分为较小的,有意义的块。
    2. 嵌入:块被转换为向量嵌入。
    3. 根据用户查询,检索相关的块
    4. > 检索和生成:相关块,LLM使用检索到的信息生成响应。

    抹布系统中的挑战 抹布系统面临几个挑战:

    >
      检索问题:
    1. 不准确或不完整地检索相关信息。
    2. 生成困难:
    3. 幻觉,无关或有偏的输出。
    4. 集成问题:
    5. 难以将检索到的信息相干地组合。>
    选择正确的块策略

    > 理想的块策略取决于几个因素:内容类型,嵌入模型和预期的用户查询。 考虑内容的结构和密度,嵌入模型的令牌限制以及用户可能会提出的问题的类型。

    1。基于字符的文本块

    这种简单的方法根据字符数将文本分配到固定尺寸的块中,无论语义含义如何。 虽然简单明了,但它通常会破坏句子的结构和上下文。 示例使用Python:

    2。递归字符文本用langchain
    text = "Clouds come floating into my life..."
    chunks = []
    chunk_size = 35
    chunk_overlap = 5
    # ... (Chunking logic as in the original example)
    登录后复制
    登录后复制

    分裂 >这种方法使用多个分离器(例如,双新线,单个新线,空格)递归地分配文本,并合并较小的块以优化目标字符大小。 它比基于角色的块更复杂,提供更好的上下文保存。 示例使用Langchain:

    3。文档特定的块
    # ... (LangChain installation and code as in the original example)
    登录后复制
    登录后复制

    使用格式特定的分隔符,此方法将块适应不同的文档格式(HTML,Python,Markdown等)。 这确保了块尊重文档的固有结构。 原始响应中提供了使用Langchain进行Python和Markdown的示例。

    4。语义块与兰班和Openai

    语义块的语义块根据语义含义分开文本,使用句子嵌入等技术来识别自然断点。 这种方法确保每个块代表一个连贯的想法。使用Langchain和OpenAI嵌入式的示例:

    5。代理块(LLM驱动的分块)

    >

    代理块利用LLM来识别文本中的自然断点,从而产生了更多相关的块。 这种方法利用LLM对语言和上下文的理解来产生更有意义的细分。 示例使用OpenAI API:

    text = "Clouds come floating into my life..."
    chunks = []
    chunk_size = 35
    chunk_overlap = 5
    # ... (Chunking logic as in the original example)
    登录后复制
    登录后复制
    6。基于截面的块

    >此方法利用文档的固有结构(标题,小标题,部分)来定义块。这对于结构良好的文档(例如研究论文或报告)特别有效。 使用Pymupdf和潜在的Dirichlet分配(LDA)进行基于主题的块:

    # ... (LangChain installation and code as in the original example)
    登录后复制
    登录后复制
    7。上下文块

    上下文块的重点是在每个块中保存语义上下文。 这样可以确保检索到的信息连贯且相关。示例使用Langchain和自定义提示:

    # ... (OpenAI API key setup and code as in the original example)
    登录后复制
    登录后复制
    8。晚分块

    >较晚的分块延迟块,直到为整个文档生成嵌入后。这可以保留远距离上下文依赖性,从而提高了嵌入和检索的准确性。使用Jina嵌入模型的示例:

    # ... (OpenAI API key setup and code as in the original example)
    登录后复制
    登录后复制
    结论

    >有效的块对于构建高性能的抹布系统至关重要。切块策略的选择显着影响信息检索的质量和产生的响应的连贯性。 通过仔细考虑数据的特征和应用程序的特定要求,开发人员可以选择最合适的块方法来优化其抹布系统的性能。 请记住,始终优先考虑在每个块中保持上下文的完整性和相关性。>

以上是抹布系统的8种类型的块 - 分析Vidhya的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板