Grafikler ve RAG

LangChain ve Neo4j ile Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

Eğitmeninizi tanıyın

 

  • Neo4j'de Geliştirici Eğitimi Yöneticisi
  • Neo4j GraphAcademy ile geliştirici eğitimi
  • 20+ yıl yazılım geliştirme deneyimi
  • 10+ yıl Neo4j deneyimi

 

Adam'ın fotoğrafı

1 https://graphacademy.neo4j.com
LangChain ve Neo4j ile Graph RAG

RAG'deki R

Bir uygulama diyagramı: Kullanıcı girdisi bir isteme eklenir ve bir LLM'ye gönderilir

LangChain ve Neo4j ile Graph RAG

RAG'deki R

İstem, belgeler ve veri kaynaklarından gelen bağlam gerektirir

LangChain ve Neo4j ile Graph RAG

RAG'deki R

Bu veriler sıklıkla vektör gömülerine dönüştürülür

LangChain ve Neo4j ile Graph RAG

Anlamsal arama nerede yetersiz kalır?

Vektörler şunlarda iyidir

  • Belirsiz veya açık uçlu sorular

Vektörler şunlarda etkisizdir

  • Çok spesifik veya olguya dayalı sorular
  • Sayısal veya birebir eşleşen sorgular
  • Mantıksal sorgular

Paul Graham, Üretken Yapay Zekâ hakkında ne düşünüyor?

Paul Graham kaç Üretken Yapay Zekâ girişimine yatırım yaptı?

LangChain ve Neo4j ile Graph RAG

Vektörler vs. bilgi grafikleri

Metin Vektör Gömüsü
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' şarkı sözlerinde geçen varlıkları gösteren bir grafik diyagramı. Küçük kasabalı bir erkek çocuğu, South Detroit ile DOĞDU ve BÜYÜDÜ ilişkileriyle

LangChain ve Neo4j ile Graph RAG

Vektörler vs. bilgi grafikleri

Metin Vektör Gömüsü
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]

Düğümler: bir kişi: Küçük kasabalı erkek çocuk, bir konum: South Detroit, bir tren: Gece Yarısı Treni ve bir konum: Herhangi bir yer

LangChain ve Neo4j ile Graph RAG

Vektörler vs. bilgi grafikleri

Metin Vektör Gömüsü
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]

KİMİNLE DOĞDU (BORN) ve BÜYÜDÜ (RAISED) ilişkileri kişiden konuma gider. GİDEN (GOING) tren, Gece Yarısı Treni düğümünden Herhangi bir yer düğümüne gider

LangChain ve Neo4j ile Graph RAG

Bilgi grafikleri ve Neo4j

 

  • Neo4j, dünyanın önde gelen grafik veritabanıdır
  • Esnek, şema-opsiyonel
  • langchain-neo4j LangChain entegrasyonu
  • LCEL: LangChain Expression Language

neo4j ve langchain logoları

1 https://db-engines.com/en/ranking/graph%20dbms
LangChain ve Neo4j ile Graph RAG

Düğümler varlıkları temsil eder

from langchain_neo4j.graphs.graph_document \
  import Node

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

Kimlik ve Başlık özelliklerine sahip bir kitap düğümünü gösteren grafik diyagramı

LangChain ve Neo4j ile Graph RAG

İlişkiler düğümleri bağlar

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(





)

Bir Kitap düğümünden yazarlara giden iki WRITTEN_BY ilişkisi

LangChain ve Neo4j ile Graph RAG

İlişkiler düğümleri bağlar

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 ilişkisinin kaynak düğümü Kitap düğümüdür

LangChain ve Neo4j ile Graph RAG

İlişkiler düğümleri bağlar

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 ilişkisi için hedef düğüm bir Kişidir

LangChain ve Neo4j ile Graph RAG

İlişkiler düğümleri bağlar

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(...)
)

Düğümler, Kitap ve yazarlara giden iki WRITTEN_BY ilişkisinin yer aldığı diyagram; düğümlerin birçok ilişkiye sahip olabileceğini gösterir.

LangChain ve Neo4j ile Graph RAG

Neo4j'e bağlanma

from langchain_neo4j import Neo4jGraph


graph = Neo4jGraph( url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD )
1 https://neo4j.com/docs/getting-started/
LangChain ve Neo4j ile Graph RAG

Graf belgelerini kaydetme

from langchain_neo4j.graphs.graph_document import GraphDocument


# Düğümler ve İlişkiler için sarmalayıcı doc = GraphDocument(
nodes=[book, jesus, jim],
relationships=[jesus_wrote_book, jim_wrote_book]
)
# Düğümleri ve ilişkileri veritabanına kaydet graph.add_graph_documents([graph_document])
LangChain ve Neo4j ile Graph RAG

Peki, GraphRAG nedir?

Önceki diyagram: belgelerden gelen bağlam ve gömüler

LangChain ve Neo4j ile Graph RAG

Peki, GraphRAG nedir?

Önceki diyagram: belgelerden gelen bağlam; ayrıca belgelerden türetilmiş düğüm ve ilişkileri gösteren bir bilgi grafiği ekli

LangChain ve Neo4j ile Graph RAG

Hadi pratik yapalım!

LangChain ve Neo4j ile Graph RAG

Preparing Video For Download...