กราฟหน่วยความจำ

Graph RAG ด้วย LangChain และ Neo4j

Adam Cowley

Manager, Developer Education at Neo4j

หน่วยความจำในแอปพลิเคชัน RAG

หน่วยความจำระยะสั้น

  • มีอายุสั้น ขอบเขตจำกัด
  • ประวัติการสนทนา

 

ปลาทอง

หน่วยความจำระยะยาว

  • Semantic memory: ข้อเท็จจริงเกี่ยวกับโลก
  • เหมาะสำหรับการปรับแต่งเฉพาะบุคคล

ช้าง

Graph RAG ด้วย LangChain และ Neo4j

หน่วยความจำระยะสั้น

Graph RAG ด้วย LangChain และ Neo4j

หน่วยความจำระยะสั้น

Graph RAG ด้วย LangChain และ Neo4j

หน่วยความจำระยะสั้น

Graph RAG ด้วย LangChain และ Neo4j

จากหน่วยความจำระยะสั้นสู่ระยะยาว

Graph RAG ด้วย LangChain และ Neo4j

จากหน่วยความจำระยะสั้นสู่ระยะยาว

Graph RAG ด้วย LangChain และ Neo4j

จากหน่วยความจำระยะสั้นสู่ระยะยาว

Graph RAG ด้วย LangChain และ Neo4j

จากหน่วยความจำระยะสั้นสู่ระยะยาว

Graph RAG ด้วย LangChain และ Neo4j

จากหน่วยความจำระยะสั้นสู่ระยะยาว

Graph RAG ด้วย LangChain และ Neo4j

ประวัติข้อความแชทใน 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 ด้วย LangChain และ Neo4j

ปัญหาของการเก็บข้อมูลทุกอย่าง

memory_methods.jpg

Graph RAG ด้วย LangChain และ Neo4j

ประวัติข้อความแชทใน 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 ด้วย LangChain และ Neo4j

การสรุปบทสนทนา

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 ด้วย LangChain และ Neo4j

การสรุปบทสนทนา

llm_with_output = (
    init_chat_model("gpt-4o-mini", model_provider="openai", api_key="...")
        .with_structured_output(ConversationFacts)
)
Graph RAG ด้วย LangChain และ Neo4j

การสรุปบทสนทนา

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 ด้วย LangChain และ Neo4j

มาฝึกกันเถอะ!

Graph RAG ด้วย LangChain และ Neo4j

Preparing Video For Download...