节点使用
定义和自定义节点
节点代表源文档的 “块(chunks)”,可以是文本块、图像等。它们还包含元数据以及与其他节点和索引结构的关系信息。
节点是 LlamaIndex 中的一等公民。您可以选择直接定义节点及其所有属性。您也可以选择通过我们的 NodeParser
类将源文档 “解析” 为节点。
例如,你可以这样做
Python
from llama_index.core.node_parser import SentenceSplitter
parser = SentenceSplitter()
nodes = parser.get_nodes_from_documents(documents)
你也可以选择手动构造 Node 对象并跳过第一部分。例如,
Python
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
:
Python
node2.relationships[NodeRelationship.PARENT] = RelatedNodeInfo(
node_id=node1.node_id, metadata={"key": "val"}
)
自定义 ID
每个节点都有一个 node_id
属性,如果未手动指定,则会自动生成。此 ID 可用于多种用途;包括能够更新存储中的节点、能够定义节点之间的关系(通过IndexNode)等等。
您还可以直接获取和设置 node_id
任何的 TextNode
。