Memory in LLM Agent

0 0 0

Người đăng: Ben

Theo Viblo Asia

Introduction

Khi bạn bắt tay vào xây dựng một agent dùng mô hình ngôn ngữ lớn (LLM) để thực hiện một nhiệm vụ nào đó, thì chuyện "nhớ nhớ quên quên" không còn là chuyện cá nhân nữa — mà là yếu tố sống còn! Đặc biệt là khi nhiệm vụ kéo dài hoặc gồm nhiều bước, việc quản lý trí nhớ hiệu quả sẽ giúp agent hoạt động mượt mà hơn nhiều. Có kha khá kỹ thuật để xử lý chuyện này, và mỗi cách lại phù hợp với từng tình huống riêng, nhưng suy cho cùng mục đích của việc này nhằm "cá nhận hóa" một cách tối đa khi người dùng sử dụng agent. Trong bài viết này, mình sẽ cùng bạn khám phá các kiểu memory khác nhau và cách thiết lập chúng sao cho hợp lý. Nào, cùng dạo một vòng xem thế nào nhé!

Nhưng khoan đã! Trước khi bàn đến memory – short term, long term hay summary – thì ta phải làm rõ một điều quan trọng: Agent là gì?

What is an LLM Agent?

Vậy thì agent là gì nhỉ? Nói một cách đơn giản, agent chính là một mô hình ngôn ngữ lớn (LLM) được “nâng cấp” để không chỉ hiểu mà còn hành động trong một môi trường nào đó. Bạn có thể tưởng tượng LLM giống như bộ não của agent – thông minh, linh hoạt và đầy tiềm năng. Nhưng để bộ não này hoạt động trơn tru, nó cần một bộ khung hỗ trợ gồm các “mảnh ghép” quan trọng: memory (trí nhớ), planning (lập kế hoạch), prompt (giao tiếp), knowledge (kiến thức) và tools (các công cụ hỗ trợ). Khi tất cả các thành phần này ăn khớp với nhau, agent mới thực sự trở thành một "trợ thủ" đắc lực, không chỉ biết mà còn biết làm gì với cái biết đó!

Prompt - Đọc kĩ hướng dẫn sử dụng trước khi dùng =))

Chính là cách bạn giao tiếp với agent, nhưng không chỉ là hỏi han đơn thuần. Đây là nơi bạn đưa ra mục tiêu, hành vi mong muốn, và đôi khi là cả kế hoạch mà bạn muốn agent thực hiện. Một prompt hay giống như một bản hướng dẫn rõ ràng – càng cụ thể, agent càng ít “lạc đường”.

Planning - Lập kế hoạch thông minh

Không phải nhiệm vụ nào cũng đơn giản kiểu "hỏi là trả lời ngay". Với những bài toán phức tạp, agent cần biết nghĩ từng bước một (chain-of-thought). Nhờ khả năng suy luận, agent sẽ tự vạch ra kế hoạch, chia nhỏ vấn đề, rồi từng bước xử lý. Không khác gì lập chiến lược để chinh phục một màn game khó nhằn!

Tools - Công cụ hành động

Một mình LLM dù thông minh đến mấy cũng không thể làm hết được việc. Vì vậy, agent cần thêm công cụ hỗ trợ – có thể là hàm thực thi, API, hoặc các dịch vụ bên ngoài – để hoàn thành nhiệm vụ. Nói cách khác, nếu LLM là bộ não, thì tools là đôi tay giúp agent hành động.

Knowledge - Kiến thức là sức mạnh

Không có kiến thức thì agent chỉ là một "cái đầu rỗng". Để hiểu và giải quyết nhiệm vụ, agent cần được trang bị kiến thức chuyên môn. Điều này có thể đến từ việc fine-tune mô hình hoặc đơn giản hơn là tạo một công cụ truy xuất dữ liệu từ kho tri thức (như database hoặc search engine). Miễn sao agent “biết mình đang làm gì” là được!

Memory - Trí nhớ để không… lú

Cuối cùng – và cũng là điểm chính mà bài viết này muốn đào sâu – chính là memory. Khi thực hiện các nhiệm vụ phức tạp, agent thường phải chia nhỏ thành các bước nhỏ và thực thi từng bước một. Để làm được điều đó, agent cần phải nhớ mình đã làm gì, đã nói gì, và đã nhận được phản hồi gì. Không có trí nhớ, agent sẽ cứ như "cá vàng", mãi đi lòng vòng mà không biết mình đang ở đâu trong "đại hải trình".

