AI Navigate

LangChainのメモリタイプ

Dev.to / 2026/3/15

💬 オピニオンTools & Practical Usage

要点

  • LangChainは、ステートレスなLLMにメモリを模倣させ、文脈とトークンコストのバランスを取るための複数のメモリパターンを提供します。
  • 5つのメモリパターンは、Transcript Pattern、Window Pattern、Summary Pattern、Entity Pattern、Vector Retrieval Patternで、それぞれ異なる会話のニーズに適しています。
  • Transcript Patternは、すべてのメッセージを逐語的に保存し、次のプロンプトに完全な履歴を追加して、最大限の文脈を提供します。
  • 記事には、ConversationBufferMemoryを作成・使用してコンテキストを保存・ロードする方法を示すPythonコードスニペットが含まれています。
  • よくあるユースケースは、対話を跨いでユーザーのメールアドレスとエラーコードを覚えておく必要があるカスタマーサポートボットで、メモリが対話の連続性に与える影響を示しています。

eb Ever felt like your LLM needs a memory?

LangChainも同じような感覚を持っています。完全なチャットの転写全体から要約、エンティティ、ベクトルを用いたリコールまで、重要な情報を覚えているかのようにステートレスなモデルを感じさせるための、いくつかの方法を提供します。

大規模言語モデルは本質的にステートレスです。送信するすべてのリクエストは、5分前に何が議論されたかを覚えていない空白の状態で届きます。整然とした会話を作り出すには、過去のメッセージを手動でモデルへ再入力する必要があります。

LangChainはこの履歴を管理するために、いくつかの異なるパターンを提供します。適切なものを選ぶことは、完璧な文脈を提供することと、各トークンのコストを管理することとのバランスです。

LangChain Memory Types

  • 迅速で高精度なサポートタスクには、転写パターンを使用します。
  • 予測可能でタスク指向の対話には、ウィンドウパターンを使用します。
  • 長く創造的または協働的なセッションには、要約パターンを使用します。
  • ユーザーの嗜好を追跡する個人アシスタントには、エンティティパターンを使用します。
  • 知識集約型の大量の履歴を持つシステムには、ベクトル検索パターンを使用します。

転写パターン

会話を維持する最も簡単な方法は、直接的なバッファを用いることです。これは、発話されたすべての言葉を、順序通りに逐語的に保存します。

  • ユーザーからのすべてのメッセージとAIからのすべての応答が、逐語的に保存されます。
  • 次のターンのために、全履歴がプロンプトに追加されます。
  • それは、モデルに可能な限り最も正確で生のコンテキストを提供します。
from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()
memory.save_context({"input": "What is the capital of France?"}, {"output": "The capital of France is Paris."})
memory.load_memory_variables({})

この機能の例として、パスワードをリセットするのを手伝うカスタマーサポートボットがあります。ボットは特定のメールアドレスとエラーコードを覚えておく必要があります。