RAG có đủ cho AI Agent không? Từ Vector Search đến Knowledge và Long-term Memory
- #ai-agent
- #rag
- #vector-search
- #knowledge
- #memory
- #long-term-memory
Trả lời nhanh: RAG (Retrieval-Augmented Generation) không đủ cho một AI Agent, tức chương trình dùng model để tự chọn bước và gọi tool hướng tới một mục tiêu, nếu bạn cần sự thật đang đúng và nhớ từng người. RAG chỉ lấy vài đoạn gần nghĩa từ kho đã lập sẵn rồi đưa vào context window (cửa sổ ngữ cảnh) của lượt này. Vector search (tìm theo độ gần nghĩa) là bước lục những đoạn đó. Knowledge (kho kiến thức đang đúng) giữ sự thật dùng chung. Long-term memory (bộ nhớ dài hạn) ghi những gì sinh ra từ tương tác, theo từng người, qua nhiều phiên.
Nhiều người nghe đã gắn RAG rồi yên tâm agent biết hết. Việc RAG làm giống lục một chồng tờ rơi: tờ nào nghe gần câu hỏi thì kéo ra cho lượt này. Gần không có nghĩa là đang đúng, cũng không có nghĩa là tờ đó nói về đúng người đang hỏi.
Minh họa một agent hỗ trợ shop. Khách hỏi đổi size áo đã mua tuần trước. Agent lục được FAQ cũ, đọc vanh vách, rồi vẫn hỏi lại mã đơn, hoặc đọc chính sách đã hết hạn. Bạn tưởng thiếu model. Thật ra thiếu kho đang đúng, hoặc thiếu chỗ ghi chuyện của khách này.
Bài này tách ba việc đó để bạn biết RAG dừng ở đâu, Knowledge bắt đầu ở đâu, và long-term memory làm việc gì RAG không làm được. Cùng mình xem chỗ nào đang thiếu nhé.

RAG làm được việc gì, và việc đó dừng ở đâu?
RAG làm đúng một vòng: tìm vài đoạn liên quan rồi để LLM (Large Language Model), tức model ngôn ngữ lớn, đọc các đoạn đó trước khi trả lời. Nó không tự giữ sự thật mới, không tự biết chính sách vừa đổi, và không tự nhớ khách này là ai.

Năm 2020, Lewis và cộng sự mô tả RAG là cách ghép hai loại chỗ chứa: kiến thức nằm trong trọng số của model, và một chỉ mục vector dày của Wikipedia nằm ngoài model. Paper gọi chỉ mục đó là memory phi tham số. Chữ memory ở đây là kho tài liệu để lục, không phải chỗ agent ghi chuyện của từng người. Đó là nguồn gốc của sự nhầm sau này: cùng một chữ, hai việc khác nhau.
Vòng RAG phổ biến ngày nay vẫn đi theo đúng mạch đó. Tài liệu được cắt thành chunk (đoạn văn đã cắt), mỗi chunk được biến thành embedding, tức cách biến đoạn văn thành dãy số để máy so độ gần nghĩa, rồi cất vào một chỉ mục. Khi có câu hỏi, hệ thống biến câu hỏi thành dãy số, lấy vài chunk gần nhất, rồi nhét chúng vào context window của lượt này. Hết lượt, model không giữ lại gì. Lượt sau muốn dùng lại thì phải lục lại.
Letta viết rằng cách này chỉ cho model một lần lấy rồi trả lời, và hoàn toàn bị động: khách nói hôm nay sinh nhật, hệ thống đi tìm những đoạn nghe giống sinh nhật. Sở thích màu xanh hay theme Star Wars nói tuần trước thường không được kéo ra, vì chúng không nằm gần chữ sinh nhật trên thang gần nghĩa. Letta kết luận gọn hơn: RAG là một tool phục vụ memory (bộ nhớ), không phải bản thân memory.
Vậy việc RAG dừng lại là việc tìm đoạn gần với câu vừa hỏi. Câu tiếp theo phải hỏi: đoạn gần đó có phải sự thật đang đúng không?
Vector search khác Knowledge ở chỗ nào?
Hai thứ này hay bị gọi chung là đã có kho tài liệu, nhưng chúng trả lời hai câu khác nhau. Vector search trả lời đoạn nào nghe gần câu hỏi. Knowledge trả lời điều gì đang đúng, do ai giữ, và còn hạn đến khi nào. Ba mục dưới đây tách đúng ba mặt của kho dùng chung: cách lục, cái đang đúng, và cái hết hạn.