Memory

Memory đơn giản là hệ thống giúp agent ghi nhớ những gì đã diễn ra trước đó. Nghe thì đơn giản vậy thôi, nhưng đây là yếu tố cực kỳ quan trọng để tạo ra một trải nghiệm agent mượt mà và thông minh. Bạn thử tưởng tượng làm việc với một đồng nghiệp mà cứ 5 phút lại quên bạn vừa dặn gì – chắc bạn sẽ phát điên mất! 😅

Với agent, chuyện cũng y chang vậy. Vì hầu hết các tác vụ dành cho agent đều mang tính nhiều bước, nhiều giai đoạn, nếu không có trí nhớ, agent sẽ không thể tiếp tục nhiệm vụ một cách hợp lý. Mỗi bước mới làm ra lại phải… đoán mò hoặc bắt đầu từ đầu thì đúng là "xôi hỏng bỏng không".

Các loại memory trong agent

Để tương tác hiệu quả với thế giới bên ngoài, các language agents (agent dựa trên LLM) thường sử dụng nhiều dạng trí nhớ khác nhau. Theo paper “Cognitive Architectures for Language Agents”, trí nhớ của agent được chia thành một số module chính – mỗi loại phục vụ một vai trò riêng trong việc lưu trữ và truy xuất thông tin. (Và đây là phần mà tụi mình sẽ đào sâu hơn trong bài viết này 👇)

1. Short-Term Memory

Nếu bạn từng để ý mình có thể nhớ một dãy số điện thoại trong vài giây rồi quên ngay, thì đó chính là short-term memory đang hoạt động! Với agent, short-term memory cũng tương tự như vậy – nó lưu trữ những thông tin vừa mới diễn ra, đủ để phục vụ cho vòng tương tác hiện tại hoặc ngay sau đó.

Trong thế giới của agent, short-term memory thường được tích hợp trong working memory, và là nơi tập trung các dữ kiện “nóng hổi” như:

  • Những gì người dùng vừa nói
  • Kết quả truy xuất tri thức hoặc logic suy luận tạm thời
  • Dữ liệu từ vòng lặp trước – như bước số 2 của kế hoạch multi-step

Nó như một trung tâm điều phối tạm thời, giúp agent duy trì sự liền mạch giữa các bước mà không bị “lú” mỗi khi gọi lại LLM. Điểm thú vị là, dù chỉ mang tính tạm thời, short-term memory có thể được duy trì xuyên suốt nhiều lần gọi LLM, giúp agent “ghi nhớ ngắn hạn” để hoàn thành nhiệm vụ mà không bị mất mạch suy nghĩ.

Giả sử agent của bạn đang giúp người dùng đặt vé máy bay:

  • Người dùng nói: “Tôi muốn bay từ Hà Nội vào Sài Gòn cuối tuần này.”
  • Agent lưu thông tin đó vào short-term memory
  • Khi người dùng tiếp tục: “À mà tối thứ Bảy nhé!”, agent cần nhớ lại địa điểm và ngày vừa được nói để hiểu đúng thời gian bay => Đây là lúc short-term memory phát huy tác dụng!

2. Long-Term Memory

Nếu short-term memory là trí nhớ tạm thời như... nhớ số phòng họp trong 5 phút, thì long-term memory giống như cuốn nhật ký sống động – nơi agent lưu lại những trải nghiệm, kiến thức và bài học từ quá khứ. Chính nó là nền tảng để agent học hỏi, suy luận và ra quyết định tốt hơn theo thời gian.

2.1 Episodic Memory – Nhớ từng “chuyện đã qua”

Episodic memory là nơi lưu lại các trải nghiệm cụ thể trong quá khứ – giống như khi bạn nhớ rõ buổi phỏng vấn đầu tiên, hay lần bạn lỡ tay gửi email chưa hoàn chỉnh 😅. Với agent, đây là trí nhớ về từng phiên tương tác hoặc chuỗi sự kiện đã diễn ra, chẳng hạn:

  • Lịch sử các cặp input-output đã từng xử lý
  • Chuỗi sự kiện trong một vòng trò chơi hoặc phiên làm việc
  • Hành trình ra quyết định trong một tác vụ multi-step
  • Dữ liệu huấn luyện đã từng “trải nghiệm”

