前言
本文主要解释LlamaIndex
中的常用节点解析器和文本割器,这两个作用基本上都是一样的,文本割器功能相对简单,节点解析器的功能相对复杂。了解掌握LlamaIndex
中自带的解析解析器和文本分割器,有助于自己在选着合适的解析分割器对文本进行分割,从而帮助实现提示知识库的内容检索的准确度。
LlamaIndex
官方API文档: https://docs.llamaindex.ai/en/stable/api_reference/
节点解析器
AlibabaCloudAISearchNodeParser
AlibabaCloudAISearchNodeParser 阿里云AI搜索节点解析器
相关链接
https://help.aliyun.com/zh/open-search/search-platform/user-guide/data-preprocessing
https://help.aliyun.com/zh/open-search/search-platform/developer-reference/text-embedding-api-details
DashScopeJsonNodeParser
DashScope Json格式元素节点解析器。
将DashScope Parse中的json格式文档拆分为对应于嵌入对象(如表)的文本节点和索引节点。
TopicNodeParser
主要用于解析文档中的话题(主题)信息。需要搭配LLM提取主题信息。
HierarchicalNodeParser
分层节点解析器。
使用 NodeParser 将文档拆分为递归层次结构节点。
注意:这将返回简单列表中的节点层次结构,其中将有 父节点(例如,具有较大的块大小)和子节点之间的重叠 每个父级(例如,具有较小的块大小)。
例如,这可能会返回如下节点列表:
- 块大小为 2048 的顶级节点列表
- 二级节点列表,其中每个节点都是顶级节点的子节点, 区块大小 512
- 三级节点列表,其中每个节点都是二级节点的子节点, 区块大小 128
HTMLNodeParser
HTML文本节点解析器,使用自定义HTML拆分逻辑将文档拆分为node。
JSONNodeParser
JSON节点解析器。
使用自定义JSON拆分逻辑将文档拆分为node。
LangchainNodeParser
围绕langchain文本分割器的基本包装器。
TODO:弄清楚如何让这个元数据感知。
MarkdownNodeParser
Markdown节点解析器。
使用自定义Markdown拆分逻辑将文档拆分为节点。
MarkdownElementNodeParser
Markdown元素节点解析器。
将标记文档拆分为对应于嵌入对象(如表)的文本节点和索引节点。
SemanticSplitterNodeParser
语义节点解析器。
将文档拆分为节点,每个节点是一组语义相关的句子。
SentenceWindowNodeParser
句子窗口节点解析器。
将文档拆分为节点,每个节点是一个句子。每个节点包含元数据中周围句子的窗口。
UnstructuredElementNodeParser
非结构化元素节点解析器。
将文档拆分为对应于嵌入对象(如表结构的数据)的文本节点和索引节点。
文本分割器
CodeSplitter
代码分割器,用于代码的分割。
SentenceSplitter
句子分割器,解析文本时优先选择完整的句子。
总的来说,这门课尽量把句子和段落放在一起。因此,与最初的TokenTextSplitter
相比,在节点块的末尾不太可能出现挂起的句子或句子的一部分。
TokenTextSplitter
token文本分割器
将文本转换为token后,按照token大小进行的分割文本的实现。