Vector search chỉ xếp hạng độ gần nghĩa
Vector search không đọc hiểu chính sách. Nó so dãy số. Câu đổi size áo gần với đoạn FAQ có chữ đổi, size, áo, nên đoạn đó thắng. Đoạn bảng giá mới, đoạn thông báo ngừng đổi hàng sale, hay đoạn ghi chú nội bộ về khách này có thể thua, dù chúng mới là thứ bạn cần.
Đó không phải lỗi của thuật toán. Việc của nó là tìm cái nghe giống, không phải tuyên bố cái nào còn hiệu lực. Redis mô tả truy xuất kiểu này là một lần đọc không trạng thái: chỉ mục được dựng trước, câu hỏi không ghi gì ngược lại, và mọi phiên lục cùng một kho.
Knowledge là sự thật đang đúng, không phải đoạn nghe giống
Knowledge là kho sự thật dùng chung mà bạn muốn agent bám vào: chính sách đổi trả hôm nay, còn đổi được hàng sale hay không, hạn đổi bảy ngày hay mười bốn ngày. Cùng một câu hỏi, mọi khách phải nhận cùng một câu trả lời, và câu đó phải khớp với điều shop đang áp dụng.
Kho này có thể được lục bằng vector search, bằng tìm theo từ khóa, hoặc bằng một bảng dữ liệu. Cách lục không biến nó thành Knowledge. Cái biến nó thành Knowledge là quyền sở hữu và thời điểm còn đúng: ai được sửa, bản nào là bản hiện hành, bản cũ có bị rút không.
Quay lại minh họa shop. FAQ PDF năm ngoái nói đổi trong bảy ngày. Tuần này shop đổi thành mười bốn ngày. Vector search vẫn thắng bản bảy ngày nếu bản đó nghe gần câu hỏi hơn, hoặc nằm gần đầu chỉ mục. Agent đọc vanh vách. Khách tin. Shop phải gỡ. Lỗi không nằm ở model bịa, mà ở chỗ hệ thống lấy đoạn giống thay vì sự thật đang đúng.
Đoạn cũ nghe giống vẫn thắng đoạn mới nếu không ai rút
Đây là chỗ Knowledge hỏng thầm. Redis lấy đúng kiểu hỏng này: agent nhớ khách, rồi trích một chính sách giá đã nghỉ vài tháng. Model làm đúng việc đọc context được đưa vào. Lớp context đưa nhầm thứ hết hạn.
Vì vậy gắn RAG chưa có nghĩa đã có Knowledge. RAG chỉ là đường lấy. Nếu đường lấy không biết bản nào còn hiệu lực, bạn có một máy lục tờ rơi, không có một kho sự thật. Bài Memory trong AI Agent đã tách cửa sổ nhìn và chỗ lưu. Ở đây mình tách tiếp: chỗ lưu tài liệu dùng chung vẫn chưa phải chỗ nhớ từng khách.
Long-term memory khác Knowledge ở chỗ nào?
Hai kho này đều nằm ngoài context window, nên dễ bị bán chung một gói. Chúng khác nhau ở chủ thể của sự thật và ở chiều ghi. Knowledge nói về shop, giống nhau với mọi người. Long-term memory nói về khách này, và phải được ghi từ chính tương tác. Hai mục dưới đây giữ đúng hai câu đó.

