始める無料で始める

テキストチャンクの作成

『ロミオとジュリエット』のテキストは、幕(Act)と場(Scene)の構造をもつレキシカルグラフに読み込まれていますが、テキストが大きすぎて有用な埋め込みを生成できません。コードを完成させて、第一幕第一場(Act I, Scene I)のテキストを各セリフごとの小さなチャンクに分割しましょう。

visualize_graph() 関数は、グラフドキュメント内のノードとリレーションシップを表示します。

この演習はコースの一部です

Graph RAG with LangChain and Neo4j

コースを見る

演習の手順

  • line_nodegraph_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)
コードを編集して実行