Grafuri de memorie

Graph RAG cu LangChain și Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

Memoria în aplicațiile RAG

Memorie pe termen scurt

  • Durată scurtă, domeniu limitat
  • Istoricul conversației

 

goldfish.png

Memorie pe termen lung

  • Memorie semantică: fapte despre lume
  • Utilă pentru hiper-personalizare

elephant.png

Graph RAG cu LangChain și Neo4j

Memorie pe termen scurt

Graph RAG cu LangChain și Neo4j

Memorie pe termen scurt

Graph RAG cu LangChain și Neo4j

Memorie pe termen scurt

Graph RAG cu LangChain și Neo4j

De la memorie pe termen scurt la memorie pe termen lung

Graph RAG cu LangChain și Neo4j

De la memorie pe termen scurt la memorie pe termen lung

Graph RAG cu LangChain și Neo4j

De la memorie pe termen scurt la memorie pe termen lung

Graph RAG cu LangChain și Neo4j

De la memorie pe termen scurt la memorie pe termen lung

Graph RAG cu LangChain și Neo4j

De la memorie pe termen scurt la memorie pe termen lung

Graph RAG cu LangChain și Neo4j

Istoricul mesajelor Neo4j

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?")
Graph RAG cu LangChain și Neo4j

Probleme cu stocarea tuturor datelor

memory_methods.jpg

Graph RAG cu LangChain și Neo4j

Istoricul mesajelor Neo4j

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?', ...)]
Graph RAG cu LangChain și Neo4j

Rezumarea conversațiilor

from pydantic import BaseModel, Field

class ConversationFact(BaseModel):
    """
    A class that holds the facts from a conversation in a format of object, subject, predicate.
    """

object: str = Field(description="The object of the fact. For example, 'Adam' ")
subject: str = Field(description="The subject of the fact. For example, 'Ice cream'")
relationship: str = Field(description="The relationship between object and subject. Eg: 'LOVES'")
class ConversationFacts(BaseModel): """ A class that holds a list of ConversationFact objects. """ facts: list[ConversationFact] = Field(description="A list of ConversationFact objects.")
Graph RAG cu LangChain și Neo4j

Rezumarea conversațiilor

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

Rezumarea conversațiilor

prompt = ChatPromptTemplate.from_messages(

SystemMessagePromptTemplate.from_template("Extract the facts from the conversation."),
MessagesPlaceholder(variable_name="history"),
)
chain = prompt | llm_with_output
chain.invoke({
"history": history.messages,
})
ConversationFacts(facts=[
    ConversationFact(object='child', subject='Bluey', relationship='LOVES')
])
Graph RAG cu LangChain și Neo4j

Hai să exersăm!

Graph RAG cu LangChain și Neo4j

Preparing Video For Download...