노드 정의 및 커스터마이징

노드 정의 및 커스터마이징

Node가 소스 Document의 "청크"를 나타내며, 정의하고 커스터마이즈하는 방법을 알아봐요.

출처: 문서

본문

Node는 소스 Document의 "청크"를 나타내요 — 텍스트 청크든, 이미지든, 그 이상이든요. 또한 다른 노드와 인덱스 구조와의 메타데이터와 관계 정보를 담아요.

Node는 LlamaIndex에서 일급 시민이에요. 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!"

더 알아보기 (Learn more)