Các “kỷ niệm” này sẽ được lưu dưới dạng episode – tức là các đoạn diễn tiến cụ thể theo thời gian. Và quan trọng hơn: agent có thể “ôn lại chuyện cũ” khi cần!

Tại sao lại quan trọng?

Khi agent bắt đầu lập kế hoạch hoặc đưa ra quyết định mới, nó có thể truy xuất episodic memory để:

  • Học từ các sai lầm hoặc thành công trước đó
  • Tránh lặp lại hành vi không hiệu quả
  • Suy luận dựa trên các tình huống tương tự đã từng xảy ra

Giả sử agent là một trợ lý chăm sóc khách hàng, và trong tuần trước có khách hàng Minh hỏi cách đổi mật khẩu. Agent đã đưa ra hướng dẫn chi tiết và khách hàng hài lòng. Tuần này, khách hàng Quân hỏi tương tự – agent có thể truy xuất episode đó, thấy rằng hướng dẫn tuần trước hoạt động tốt, và... tái sử dụng ngay! Không cần “nghĩ lại từ đầu”. Tóm lại, episodic memory giúp agent học hỏi từ chính trải nghiệm của mình, nâng cao chất lượng phản hồi và tạo cảm giác "có trí nhớ" như con người.

2.2 Semantic Memory – Trí nhớ kiểu “Google trong đầu”

Nếu episodic memory là cuốn nhật ký cá nhân ghi lại từng trải nghiệm cụ thể, thì semantic memory lại giống như bách khoa toàn thư trong đầu agent – nơi lưu trữ những hiểu biết về thế giới, các khái niệm, sự kiện, thậm chí cả thông tin về... chính bản thân agent!

Semantic memory lưu giữ kiến thức chung – những thông tin không gắn với thời gian cụ thể, ví dụ như:

  • Sự thật và dữ kiện: Ví dụ như “Paris là thủ đô của Pháp”, “Trái đất quay quanh mặt trời”, hay “Bitcoin là đồng tiền mã hóa đầu tiên.”
  • Khái niệm và định nghĩa: Những ý tưởng trừu tượng như “Tự động hóa là gì?”, “Học máy hoạt động ra sao?”, hoặc “Khách hàng VIP là ai?”
  • Thông tin về chính agent: Ví dụ như “Tôi là trợ lý ảo hỗ trợ khách hàng trong lĩnh vực tài chính”, hoặc “Tôi sử dụng API X để truy xuất dữ liệu.”
  • Quy tắc và luật lệ: Các nguyên tắc hoạt động, quy trình, hay luật lệ có thể được lưu trong semantic memory để áp dụng khi cần.

Đây là loại trí nhớ giúp agent có thể suy nghĩ logic, giải thích, và áp dụng kiến thức để xử lý các tác vụ mới một cách thông minh.

Agent có thể xây dựng semantic memory từ:

  • Khởi tạo từ dữ liệu bên ngoài: Agent có thể “nạp” kiến thức từ các nguồn như cơ sở dữ liệu, tài liệu, website, hay bộ từ điển tri thức.
  • Học dần theo thời gian: Qua nhiều lần tương tác và trải nghiệm, agent có thể mở rộng semantic memory bằng cách tự động trích xuất thông tin quan trọng và lưu lại.
  • Suy luận và tổng hợp: Không chỉ là dữ liệu thô, semantic memory còn chứa kiến thức được hình thành qua các quá trình suy luận, liên kết các mảnh thông tin để tạo ra kiến thức mới.

Không có semantic memory, agent sẽ giống như một đứa trẻ không được dạy dỗ – mỗi lần hỏi lại phải “học lại từ đầu”. Với loại trí nhớ này, agent có thể:

  • Trả lời chính xác các câu hỏi dựa trên kiến thức đã học
  • Áp dụng kiến thức cũ vào tình huống mới
  • Trở nên “thông minh có nền tảng” – không chỉ hành động theo bản năng

Ví dụ người dùng hỏi: “Tỷ lệ lạm phát năm 2023 của Việt Nam là bao nhiêu?” → Nếu agent có semantic memory chứa thông tin kinh tế từ một cơ sở dữ liệu tài chính, nó có thể tra cứu hoặc nhớ lại kiến thức đó để trả lời ngay lập tức, thay vì cần gọi tool hay hỏi lại backend mỗi lần.

