開始使用免費開始

建立文字區塊

《羅密歐與茱麗葉》的文本已載入到一個以幕(Act)與場(Scene)為結構的詞彙圖(lexical graph)中,但文字仍過大,無法產生有意義的嵌入向量(embedding)。請完成程式碼,將第一幕第一場的文本依每一行切成較小的區塊。

visualize_graph() 函式會顯示圖文件中的節點與關係。

本練習屬於課程

使用 LangChain 與 Neo4j 的 Graph RAG

檢視課程

練習說明

  • 將每個 line_node 附加到 graph_document 物件中。
  • 在每個 sceneline_node 之間建立 HAS_LINE 關係,並在 line_nodecharacter 之間建立 SPOKEN_BY 關係,然後將它們加入 graph_document

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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)
編輯並執行程式碼