Skip to content
LlamaIndex 文档版本 跟随上游 源快照 d01167dc 更新于 2026-10-15

Node 表示源 Document 的“块”,可以是文本块、图像,或更多形态。它们同样包含元数据,以及与其他节点和索引结构之间的关联信息。

在 LlamaIndex 里 Node 是一等公民。你可以直接定义 Node 及其全部属性,也可以用我们的 NodeParser 类把源 Document “解析”成 Node。

例如,你可以这样写

from llama_index.core.node_parser import SentenceSplitter

parser = SentenceSplitter()

nodes = parser.get_nodes_from_documents(documents)

你也可以跳过上面这一步,直接手工构造 Node 对象。例如:

from llama_index.core.schema import TextNode, NodeRelationship, RelatedNodeInfo

node1 = TextNode(text="<text_chunk>", id_="<node_id>")
node2 = TextNode(text="<text_chunk>", id_="<node_id>")
# set relationships
node1.relationships[NodeRelationship.NEXT] = RelatedNodeInfo(
    node_id=node2.node_id
)
node2.relationships[NodeRelationship.PREVIOUS] = RelatedNodeInfo(
    node_id=node1.node_id
)
nodes = [node1, node2]

RelatedNodeInfo 类还可以按需存放额外的 metadata:

node2.relationships[NodeRelationship.PARENT] = RelatedNodeInfo(
    node_id=node1.node_id, metadata={"key": "val"}
)

定制 ID

每个节点都有一个 node_id 属性;若未手动指定则自动生成。这个 ID 可用于多种用途,包括在存储中更新节点、定义节点之间的关系(通过 IndexNode)等等。

你也可以直接读取或设置任意 TextNode 的 node_id。

print(node.node_id)
node.node_id = "My new node_id!"

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。