!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

LangChain v0.2 is coming soon! Preview the new docs [here](/v0.2/docs/introduction/).

[

![🦜️🔗 Langchain](/v0.1/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.1/img/brand/wordmark-dark.png)

](/v0.1/)[Docs](/v0.1/docs/get_started/introduction/)[Use cases](/v0.1/docs/use_cases/)[Integrations](/v0.1/docs/integrations/platforms/)[API Reference](https://api.js.langchain.com)

[More](#)

*   [People](/v0.1/docs/people/)
*   [Community](/v0.1/docs/community/)
*   [Tutorials](/v0.1/docs/additional_resources/tutorials/)
*   [Contributing](/v0.1/docs/contributing/)

[v0.1](#)

*   [v0.2](https://js.langchain.com/v0.2/docs/introduction)
*   [v0.1](/v0.1/docs/get_started/introduction/)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Get started](/v0.1/docs/get_started/)
    
    *   [Introduction](/v0.1/docs/get_started/introduction/)
    *   [Installation](/v0.1/docs/get_started/installation/)
    *   [Quickstart](/v0.1/docs/get_started/quickstart/)
*   [LangChain Expression Language](/v0.1/docs/expression_language/)
    
    *   [Get started](/v0.1/docs/expression_language/get_started/)
    *   [Why use LCEL?](/v0.1/docs/expression_language/why/)
    *   [Interface](/v0.1/docs/expression_language/interface/)
    *   [Streaming](/v0.1/docs/expression_language/streaming/)
    *   [How to](/v0.1/docs/expression_language/how_to/routing/)
        
    *   [Cookbook](/v0.1/docs/expression_language/cookbook/)
        
    *   [LangChain Expression Language (LCEL)](/v0.1/docs/expression_language/)
*   [Modules](/v0.1/docs/modules/)
    
    *   [Model I/O](/v0.1/docs/modules/model_io/)
        
    *   [Retrieval](/v0.1/docs/modules/data_connection/)
        
    *   [Chains](/v0.1/docs/modules/chains/)
    *   [Agents](/v0.1/docs/modules/agents/)
        
    *   [More](/v0.1/docs/modules/memory/)
        
        *   [Memory](/v0.1/docs/modules/memory/)
            
            *   [\[Beta\] Memory](/v0.1/docs/modules/memory/)
            *   [Chat Message History](/v0.1/docs/modules/memory/chat_messages/)
                
            *   [Memory types](/v0.1/docs/modules/memory/types/)
                
                *   [Conversation buffer memory](/v0.1/docs/modules/memory/types/buffer/)
                *   [Using Buffer Memory with Chat Models](/v0.1/docs/modules/memory/types/buffer_memory_chat/)
                *   [Conversation buffer window memory](/v0.1/docs/modules/memory/types/buffer_window/)
                *   [Entity memory](/v0.1/docs/modules/memory/types/entity_summary_memory/)
                *   [Combined memory](/v0.1/docs/modules/memory/types/multiple_memory/)
                *   [Conversation summary memory](/v0.1/docs/modules/memory/types/summary/)
                *   [Conversation summary buffer memory](/v0.1/docs/modules/memory/types/summary_buffer/)
                *   [Vector store-backed memory](/v0.1/docs/modules/memory/types/vectorstore_retriever_memory/)
        *   [Callbacks](/v0.1/docs/modules/callbacks/)
            
        *   [Experimental](/v0.1/docs/modules/experimental/)
            
*   [Security](/v0.1/docs/security/)
*   [Guides](/v0.1/docs/guides/)
    
*   [Ecosystem](/v0.1/docs/ecosystem/)
    
*   [LangGraph](/v0.1/docs/langgraph/)
*   * * *
    

*   [](/v0.1/)
*   [Modules](/v0.1/docs/modules/)
*   More
*   [Memory](/v0.1/docs/modules/memory/)
*   [Memory types](/v0.1/docs/modules/memory/types/)
*   Entity memory

On this page

Entity memory
=============

Entity Memory remembers given facts about specific entities in a conversation. It extracts information on entities (using an LLM) and builds up its knowledge about that entity over time (also using an LLM).

Let's first walk through using this functionality.

tip

See [this section for general instructions on installing integration packages](/v0.1/docs/get_started/installation/#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { OpenAI } from "@langchain/openai";import {  EntityMemory,  ENTITY_MEMORY_CONVERSATION_TEMPLATE,} from "langchain/memory";import { LLMChain } from "langchain/chains";export const run = async () => {  const memory = new EntityMemory({    llm: new OpenAI({ temperature: 0 }),    chatHistoryKey: "history", // Default value    entitiesKey: "entities", // Default value  });  const model = new OpenAI({ temperature: 0.9 });  const chain = new LLMChain({    llm: model,    prompt: ENTITY_MEMORY_CONVERSATION_TEMPLATE, // Default prompt - must include the set chatHistoryKey and entitiesKey as input variables.    memory,  });  const res1 = await chain.invoke({ input: "Hi! I'm Jim." });  console.log({    res1,    memory: await memory.loadMemoryVariables({ input: "Who is Jim?" }),  });  const res2 = await chain.invoke({    input: "I work in construction. What about you?",  });  console.log({    res2,    memory: await memory.loadMemoryVariables({ input: "Who is Jim?" }),  });};

#### API Reference:

*   [OpenAI](https://api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [EntityMemory](https://api.js.langchain.com/classes/langchain_memory.EntityMemory.html) from `langchain/memory`
*   [ENTITY\_MEMORY\_CONVERSATION\_TEMPLATE](https://api.js.langchain.com/variables/langchain_memory.ENTITY_MEMORY_CONVERSATION_TEMPLATE.html) from `langchain/memory`
*   [LLMChain](https://api.js.langchain.com/classes/langchain_chains.LLMChain.html) from `langchain/chains`

### Inspecting the Memory Store[​](#inspecting-the-memory-store "Direct link to Inspecting the Memory Store")

You can also inspect the memory store directly to see the current summary of each entity:

    import { OpenAI } from "@langchain/openai";import {  EntityMemory,  ENTITY_MEMORY_CONVERSATION_TEMPLATE,} from "langchain/memory";import { LLMChain } from "langchain/chains";const memory = new EntityMemory({  llm: new OpenAI({ temperature: 0 }),});const model = new OpenAI({ temperature: 0.9 });const chain = new LLMChain({  llm: model,  prompt: ENTITY_MEMORY_CONVERSATION_TEMPLATE,  memory,});await chain.invoke({ input: "Hi! I'm Jim." });await chain.invoke({  input: "I work in sales. What about you?",});const res = await chain.invoke({  input: "My office is the Utica branch of Dunder Mifflin. What about you?",});console.log({  res,  memory: await memory.loadMemoryVariables({ input: "Who is Jim?" }),});/*  {    res: "As an AI language model, I don't have an office in the traditional sense. I exist entirely in digital space and am here to assist you with any questions or tasks you may have. Is there anything specific you need help with regarding your work at the Utica branch of Dunder Mifflin?",    memory: {      entities: {        Jim: 'Jim is a human named Jim who works in sales.',        Utica: 'Utica is the location of the branch of Dunder Mifflin where Jim works.',        'Dunder Mifflin': 'Dunder Mifflin has a branch in Utica.'      }    }  }*/

#### API Reference:

*   [OpenAI](https://api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [EntityMemory](https://api.js.langchain.com/classes/langchain_memory.EntityMemory.html) from `langchain/memory`
*   [ENTITY\_MEMORY\_CONVERSATION\_TEMPLATE](https://api.js.langchain.com/variables/langchain_memory.ENTITY_MEMORY_CONVERSATION_TEMPLATE.html) from `langchain/memory`
*   [LLMChain](https://api.js.langchain.com/classes/langchain_chains.LLMChain.html) from `langchain/chains`

* * *

#### Help us out by providing feedback on this documentation page:

[

Previous

Conversation buffer window memory

](/v0.1/docs/modules/memory/types/buffer_window/)[

Next

Combined memory

](/v0.1/docs/modules/memory/types/multiple_memory/)

*   [Inspecting the Memory Store](#inspecting-the-memory-store)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.