ग्राफ़ और RAG

LangChain और Neo4j के साथ Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

अपने इंस्ट्रक्टर से मिलें

 

  • मैनेजर, डेवलपर एजुकेशन, Neo4j
  • Neo4j GraphAcademy के माध्यम से डेवलपर एजुकेशन
  • 20+ वर्षों का सॉफ्टवेयर डेवलपमेंट अनुभव
  • 10+ वर्षों का Neo4j अनुभव

 

एडम की तस्वीर

1 https://graphacademy.neo4j.com
LangChain और Neo4j के साथ Graph RAG

RAG में R

एक एप्लिकेशन डायग्राम जहाँ यूज़र इनपुट को एक प्रॉम्प्ट में जोड़कर LLM को भेजा जाता है

LangChain और Neo4j के साथ Graph RAG

RAG में R

प्रॉम्प्ट को ऐसा संदर्भ चाहिए जो डॉक्यूमेंट्स और डेटा सोर्सेस से आता है

LangChain और Neo4j के साथ Graph RAG

RAG में R

यह डेटा अक्सर वेक्टर एम्बेडिंग्स में बदला जाता है

LangChain और Neo4j के साथ Graph RAG

सेमांटिक सर्च कहाँ फेल होती है?

वेक्टर इनके लिए अच्छे हैं

  • धुंधले या खुले-आम प्रश्न

वेक्टर इनके लिए कमज़ोर हैं

  • बहुत विशिष्ट या तथ्य-आधारित प्रश्न
  • संख्यात्मक या एक्ज़ैक्ट-मैच क्वेरीज़
  • लॉजिकल क्वेरीज़

Paul Graham, Generative AI के बारे में क्या सोचते हैं?

Paul Graham ने कितनी Generative AI स्टार्टअप्स में निवेश किया है?

LangChain और Neo4j के साथ Graph RAG

वेक्टर बनाम नॉलेज ग्राफ़्स

टेक्स्ट वेक्टर एम्बेडिंग
He's just a city boy born [0.12, -0.34, 0.56, 0.78, ..., -0.91]
born and raised in South Detroit [0.22, 0.45, -0.67, 0.11, ..., 0.33]
He took the midnight train [-0.55, 0.89, 0.12, -0.44, ..., 0.67]
going anywhere [0.78, -0.23, 0.45, 0.91, ..., -0.12]

एक ग्राफ़ डायग्राम जो "Don't Stop Believin'" के लिरिक्स में आए एंटिटीज़ दिखाता है। एक Small town boy, South Detroit से BORN और RAISED रिश्तों के साथ

LangChain और Neo4j के साथ Graph RAG

वेक्टर बनाम नॉलेज ग्राफ़्स

टेक्स्ट वेक्टर एम्बेडिंग
He's just a city boy born [0.12, -0.34, 0.56, 0.78, ..., -0.91]
born and raised in South Detroit [0.22, 0.45, -0.67, 0.11, ..., 0.33]
He took the midnight train [-0.55, 0.89, 0.12, -0.44, ..., 0.67]
going anywhere [0.78, -0.23, 0.45, 0.91, ..., -0.12]

नोड्स: एक व्यक्ति — Small town boy, एक स्थान — South Detroit, एक ट्रेन — Midnight Train, और एक स्थान — Anywhere

LangChain और Neo4j के साथ Graph RAG

वेक्टर बनाम नॉलेज ग्राफ़्स

टेक्स्ट वेक्टर एम्बेडिंग
He's just a city boy born [0.12, -0.34, 0.56, 0.78, ..., -0.91]
born and raised in South Detroit [0.22, 0.45, -0.67, 0.11, ..., 0.33]
He took the midnight train [-0.55, 0.89, 0.12, -0.44, ..., 0.67]
going anywhere [0.78, -0.23, 0.45, 0.91, ..., -0.12]

रिश्ते BORN और RAISED व्यक्ति से स्थान तक जाते हैं। GOING रिश्ता Midnight Train नोड से Anywhere नोड तक जाता है

LangChain और Neo4j के साथ Graph RAG

नॉलेज ग्राफ़्स और Neo4j

 

  • Neo4j दुनिया का अग्रणी ग्राफ़ डेटाबेस है
  • लचीला, स्कीमा-ऑप्शनल
  • langchain-neo4j LangChain इंटीग्रेशन
  • LCEL: LangChain Expression Language