Tóm lại, semantic memory là vùng lưu trữ kiến thức nền tảng và giúp agent hiểu được thế giới xung quanh một cách sâu sắc hơn, không chỉ đơn thuần là phản xạ dựa vào ngữ cảnh.

2.3 Procedural Memory – Bí kíp “võ công” của agent

Nếu semantic memory là kho kiến thức thì procedural memory chính là bộ sưu tập cách làm, quy tắc vận hành và bí kíp thao tác giúp agent biết phải làm gì, làm thế nào để hoàn thành nhiệm vụ.

Procedural Memory gồm hai dạng chính:

  • Kiến thức ngầm (Implicit knowledge): Đây là những “bí kíp” mà agent tự học được qua quá trình huấn luyện trong mô hình LLM – nói đơn giản là những kỹ năng, thói quen nằm sâu trong “bộ não” của agent mà không cần ai viết ra từng dòng code.
  • Kiến thức rõ ràng (Explicit knowledge): Là những quy tắc, thuật toán hoặc giới hạn được các nhà phát triển viết thẳng vào mã nguồn của agent. Ví dụ như: “Nếu người dùng nói lời lẽ không phù hợp thì agent sẽ không trả lời” hay “Khi cần lấy dữ liệu, gọi API X trước”.

Lưu ý khi cập nhật procedural memor, do procedural memory gắn liền với cách agent vận hành, nên việc cập nhật nó thường khó và rủi ro hơn so với các loại memory khác. Thay đổi sai có thể làm agent hoạt động sai lệch hoặc thậm chí gây ra lỗi nghiêm trọng. Vì vậy, nhà thiết kế thường rất cẩn trọng khi chỉnh sửa các quy tắc trong procedural memory, đặc biệt là các “hàng rào bảo vệ” (guardrails) để tránh agent bị sử dụng sai mục đích.

Bạn có thể coi procedural memory như bộ rules – nó là tập hợp các quy tắc áp dụng lên working memory để quyết định agent sẽ phản ứng, xử lý thông tin và thực thi các hành động thế nào. Hiểu một cách đơn giản, procedural memory là “bộ hướng dẫn kỹ năng” giúp agent biết làm thế nào để sử dụng trí nhớ, kiến thức và công cụ sẵn có để hoàn thành nhiệm vụ một cách hiệu quả.

How to set memory in Agents

1. Giải pháp đơn giản: Brute Force Memory!

Sau khi đã hiểu về các loại bộ nhớ, câu hỏi tiếp theo là: Làm thế nào để “gán” bộ nhớ cho agent? Một cách cực kỳ đơn giản mà hiệu quả cho những trường hợp không cần bộ nhớ dài hạn phức tạp chính là… Brute Force Memory (hay nhớ kiểu “gồng mình nhét tất cả vào”). Nói nôm na, bạn lưu lại tất cả các tin nhắn, tương tác trước đó vào một danh sách (list) rồi cứ mỗi lần chạy agent lại “nhét” toàn bộ danh sách này vào. Agent sẽ dựa vào tất cả lịch sử đối thoại đó để hiểu bối cảnh và trả lời.

Khi nào dùng được kiểu này?

  • Khi cuộc hội thoại không quá dài, không nhiều bước phức tạp.
  • Khi bạn không cần lưu trữ thông tin lâu dài ngoài phiên làm việc hiện tại.
  • Khi tổng số token (ký tự đầu vào) vẫn trong giới hạn cho phép của mô hình.

Ví dụ minh họa Giả sử bạn có đoạn hội thoại như sau:

