การสร้าง text chunk
ข้อความจาก Romeo and Juliet ถูกโหลดลงใน lexical graph ที่มีโครงสร้างแบ่งตาม Acts และ Scenes แล้ว แต่ข้อความยังมีขนาดใหญ่เกินไปสำหรับการสร้าง embedding ที่มีความหมาย ให้เติมโค้ดให้สมบูรณ์เพื่อแบ่งข้อความจาก Act I, Scene I ออกเป็น chunk เล็กๆ ตามแต่ละบรรทัด
ฟังก์ชัน visualize_graph() จะแสดง node และ relationship ใน graph document
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Graph RAG ด้วย LangChain และ Neo4j
คำแนะนำการฝึกหัด
- เพิ่ม
line_nodeแต่ละตัวเข้าไปใน objectgraph_document - สร้าง relationship แบบ
HAS_LINEและSPOKEN_BYระหว่างsceneกับline_nodeและระหว่างline_nodeกับcharacterตามลำดับ แล้วเพิ่มเข้าไปใน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)