Graf domain

Graph RAG dengan LangChain dan Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

Graf domain

Diagram knowledge graph yang menampilkan graf leksikal di kiri dengan buku, bab, dan halaman, serta di kanan orang dan perusahaan dalam buku beserta referensi dari sumber lain termasuk Wikipedia

Graph RAG dengan LangChain dan Neo4j

Graf leksikal ke graf domain

Lirik lagu Don't Stop Believing oleh Journey

Graph RAG dengan LangChain dan Neo4j

Graf leksikal ke graf domain

Lirik lagu Don't Stop Believing oleh Journey dengan "Small Town Boy" disorot sebagai orang

Graph RAG dengan LangChain dan Neo4j

Graf leksikal ke graf domain

Lirik lagu Don't Stop Believing oleh Journey dengan "South Detroit" disorot sebagai lokasi

Graph RAG dengan LangChain dan Neo4j

Graf leksikal ke graf domain

Lirik lagu Don't Stop Believing oleh Journey dengan "Born" disorot sebagai relasi antara node untuk orang "Small Town Boy" dan lokasi "South Detroit"

Graph RAG dengan LangChain dan Neo4j

Graf leksikal ke graf domain

Lirik lagu Don't Stop Believing oleh Journey dengan "Raised" disorot sebagai relasi antara node untuk orang "Small Town Boy" dan lokasi "South Detroit"

Graph RAG dengan LangChain dan Neo4j

Contoh graf domain

Contoh model graf domain: seorang orang yang bekerja di sebuah perusahaan, berlokasi pada suatu alamat. Orang tersebut memegang kartu kredit, yang memiliki pesanan di perusahaan dengan lokasi yang sama

Graph RAG dengan LangChain dan Neo4j

Output terstruktur

from pydantic import BaseModel, Field

from typing import Optional
class Character(BaseModel): """A character from the play."""
id: str = Field(description="A unique identifier for the character in slug-case",
examples=["montague-romeo", "tybalt"])
name: str = Field(description="The full name of the character", examples=["Romeo", "Tybalt"])
family: Optional[str] = Field(description="The name of the family they belong to", examples=["Montague", "Capulet"])
class CharacterOutput(BaseModel): characters: list[Character] = Field(description="A list of characters")
Graph RAG dengan LangChain dan Neo4j

Menggunakan output terstruktur

from langchain.chat_models import init_chat_model
llm = init_chat_model("gpt-4o-mini", model_provider="openai", api_key="...")


# With a structured output character_model = llm.with_structured_output(CharacterOutput)
# Use within a chain chain = extraction_prompt | character_model
# Handle the response output = chain.invoke(...)
CharacterOutput(characters=[Character, Character, Character...])
Graph RAG dengan LangChain dan Neo4j

Menyimpan entitas

nodes = [

Node(
type="Character",
id=character.id,
properties={"name": character.name, "family": character.family}
)
for character in output.characters
]
# Build a GraphDocument graph_document = GraphDocument(nodes=nodes, relationships=[])
# Save to the graph graph.add_graph_documents([graph_document])
Graph RAG dengan LangChain dan Neo4j

Ayo berlatih!

Graph RAG dengan LangChain dan Neo4j

Preparing Video For Download...