Tạo các đoạn văn bản (chunks)
Văn bản từ Romeo and Juliet đã được nạp vào một đồ thị từ vựng (lexical graph) với cấu trúc Hồi (Acts) và Cảnh (Scenes), nhưng văn bản vẫn quá lớn để tạo ra các embedding có ý nghĩa. Hoàn thiện mã để tách văn bản từ Hồi I, Cảnh I thành các đoạn nhỏ hơn cho từng dòng.
Hàm visualize_graph() sẽ hiển thị các node và các quan hệ trong tài liệu đồ thị (graph document).
Bài tập này là một phần của khóa học
Graph RAG với LangChain và Neo4j
Hướng dẫn bài tập
- Thêm mỗi
line_nodevào đối tượnggraph_document. - Tạo các quan hệ
HAS_LINEvàSPOKEN_BYlần lượt giữa mỗiscenevàline_node, và giữaline_nodevàcharacter, rồi thêm chúng vàograph_document.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
graph_document = GraphDocument(nodes=[scene], relationships=[])
characters = {}
for i, line in enumerate(lines[20:40]):
character, text = get_character_and_line(line)
line_node = Node(type="Line", id=f"{scene.id}-line-{i}", properties={"raw": line,"character": character, "text": text, "caption": f"{text[:15]}..."})
if character not in characters:
character_node = Node(type="Character", id=character, properties={"name": character})
characters[character] = character_node
graph_document.nodes.append(character_node)
# Add nodes to the array
graph_document.____.append(____)
# Add relationship to the array
graph_document.____.extend(
[Relationship(source=scene, target=line_node, type="____"),
Relationship(source=line_node, target=characters[character], type="SPOKEN_BY")]
)
visualize_graph(graph_document)