messages = [ {"role": "user", "content": "What is the capital of France?"}, {"role": "assistant", "content": "The capital of France is Paris."}, {"role": "user", "content": "Summarize this text: 'The quick brown fox jumps over the lazy dog.'"}, {"role": "assistant", "content": "The text describes a quick brown fox jumping over a lazy dog."}, {"role": "user", "content": "Generate Python code to calculate the factorial of a number."}, {"role": "assistant", "content": "Here's a Python function to calculate the factorial of a number:\n\n```python\nimport math\n\ndef factorial(n):\n if n < 0:\n raise ValueError(\"Factorial is not defined for negative numbers.\")\n return 1 if n == 0 else n * factorial(n - 1)\n```"}, {"role": "user", "content": "Explain how neural networks work in simple terms."}, {"role": "assistant", "content": "Neural networks are computer systems modeled after the human brain. They consist of layers of nodes (like neurons) connected to each other. Data is passed through these connections, and the network adjusts its internal parameters to learn patterns and make predictions or decisions."}, {"role": "user", "content": "Find the two largest numbers in this list: [3, 1, 4, 1, 5, 9, 2, 6]."}, {"role": "assistant", "content": "The two largest numbers in the list are 9 and 6."}, {"role": "user", "content": "What is the result of dividing 1 by 0?"}, {"role": "assistant", "content": "Dividing 1 by 0 is undefined in mathematics, and in most programming languages, it will result in an error."}, {"role": "user", "content": "How do I write a prompt for summarizing text in LangChain?"}, {"role": "assistant", "content": "Here's an example of a LangChain prompt for summarizing text:\n\n```python\nfrom langchain.prompts import PromptTemplate\n\nprompt = PromptTemplate(\n input_variables=['text'],\n template=\"\"\"\n Please summarize the following text:\n {text}\n \"\"\"\n)\n```"}
]

Mỗi lần agent được gọi, bạn chỉ cần gửi toàn bộ messages này cho nó, và agent sẽ dựa vào cả lịch sử hội thoại để hiểu ngữ cảnh và trả lời đúng.

  • Ưu điểm: Cực kỳ đơn giản, dễ triển khai, nhanh chóng có kết quả.
  • Nhược điểm: Khi lịch sử dài, token nhiều thì dễ bị vượt giới hạn mô hình hoặc tốn nhiều tài nguyên, không thích hợp cho các tác vụ phức tạp, đa bước dài hơi.

2. RAG (Retrieval Augmented Generation) hoặc Fine-tuning – Cách nâng cấp “bộ nhớ dài hạn” cho agent

Ngoài cách “nhét tất cả vào” kiểu Brute Force, còn có những cách “xịn” hơn để giúp agent nhớ lâu dài và làm việc hiệu quả hơn với lượng thông tin khổng lồ.

RAG – Tăng cường khả năng nhớ bằng cách tìm và lựa chọn là một chiến thuật khá “thông minh” và đang được dùng nhiều hiện nay. Cách hoạt động thì đơn giản mà hiệu quả:

  1. Đầu tiên, khi có câu hỏi, agent sẽ đi tìm những nội dung liên quan trong kho dữ liệu (giống như bạn đi lục tủ sách để lấy sách phù hợp).
  2. Sau đó, agent sẽ ghép câu hỏi của bạn với các thông tin tìm được.
  3. Cuối cùng, agent dùng cả bộ “tài liệu” đã ghép đó để tạo ra câu trả lời hoàn chỉnh.

Nhưng cũng có vài điểm “lăn tăn”…

  • Việc phải thường xuyên cập nhật hệ thống để thêm, sửa, xóa dữ liệu là chuyện không tránh khỏi. Lâu dài sẽ thành việc bận rộn và khá tốn công sức.
  • Khi số lượng tương tác dồn lên càng nhiều, dung lượng lưu trữ tăng cao và việc quản lý, truy xuất dữ liệu cũng “rối như tơ vò”.

Fine-tuning – Dạy agent “nhớ” bằng cách học lại

Một cách khác là đem những hành động trước đó làm dữ liệu để fine-tune (huấn luyện thêm) cho mô hình, giúp nó học thật sự chứ không chỉ “đọc lướt” qua. Fine-tuning giống như cho agent học lại những bài học quan trọng, để nó hiểu sâu hơn về lĩnh vực hay tác vụ. Điểm hay là bạn có thể “nhét” vào mô hình lượng dữ liệu lớn hơn rất nhiều so với việc chỉ dùng prompt. Nhưng… cái giá của sự thông minh là rất đắt! Fine-tuning tốn rất nhiều tài nguyên tính toán, thời gian và không phải ai cũng có điều kiện để làm điều này với các mô hình ngôn ngữ lớn.

Ngoài ra, còn một số lưu ý quan trọng khi dùng hai phương pháp này:

  • RAG phù hợp với những trường hợp bạn cần agent trả lời dựa trên kiến thức cập nhật thường xuyên (ví dụ như hỏi về tin tức mới, sản phẩm, hoặc nội dung tài liệu đa dạng)
  • Fine-tuning thích hợp khi bạn có bộ dữ liệu chuyên sâu, ổn định và muốn agent thực sự “thấm nhuần” lĩnh vực đó, như ngành y, pháp luật, hoặc kỹ thuật.
  • Có thể kết hợp cả hai: dùng fine-tuning để thiết lập “nền tảng kiến thức” rồi dùng RAG để “đi săn” thông tin cập nhật.