Knowledge trả lời shop đang quy định gì
Chính sách đổi trả, danh mục size, phí ship nội thành: đó là Knowledge. Khách A hỏi hay khách B hỏi thì câu đúng vẫn là một. Mem0 tóm đúng việc này: RAG trả lời tài liệu nói gì. Việc đó hợp với kho dùng chung, không hợp với câu chỉ có bạn và shop biết.
Nếu agent chỉ cần đọc FAQ rồi dừng, một chatbot có RAG thường đủ. Ranh giới chatbot và agent nằm ở tool, memory và quyền hành động, mình tách ở bài AI Agent khác chatbot ở điểm nào. RAG giúp trả lời. Nó không biến hệ thống thành chỗ nhớ khách.
Long-term memory trả lời khách này đã từng nói gì
Long-term memory giữ chuyện sinh ra từ tương tác: khách đã mua áo xanh size M tuần trước, đã đổi một lần, thích giao buổi chiều, không muốn gọi điện. LangChain tách short-term memory (bộ nhớ ngắn hạn) trong một luồng hội thoại, và long-term memory đi xuyên nhiều luồng. Thứ Tư khách quay lại là một luồng mới. Lịch sử phiên Thứ Hai không tự bắc cầu.
Chỗ khác Knowledge rõ nhất là chiều ghi. RAG điển hình chỉ đọc. Memory phải viết: trích sự thật từ hội thoại, cập nhật khi khách đổi ý, xóa khi khách yêu cầu. Letta nhấn retrieval là tool của memory, không phải memory. Không có chiều ghi thì kho chỉ là bản sao tài liệu, dù bạn gọi nó là nhớ.
Minh họa shop tiếp. Knowledge biết hạn đổi là mười bốn ngày. Long-term memory biết đơn này mua ngày 8, size M, đã đổi một lần lên L. Thiếu kho thứ hai, agent đọc chính sách rất hay rồi hỏi lại mã đơn, hoặc cho đổi lần nữa khi shop chỉ cho đổi một lần. Thiếu kho thứ nhất, agent nhớ khách rất thân rồi vẫn đọc hạn bảy ngày của bản cũ.
Khi nào RAG là đủ, khi nào còn thiếu Knowledge hoặc Memory?
Ba trường hợp dưới đây xếp theo việc đang thiếu, không theo tên sản phẩm. Cùng một agent hỗ trợ shop, bạn nhận ra chỗ hỏng khác nhau: chỉ cần đọc tài liệu dùng chung, đọc được nhưng bản đã cũ, hoặc bản đúng mà quên khách.

