开始使用免费开始使用

创建文本分块

《罗密欧与朱丽叶》的文本已按幕(Act)和场(Scene)的结构加载到词汇图中,但文本仍然过大,无法生成有意义的嵌入向量(embedding — 向量表示)。请完成代码,将第一幕第一场(Act I, Scene I)的文本按每一行拆分为更小的片段。

visualize_graph() 函数将显示图文档中的节点和关系。

本练习是课程的一部分

使用 LangChain 和 Neo4j 的 Graph RAG

查看课程

练习说明

  • 将每个 line_node 追加到 graph_document 对象中。
  • 在每个 sceneline_node 之间,以及 line_nodecharacter 之间,分别创建 HAS_LINESPOKEN_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)
编辑并运行代码