Vậy, khi chọn lựa kỹ thuật quản lý bộ nhớ, bạn hãy cân nhắc kỹ về mục tiêu sử dụng, nguồn lực, và cách bạn muốn agent hoạt động. Dù chọn cách nào, đảm bảo agent của bạn vừa thông minh, vừa linh hoạt, và đặc biệt là luôn nhớ “chuyện cũ” để phục vụ bạn tốt hơn!

RAG và Fine-tuning là hai cách giúp agent “nhớ lâu dài” và hiểu sâu hơn về nhiệm vụ, nhưng mỗi cách đều có điểm mạnh – điểm yếu riêng. Bạn có thể chọn cách phù hợp với mục tiêu, ngân sách và tài nguyên của mình nhé!

3. MemGPT – Khi LLM vừa là người trả lời vừa là… hệ điều hành

Chúng ta đã thấy các cách tiếp cận như Brute Force (lưu thủ công) hay RAG/Fine-tuning (kết hợp truy vấn hoặc huấn luyện lại), nhưng liệu có cách nào để LLM tự quản lý trí nhớ của chính mình? Câu trả lời là có, và nó đến từ một công trình nghiên cứu đột phá: MemGPT: Towards LLMs as Operating Systems

MemGPT xây dựng một hệ thống "bộ nhớ ảo" lấy cảm hứng từ hệ điều hành máy tính, cho phép mô hình ngôn ngữ (LLM) xử lý nhiều thông tin hơn giới hạn của context window truyền thống.

Tưởng tượng dễ hiểu: Context window của LLM giống như RAM máy tính. Nếu bạn cần truy cập thông tin không nằm trong RAM, hệ điều hành sẽ tạm lưu một phần RAM ra ổ cứng và nạp dữ liệu mới vào. MemGPT làm điều tương tự — nhưng thay vì hệ điều hành, chính LLM đóng vai trò là OS để quyết định phần nào của “ký ức” nên giữ, phần nào nên lưu trữ ra ngoài và khi nào cần nạp lại.

1. Self-editing memory – Bộ nhớ có thể tự viết lại MemGPT có thể tự điều chỉnh, cập nhật thông tin cá nhân hóa hoặc “hướng dẫn hệ thống” dựa vào thông tin mới học được trong quá trình hội thoại. Agent không chỉ ghi nhớ mà còn chủ động tổ chức lại kiến thức.

2. Inner thoughts – Tư duy nội tại Agent không trả lời người dùng ngay lập tức. Trước đó, nó sẽ “suy nghĩ trong đầu” (inner thoughts) vài bước, cân nhắc thông tin, đưa ra giả định, trước khi quyết định phản hồi.

3. Everything is a tool – Mọi hành động đều là công cụ Trong MemGPT, tất cả đều được đóng gói dưới dạng tool:

  • Trả lời người dùng → một tool
  • Tư duy nội bộ → cũng được trình bày dưới dạng bước trung gian
  • Ghi nhớ, tra cứu, cập nhật → đều là các tools mà agent tự gọi

Điều này giúp dễ dàng quản lý trạng thái và giám sát luồng xử lý.

Tổng quan cách hoạt động

  • Người dùng đặt câu hỏi
  • Agent (LLM) bắt đầu sinh inner thoughts, tìm kiếm thông tin từ memory
  • Agent có thể gọi các tools để truy vấn dữ liệu cũ hoặc cập nhật memory
  • Khi đến giới hạn heartbeat → Agent phải trả lời
  • Memory sẽ được cập nhật lại một cách có chủ đích, không bị lãng phí context như các mô hình LLM truyền thống

So sánh với các cách tiếp cận trước