Chỉ cần RAG khi mọi người hỏi cùng một sự thật tĩnh
Dùng RAG khi câu trả lời nằm trong tài liệu, không đổi theo người hỏi, và tài liệu đủ tươi cho việc đó. Câu hạn đổi trả là bao nhiêu ngày, nếu bản FAQ đúng là bản đang dùng, thì lục vài đoạn rồi trả lời là đủ. Không cần nhớ khách là ai. Không cần agent tự lập kế hoạch nhiều bước.
Anthropic xếp retrieval cạnh tool và memory như khối tăng cường cho LLM, nhưng đó là điểm xuất phát, không phải toàn bộ agent. Việc gọn, một lượt, không side effect, thường dừng ở đây cho rẻ và dễ kiểm.
Thiếu Knowledge khi đoạn lục được nghe đúng mà sự thật đã đổi
Bạn thiếu Knowledge khi agent trích được đoạn rất giống câu hỏi, nhưng đoạn đó không còn là bản hiện hành. Dấu hiệu dễ thấy: khách nhận một câu chắc nịch, đội vận hành phải sửa sau vì chính sách, giá, hoặc tồn kho đã đổi.
Vá chỗ này không phải đổi model. Vá bằng quyền sở hữu bản hiện hành: bản nào được phép lục, bản cũ có bị rút, và sự thật có cấu trúc như hạn đổi hay tồn kho thì nên tra bảng, đừng phó cho đoạn văn nghe giống. Microsoft khuyên đưa state dùng chung ra kho bền vững bên ngoài, và chỉ lưu phần tối thiểu cần thiết. Cùng tinh thần đó, Knowledge cũng cần một bản đang đúng, không phải một đống PDF chồng lên nhau.
Thiếu long-term memory khi agent thuộc chính sách mà ngơ về khách
Bạn thiếu long-term memory khi câu hỏi chỉ có khách và shop biết từ lần trước, mà agent vẫn hỏi lại từ đầu. Dấu hiệu: đọc FAQ trôi chảy, không nhớ đơn tuần trước, không nhớ đã đổi một lần, không nhớ khách dặn giao buổi chiều.
Vá chỗ này cũng không phải thêm PDF. Vá bằng chiều ghi và phạm vi theo người: lưu gì, lấy lúc nào, ai được thấy, xóa ra sao. Chỗ vận hành các quyết định đó nằm ở harness (lớp điều khiển hành vi agent), mình viết ở bài Harness Engineering là gì. Còn vòng Agent Loop (vòng lặp vận hành của agent) sau khi đã lấy được mảnh đúng nằm ở bài Agent Loop là gì.
Hai chỗ hỏng có thể đứng cùng lúc. Agent vừa đọc chính sách cũ, vừa quên khách. Khi đó gắn thêm RAG chỉ làm máy lục tờ rơi to hơn.
Câu hỏi thường gặp
Bốn câu dưới đây là ranh giới còn sót sau khi đã tách ba việc. Chúng hay xuất hiện trên trang giới thiệu sản phẩm, nên mình trả lời theo cơ chế, không theo tên tính năng.
Agentic RAG đã đủ để gọi là memory chưa?
Chưa. Agentic RAG, tức RAG mà agent tự quyết định tìm lại nhiều lần, sửa được chỗ Letta chỉ ra: một lần lấy rồi dừng. Agent có thể đổi câu lục, mở nguồn khác, rồi mới trả lời. Việc đó vẫn là đọc kho dùng chung cho tốt hơn. Nó không tự tạo chiều ghi cho chuyện của từng khách, cũng không tự rút bản đã hết hạn nếu không ai đặt quy tắc đó.
Knowledge graph có thay long-term memory không?
Không mặc định. Knowledge graph (đồ thị tri thức) giúp nối thực thể với nhau, ví dụ đơn hàng gắn với sản phẩm gắn với chính sách. Nó hữu khi câu hỏi cần đi qua vài mối quan hệ, không chỉ một đoạn nghe giống. Nó vẫn không phải long-term memory nếu không có chiều ghi theo từng người và không có thời hạn của từng sự thật về người đó. Đồ thị của shop không thay hồ sơ của khách.
Bắt buộc phải có vector database mới có Knowledge hoặc memory?
Không. Vector database (cơ sở dữ liệu vector) là một cách cất dãy số để lục theo độ gần nghĩa. Nó tiện khi kho văn bản lớn. Sự thật có cấu trúc như mã đơn, hạn đổi, địa chỉ thì một bảng thường tra đúng hơn. Memory cũng có thể là ghi chú nằm ngoài cửa sổ, đúng như cách Anthropic mô tả việc agent viết note rồi kéo về khi cần, trong bài về context engineering (kỹ thuật chọn thông tin model được nhìn thấy).
Fine-tune model có thay được RAG, Knowledge, hoặc memory không?
Không thay được cả ba. Fine-tune nhét thêm thói quen vào trọng số. Nó không cho bạn rút một chính sách hết hạn ngày hôm nay, không cho khách xem đúng hồ sơ của mình, và không cho bạn xóa một số điện thoại khi khách yêu cầu. Lewis và cộng sự vốn đề xuất RAG vì cập nhật kiến thức thế giới trong model vẫn là bài toán mở. Bài toán đó đến 2026 vẫn chưa biến mất.
Việc nên hỏi trước khi tin agent đã biết đủ
Ba câu dưới đây đủ để biết bạn đang mua RAG, Knowledge, hay long-term memory. Đừng hỏi sản phẩm có trí nhớ không. Hỏi nó trả lời được câu nào.
- Cùng một câu hỏi, mọi khách có nhận cùng một sự thật đang đúng không, và bản cũ đã bị rút chưa?
- Câu chỉ có khách này biết từ lần trước, hệ thống lấy lại được không, hay chỉ đọc lại FAQ?
- Khi khách đổi ý hoặc xin xóa, chiều ghi cập nhật hay xóa được chỗ nào?
Nếu cả ba câu đều được trả lời bằng chúng tôi đã gắn RAG, bạn đang có một đường lục đoạn gần nghĩa. Đường đó có ích thật. Nó không đủ cho một AI Agent phải nói đúng điều đang áp dụng, và phải nhớ đúng người đang hỏi.
Muốn xem vì sao cửa sổ rộng hơn vẫn không thành chỗ nhớ, đọc bài Memory trong AI Agent. Chỗ agent tự chọn bước sau khi đã có mảnh đúng nằm ở Agent Loop là gì. Phần hạ tầng giữ state, quyền và truy vết nằm ở bài vì sao AI Agent cần một platform.