Bellek grafikleri

LangChain ve Neo4j ile Graph RAG

Adam Cowley

Manager, Developer Education at Neo4j

RAG uygulamalarında bellek

Kısa süreli bellek

  • Kısa ömürlü, kapsamla sınırlı
  • Sohbet geçmişi

 

goldfish.png

Uzun süreli bellek

  • Anlamsal bellek: dünya hakkında olgular
  • Hiper-kişiselleştirme için yararlı

elephant.png

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellek

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellek

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellek

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellekten uzun süreliye

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellekten uzun süreliye

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellekten uzun süreliye

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellekten uzun süreliye

LangChain ve Neo4j ile Graph RAG

Kısa süreli bellekten uzun süreliye

LangChain ve Neo4j ile Graph RAG

Neo4j sohbet mesaj geçmişi

from langchain_neo4j import Neo4jChatMessageHistory


history = Neo4jChatMessageHistory(
url=NEO4J_URI,
username=NEO4J_USERNAME,
password=NEO4J_PASSWORD,
session_id="session_id_1",
)
# Add a human message history.add_user_message("hi!")
# Add an AI message history.add_ai_message("what's up?")
LangChain ve Neo4j ile Graph RAG

Her şeyi depolamanın sorunları

memory_methods.jpg

LangChain ve Neo4j ile Graph RAG

Neo4j sohbet mesaj geçmişi

from langchain_neo4j import Neo4jChatMessageHistory

history = Neo4jChatMessageHistory(
    url=NEO4J_URI,
    username=NEO4J_USERNAME,
    password=NEO4J_PASSWORD,
    session_id="session_id_1",

window=10 # defaults to 3 messages
)
# Get history print(history.messages)
[HumanMessage(content='hi!', ...), AIMessage(content='whats up?', ...)]
LangChain ve Neo4j ile Graph RAG

Sohbetleri özetleme

from pydantic import BaseModel, Field

class ConversationFact(BaseModel):
    """
    Bir konuşmadan nesne, özne, yüklem biçiminde olguları tutan sınıf.
    """

object: str = Field(description="Olgunun nesnesi. Örneğin, 'Adam' ")
subject: str = Field(description="Olgunun öznesi. Örneğin, 'Dondurma'")
relationship: str = Field(description="Nesne ve özne arasındaki ilişki. Örn: 'SEVER'")
class ConversationFacts(BaseModel): """ ConversationFact nesnelerinin listesini tutan sınıf. """ facts: list[ConversationFact] = Field(description="ConversationFact nesnelerinin listesi.")
LangChain ve Neo4j ile Graph RAG

Sohbetleri özetleme

llm_with_output = (
    init_chat_model("gpt-4o-mini", model_provider="openai", api_key="...")
        .with_structured_output(ConversationFacts)
)
LangChain ve Neo4j ile Graph RAG

Sohbetleri özetleme

prompt = ChatPromptTemplate.from_messages(

SystemMessagePromptTemplate.from_template("Konuşmadan olguları çıkarın."),
MessagesPlaceholder(variable_name="history"),
)
chain = prompt | llm_with_output
chain.invoke({
"history": history.messages,
})
ConversationFacts(facts=[
    ConversationFact(object='child', subject='Bluey', relationship='LOVES')
])
LangChain ve Neo4j ile Graph RAG

Hadi pratik yapalım!

LangChain ve Neo4j ile Graph RAG

Preparing Video For Download...