节点解析器使用模式#
节点解析器是一个简单的抽象,它接收一个文档列表,并将它们分块成Node
对象,使得每个节点都是父文档的特定块。当文档被分成节点时,所有属性都会被继承到子节点(例如metadata
、文本和元数据模板等)。您可以在这里了解更多关于Node
和Document
属性的信息。
入门#
独立使用#
节点解析器可以单独使用:
from llama_index.core import Document
from llama_index.core.node_parser import SentenceSplitter
node_parser = SentenceSplitter(chunk_size=1024, chunk_overlap=20)
nodes = node_parser.get_nodes_from_documents(
[Document(text="long text")], show_progress=False
)
转换使用#
节点解析器可以包含在任何一组转换中,与摄入管道一起使用。
from llama_index.core import SimpleDirectoryReader
from llama_index.core.ingestion import IngestionPipeline
from llama_index.core.node_parser import TokenTextSplitter
documents = SimpleDirectoryReader("./data").load_data()
pipeline = IngestionPipeline(transformations=[TokenTextSplitter(), ...])
nodes = pipeline.run(documents=documents)
索引使用#
或者设置在transformations
或全局设置中,在使用.from_documents()
构建索引时自动使用:
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.node_parser import SentenceSplitter
documents = SimpleDirectoryReader("./data").load_data()
# 全局
from llama_index.core import Settings
Settings.text_splitter = SentenceSplitter(chunk_size=1024, chunk_overlap=20)
# 每个索引
index = VectorStoreIndex.from_documents(
documents,
transformations=[SentenceSplitter(chunk_size=1024, chunk_overlap=20)],
)
模块#
请参阅完整的模块指南。