neo4j और langchain के लोगो

1 https://db-engines.com/en/ranking/graph%20dbms
LangChain और Neo4j के साथ Graph RAG

नोड्स चीज़ों का प्रतिनिधित्व करते हैं

from langchain_neo4j.graphs.graph_document \
  import Node

book = Node(
type="Book",
id=f"9781098127107",
properties={ "title": "Building Knowledge Graphs" }
)

एक ग्राफ़ डायग्राम में बुक नोड, जिसमें ID और Title प्रॉपर्टीज़ हैं

LangChain और Neo4j के साथ Graph RAG

रिलेशनशिप्स नोड्स को जोड़ते हैं

from langchain_neo4j.graphs.graph_document \
  import Node, Relationship

book = Node(type="Book", id=f"9781098127107")

jesus = Node(type="Person", id="dr-jesus-barrasa")
jim = Node(type="Person", id="chief-scientist")
for author in [jesus, jim]:
    relationship = Relationship(





)

एक Book नोड से दो Person नोड्स तक जाने वाले दो WRITTEN_BY रिश्ते जो ऑथर्स को दिखाते हैं

LangChain और Neo4j के साथ Graph RAG

रिलेशनशिप्स नोड्स को जोड़ते हैं

from langchain_neo4j.graphs.graph_document \
  import Node, Relationship

book = Node(type="Book", id=f"9781098127107")

jesus = Node(type="Person", id="dr-jesus-barrasa")
jim = Node(type="Person", id="chief-scientist")
for author in [jesus, jim]:
    relationship = Relationship(

source=book,



)

WRITTEN_BY रिश्ते का स्रोत नोड Book है

LangChain और Neo4j के साथ Graph RAG

रिलेशनशिप्स नोड्स को जोड़ते हैं

from langchain_neo4j.graphs.graph_document \
  import Node, Relationship

book = Node(type="Book", id=f"9781098127107")

jesus = Node(type="Person", id="dr-jesus-barrasa")
jim = Node(type="Person", id="chief-scientist")
for author in [jesus, jim]:
    relationship = Relationship(

source=book,
target=author,


)

WRITTEN_IN रिश्ते का डेस्टिनेशन नोड Person है

LangChain और Neo4j के साथ Graph RAG

रिलेशनशिप्स नोड्स को जोड़ते हैं

from langchain_neo4j.graphs.graph_document \
  import Node, Relationship

book = Node(type="Book", id=f"9781098127107")

jesus = Node(type="Person", id="dr-jesus-barrasa")
jim = Node(type="Person", id="chief-scientist")
for author in [jesus, jim]:
    relationship = Relationship(

source=book,
target=author,
type="WRITTEN_BY"
properties=dict(...)
)

बुक और दो WRITTEN_BY रिश्तों वाला नोड डायग्राम, दिखाता है कि एक नोड के कई रिश्ते हो सकते हैं।

LangChain और Neo4j के साथ Graph RAG

Neo4j से कनेक्ट करना

from langchain_neo4j import Neo4jGraph


graph = Neo4jGraph( url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD )
1 https://neo4j.com/docs/getting-started/
LangChain और Neo4j के साथ Graph RAG

ग्राफ़ डॉक्यूमेंट्स सेव करना

from langchain_neo4j.graphs.graph_document import GraphDocument


# Nodes और Relationships के लिए रैपर doc = GraphDocument(
nodes=[book, jesus, jim],
relationships=[jesus_wrote_book, jim_wrote_book]
)
# नोड्स और रिश्तों को डेटाबेस में सेव करें graph.add_graph_documents([graph_document])
LangChain और Neo4j के साथ Graph RAG

तो, GraphRAG क्या है?

पिछला डायग्राम, डॉक्यूमेंट्स और उनकी एम्बेडिंग्स से आए संदर्भ के साथ

LangChain और Neo4j के साथ Graph RAG

तो, GraphRAG क्या है?

पिछला डायग्राम, डॉक्यूमेंट्स से आए संदर्भ के साथ, और उनसे निकले नोड्स व रिश्तों वाला एक नॉलेज ग्राफ़ जोड़ा गया है

LangChain और Neo4j के साथ Graph RAG

अभ्यास करते हैं!

LangChain और Neo4j के साथ Graph RAG

Preparing Video For Download...