Phương pháp Mô tả Ưu điểm Nhược điểm
1. Brute Force (lưu thô) Ghi lại toàn bộ lịch sử cuộc hội thoại và đưa vào prompt ở mỗi vòng lặp Đơn giản, dễ triển khai Dễ vượt quá context window, tốn token, khó kiểm soát chất lượng
2. RAG / Fine-tuning Kết hợp truy xuất dữ liệu liên quan từ external memory (RAG) hoặc tinh chỉnh mô hình (Fine-tune) Tối ưu chi phí (RAG), học sâu hơn (fine-tuning) RAG: cần quản lý memory tốt; Fine-tuning: tốn chi phí, không linh hoạt
3. MemGPT LLM tự quản lý memory như một hệ điều hành – quyết định thông tin nào giữ trong context, thông tin nào lưu trữ Cực kỳ linh hoạt, tự thích nghi, có khả năng ghi nhớ dài hạn Độ phức tạp cao, cần hiểu rõ cấu trúc hoạt động và thiết lập heartbeat/tool logic phù hợp

Tổng kết

Trong bài viết này, chúng ta đã khám phá các loại trí nhớ quan trọng trong kiến trúc của một tác tử sử dụng ngôn ngữ (language agent), bao gồm:

  • Episodic memory – trí nhớ ngắn hạn về các tương tác trước đó,
  • Semantic memory – kiến thức lâu dài về thế giới và bản thân,
  • Procedural memory – bộ quy tắc định hướng hành vi và thao tác của agent.

Sau khi hiểu rõ các loại trí nhớ, bài viết cũng phân tích các chiến lược để triển khai trí nhớ cho LLM, bao gồm:

  • Brute-force memory – cách đơn giản nhất bằng việc đưa toàn bộ lịch sử vào prompt. Tuy hiệu quả trong các trường hợp đơn giản, cách này không mở rộng tốt cho bài toán dài hạn hoặc dữ liệu lớn.
  • Retrieval-Augmented Generation (RAG) và Fine-tuning – hai phương pháp giúp mô hình tiếp cận thông tin bên ngoài hoặc học từ dữ liệu cụ thể. RAG hiệu quả về chi phí và linh hoạt, trong khi fine-tuning giúp mô hình "ghi nhớ sâu" nhưng yêu cầu tài nguyên đáng kể.
  • MemGPT – hướng tiếp cận tiên tiến, nơi mô hình tự đóng vai trò như một hệ điều hành, tự quản lý trí nhớ và tổ chức luồng suy nghĩ. Đây là bước tiến lớn giúp LLM có khả năng xử lý bối cảnh dài hạn, ra quyết định thông minh hơn và thích nghi trong các tình huống phức tạp.

Tóm lại, khả năng ghi nhớ là yếu tố then chốt để tạo ra những agent thông minh và thực tế hơn. Tùy vào mục tiêu và nguồn lực, bạn có thể lựa chọn phương pháp phù hợp – từ đơn giản (brute-force), hiệu quả (RAG), đến tiên tiến và tự động hóa (MemGPT). Trong tương lai, sự kết hợp giữa các phương pháp này có thể mang lại khả năng ghi nhớ linh hoạt, bền vững và hiệu suất cao cho các hệ thống AI.

Cảm ơn bạn đã đọc bài viết của mình, hy vọng bài viết này sẽ giúp ích cho bạn trong quá trình xấy dụng một Agent đủ tốt và mang tính cá nhân hóa. Chủ đề này mình tìm hiểu khá nhanh nên có thể có nhiều thiếu sót, nếu có bất cứ thắc mắc, hãy đặt câu hỏi bên dưới để mình giải đáp nhé. Hẹn gặp lại các bạn vào bài viết sau~~

Tài liệu tham khảo

“Memory for Agents”, https://blog.langchain.dev/memory-for-agents/

“Cognitive architectures for language agents.”, https://arxiv.org/abs/2310.06119

“What is an LLM Agent and how does it work?”, https://medium.com/@aydinKerem/what-is-an-llm-agent-and-how-does-it-work-1d4d9e4381ca

Bình luận

Bài viết tương tự

- vừa được xem lúc

Golang Data Structures and Algorithms - Stack

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 42

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - Secrets Manager

Introduction. A quick note about AWS Secrets Manager.

0 0 51

- vừa được xem lúc

Golang Data Structures and Algorithms - Queue

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 53

- vừa được xem lúc

Terraform Series - Bài 17 - Security - Manage Secrets with Vault

Giới thiệu. Chào các bạn tới với series về Terraform, ở bài trước chúng ta đã tìm hiểu về vấn đề security trong Terraform.

0 0 43

- vừa được xem lúc

Golang Data Structures and Algorithms - Linked Lists

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 41

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - AWS Certificate Manager

Introduction. A quick note about AWS Certificate Manager.

0 0 35