Hai cách đưa đúng thông tin vào ngữ cảnhCho máy tra cứu và dùng công cụTwo ways to put the right information into the context
Để giải một tác vụ, mô hình cần hai thứ: hướng dẫn làm thế nào, và thông tin cần thiết để làm. Chương trước lo phần hướng dẫn. Chương này lo phần còn lại — và Huyen mở đầu bằng một quan sát rất người: cũng như con người dễ trả lời sai khi thiếu thông tin, mô hình dễ sai và dễ bịa khi thiếu ngữ cảnh.1 Hai khuôn mẫu đang thống trị việc dựng ngữ cảnh là RAG — truy xuất rồi mới sinh — và agent, tác tử biết dùng công cụ.
Muốn máy làm đúng một việc, ta phải cho nó hai thứ: lời dặn phải làm gì, và tài liệu để tra. Bài trước nói về lời dặn. Bài này nói về tài liệu. Có hai cách đưa tài liệu cho máy: một là tự mình tìm rồi đưa tận tay, hai là đưa cho máy cái chìa khóa tủ hồ sơ để nó tự lấy. Nhớ nhé: máy thiếu thông tin thì sẽ bịa, y như người bị hỏi bài mà chưa kịp học.
To solve a task, a model needs both the instructions on how to do it and the information it needs to do it. The last chapter covered the instructions. This chapter covers the rest — and Huyen opens with a very human observation: just as a person is more likely to give a wrong answer when lacking information, AI models are more likely to make mistakes and hallucinate when they are missing context.1 The two dominating patterns for constructing that context are RAG — retrieve, then generate — and agents, models that can use tools.
Huyen xếp hai khuôn mẫu theo đúng mức độ trưởng thành của chúng. RAG là khuôn mẫu xuất hiện trước, đã được hiểu rõ và đã được áp dụng rộng rãi trong cả sản phẩm tiêu dùng lẫn doanh nghiệp. Tác tử mạnh hơn — nó không chỉ dựng ngữ cảnh mà còn tác động trực tiếp lên thế giới — nhưng bà cảnh báo ngay rằng đây là lĩnh vực mới nổi, chưa có khung lý thuyết ổn định để định nghĩa, phát triển và đánh giá; phần viết về tác tử, theo lời bà, mang tính thử nghiệm hơn phần còn lại của sách.1
Có hai cách. Cách thứ nhất — cho máy tra tài liệu — đã có nhiều người dùng và chạy tốt. Cách thứ hai — cho máy tự dùng công cụ như người — mạnh hơn nhiều nhưng còn mới, còn hay hỏng, và chưa ai biết cách chấm điểm nó cho chuẩn. Nhớ nhé: mạnh hơn thì cũng dễ hỏng to hơn.
Huyen ranks the two patterns by how mature they actually are. RAG came first, is better understood, and has been rapidly adopted across both consumer and enterprise use cases. Agents are more powerful — they do not just construct context, they act on the world — but she warns up front that this is an emerging field with no established theoretical frameworks for defining, developing, and evaluating them; the agent material, in her words, is more experimental than the rest of the book.1
CẢNHCON
TEXT
Truy xuất trước, sinh sauTra tài liệu rồi mới trả lờiRetrieve, then generate
Khuôn mẫu “truy xuất rồi sinh” xuất hiện lần đầu trong bài “Reading Wikipedia to Answer Open-Domain Questions” (Chen và cộng sự, 2017): hệ thống lấy năm trang Wikipedia liên quan nhất đến câu hỏi, rồi một mô hình đọc chúng để soạn câu trả lời.2 Thuật ngữ retrieval-augmented generation được đặt ra ba năm sau đó, trong bài của Lewis và cộng sự (2020), như lời giải cho những tác vụ nặng tri thức mà toàn bộ tri thức không thể nhồi hết vào mô hình.3
Hồi 2017 có người nghĩ ra cách này: máy không trả lời ngay, mà đi tìm năm trang Wikipedia hợp nhất với câu hỏi, đọc xong mới trả lời. Ba năm sau người ta đặt cho nó cái tên RAG. Nhớ nhé: tra rồi hẵng nói, đó là toàn bộ ý tưởng.
The retrieve-then-generate pattern first appeared in “Reading Wikipedia to Answer Open-Domain Questions” (Chen et al., 2017): the system retrieves the five Wikipedia pages most relevant to a question, then a model reads them to generate an answer.2 The term retrieval-augmented generation was coined three years later by Lewis et al. (2020), as a solution for knowledge-intensive tasks where all the available knowledge cannot be fed into the model directly.3
Huyen đặt một phép so sánh đáng nhớ: dựng ngữ cảnh cho mô hình nền tảng tương đương với kỹ thuật đặc trưng (feature engineering) cho học máy cổ điển — cả hai cùng một mục đích, đưa cho mô hình đúng thông tin nó cần để xử lý một đầu vào. Nhìn như vậy thì RAG không phải một thủ thuật vá víu, mà là lớp kỹ thuật dữ liệu của thời mô hình nền tảng.
RAG là kỹ thuật dựng ngữ cảnh riêng cho từng truy vấn, thay vì dùng chung một ngữ cảnh cho mọi truy vấn.
RAG là: mỗi câu hỏi được đưa kèm đúng những trang tài liệu hợp với nó, chứ không phải cả tủ hồ sơ.
RAG is a technique for constructing context specific to each query, instead of using the same context for all queries.
Cách nhìn này có một hệ quả thực dụng mà Huyen nhấn mạnh: vì ngữ cảnh gắn với truy vấn, dữ liệu của một người dùng chỉ xuất hiện trong những truy vấn của chính người đó — quản trị dữ liệu trở nên dễ hơn hẳn.
-
01Term-based retrieval
Truy xuất theo từ khóa — đếm chữ, không hiểu nghĩaTìm theo chữ — như tra mục lục cuối sáchTerm-based retrieval — counting words, not meaning
Cách trực tiếp nhất là tìm theo từ khóa. Hai đại lượng chi phối nó: tần suất từ (TF) — một từ xuất hiện bao nhiêu lần trong tài liệu — và tần suất tài liệu nghịch đảo (IDF) — càng nhiều tài liệu chứa một từ thì từ đó càng ít thông tin. Nếu có 10 tài liệu và 5 trong số đó chứa một từ, IDF của từ ấy là 10 / 5 = 2.1 BM25 — thế hệ thứ 25 của thuật toán Best Matching, do Robertson và cộng sự phát triển trong thập niên 1980 — là một biến thể của TF-IDF có chuẩn hóa theo độ dài tài liệu.1
Cách dễ nhất là tìm theo chữ. Hai mẹo: chữ nào lặp nhiều trong một tờ thì tờ đó chắc nói về nó; còn chữ nào tờ nào cũng có — như “và”, “của” — thì chẳng nói lên điều gì. Nhớ nhé: chữ hiếm mới là chữ quý.
The most direct approach is keyword search. Two quantities drive it: term frequency (TF) — how often a term appears in a document — and inverse document frequency (IDF) — the more documents contain a term, the less informative it is. With 10 documents and 5 containing a term, that term's IDF is 10 / 5 = 2.1 BM25 — the 25th generation of the Best Matching algorithm, developed by Robertson et al. in the 1980s — modifies TF-IDF by normalising term frequency by document length.1
Thấy nó ở đâuWhere you see it Elasticsearch và BM25 vẫn đang chạy vô số hệ tìm kiếm. Huyen gọi chúng là “đối thủ đáng gờm” để so sánh với các thuật toán hiện đại hơn — mạnh sẵn từ lúc cài, nhưng ít chỗ để tinh chỉnh về sau.1 Đây vẫn là cách mà hầu hết ô tìm kiếm trên mạng đang dùng. Rẻ, nhanh, và khó đánh bại. Elasticsearch and BM25 still power countless search systems. Huyen calls them formidable baselines to compare modern algorithms against — strong out of the box, but with few knobs to improve later.1Chỉ mục ngược
Elasticsearch, dựng trên Lucene, dùng cấu trúc gọi là chỉ mục ngược (inverted index): một từ điển ánh xạ từ thuật ngữ sang các tài liệu chứa nó, kèm tần suất từ và số tài liệu — đủ để tính điểm TF-IDF ngay khi tra.
Bẫy tách từ
Tách truy vấn thành từng từ nghe đơn giản, nhưng “hot dog” tách ra thành “hot” và “dog” thì cả hai đều mất nghĩa gốc. Cách chữa là coi những cụm n-gram phổ biến như một thuật ngữ duy nhất.
-
02Embedding-based retrieval
Truy xuất theo ngữ nghĩa — so ý, không so chữTìm theo nghĩa — hiểu ý rồi mới tìmEmbedding-based retrieval — matching meaning, not letters
Truy xuất theo từ khóa tính độ liên quan ở mức từ vựng chứ không phải ngữ nghĩa. Huyen lấy ví dụ: hỏi “transformer architecture” có thể nhận về tài liệu nói về máy biến áp hoặc về bộ phim Transformers.1 Truy xuất theo embedding xếp hạng tài liệu theo mức gần gũi về nghĩa. Lúc lập chỉ mục, mỗi mẩu dữ liệu được chuyển thành vector và cất vào cơ sở dữ liệu vector; lúc truy vấn, câu hỏi cũng được chuyển thành vector rồi tìm k vector gần nhất.
Tìm theo chữ có lúc dở: gõ “transformer” thì máy đưa cả bài về cục biến áp lẫn bộ phim robot. Cách thứ hai là dạy máy biến mỗi câu thành một điểm trên bản đồ, câu nào cùng ý thì nằm gần nhau. Rồi chỉ việc tìm điểm gần nhất. Nhớ nhé: gần nghĩa mới quý, chứ không phải giống chữ.
Term-based retrieval computes relevance at a lexical level, not a semantic one. Huyen's example: querying “transformer architecture” might return documents about the electrical device or the movie Transformers.1 Embedding-based retrieval instead ranks documents by how closely their meanings align with the query. Indexing converts each chunk into a vector stored in a vector database; querying embeds the question and fetches the k nearest vectors.
Thấy nó ở đâuWhere you see it Tìm kiếm vector không phải phát minh của AI sinh. Nó là xương sống của tìm kiếm, gợi ý, phân cụm và phát hiện gian lận — và các thư viện lâu đời như FAISS, ScaNN, Annoy, Hnswlib đều dùng được cho RAG.1 Cái bản đồ ý nghĩa này đã có từ lâu: nó chính là thứ giúp app nhạc đoán bài bạn thích. Vector search was not invented for generative AI. It is the backbone of search, recommendation, clustering and fraud detection — and long-standing libraries like FAISS, ScaNN, Annoy and Hnswlib all work for RAG.1Xấp xỉ, không chính xác
Tìm k láng giềng gần nhất một cách ngây thơ (k-NN) cho kết quả chính xác nhưng rất nặng, chỉ hợp với tập nhỏ. Dữ liệu lớn dùng láng giềng gần xấp xỉ (ANN): LSH băm các vector giống nhau vào cùng rổ, HNSW dựng đồ thị nhiều tầng, IVF gom cụm bằng K-means, Annoy dựng nhiều cây nhị phân ngẫu nhiên.
Cái giá của nghĩa
Sinh embedding tốn tiền, nhất là khi dữ liệu thay đổi liên tục và phải sinh lại. Huyen ghi nhận rằng chi cho cơ sở dữ liệu vector bằng một phần năm, thậm chí một nửa, chi cho API mô hình là chuyện không hiếm gặp ở các công ty.
-
03Hybrid search & reranking
Tìm lai — rẻ trước, tinh sauLọc thô rồi lọc tinhHybrid search — cheap first, precise second
Hệ truy xuất chạy thật thường kết hợp nhiều thuật toán; ghép truy xuất theo từ khóa với truy xuất theo embedding gọi là hybrid search. Có thể ghép nối tiếp: một bộ truy xuất rẻ và thô lấy về ứng viên, rồi một cơ chế đắt và tinh hơn chọn lại — bước sau gọi là reranking. Cũng có thể chạy song song rồi gộp các bảng xếp hạng; thuật toán gộp phổ biến là reciprocal rank fusion (RRF), trong đó điểm của một tài liệu là tổng của 1/(k + thứ hạng) qua các bộ truy xuất, với hằng số k thường lấy bằng 60.1
Không ai chỉ dùng một cách. Người ta lấy cách rẻ để vớt một nắm tài liệu, rồi lấy cách đắt hơn để chọn ra vài tờ hay nhất. Hoặc cho hai cách cùng chấm, rồi cộng điểm lại. Nhớ nhé: lọc thô trước, lọc tinh sau — vừa rẻ vừa chuẩn.
Production retrieval systems typically combine several algorithms; pairing term-based with embedding-based retrieval is called hybrid search. They can run in sequence: a cheap, coarse retriever fetches candidates, then a more precise but more expensive mechanism picks among them — that second step is reranking. Or in parallel, merging the rankings; a common merge algorithm is reciprocal rank fusion (RRF), where a document's score sums 1/(k + rank) across retrievers, with k typically 60.1
Thấy nó ở đâuWhere you see it Huyen lấy lại chính ví dụ “transformer”: trước hết vớt mọi tài liệu chứa chữ ấy, rồi dùng tìm kiếm vector để lọc ra những tài liệu thật sự nói về thứ bạn đang hỏi.1 Bộ xếp lại cũng có thể ưu tiên dữ liệu mới — hữu ích cho tin tức, hộp thư, hay phân tích thị trường. Ví dụ: gõ “transformer”, vớt hết mọi bài có chữ đó, rồi mới lọc lấy bài đúng ý mình. Huyen reuses the “transformer” example: first fetch every document containing the word, then use vector search to keep the ones actually about what you meant.1 Rerankers can also favour recency — useful for news, email assistants, or market analysis.Xếp lại khác xếp hạng tìm kiếm
Trong tìm kiếm, vị trí thứ nhất hay thứ năm là chuyện sống còn. Trong xếp lại ngữ cảnh, thứ tự vẫn có ảnh hưởng — mô hình hiểu phần đầu và phần cuối ngữ cảnh tốt hơn — nhưng miễn là tài liệu có mặt trong ngữ cảnh, vị trí của nó ít quan trọng hơn hẳn.
Vì sao cần lai
Chuyển dữ liệu thành embedding có thể làm mờ chính những từ khóa ta cần: mã lỗi như EADDRNOTAVAIL (99) hay tên sản phẩm rất khó tìm lại sau khi đã bị nhúng.1 Ghép với truy xuất theo từ khóa là cách chữa trực tiếp cho điểm yếu này.
-
04Chunking & contextual retrieval
Cắt mẩu và vá ngữ cảnh cho từng mẩuCắt tài liệu ra sao cho không mất ýChunking, and patching context back into each chunk
Không thể truy xuất nguyên cả tài liệu — ngữ cảnh sẽ dài vô hạn — nên tài liệu được cắt thành mẩu. Cắt sai thì hỏng: Huyen lấy câu “I left my wife a note”, cắt thành “I left my wife” và “a note” thì cả hai mẩu đều không còn giữ được ý gốc.1 Chồng lấn mẩu là cách bảo toàn thông tin ở ranh giới. Một mẩu nhỏ cho phép nhồi nhiều mẩu hơn vào ngữ cảnh, nhưng dễ mất thông tin và tăng chi phí xử lý — Huyen kết luận thẳng: không có kích thước mẩu tối ưu phổ quát, phải thử.1
Tài liệu dài quá thì phải cắt nhỏ. Nhưng cắt ẩu thì hỏng: câu “tôi để lại cho vợ một mẩu giấy” mà cắt làm đôi thì nửa nào cũng vô nghĩa. Mẩu nhỏ thì nhét được nhiều nhưng dễ mất ý; mẩu to thì giữ được ý nhưng nhét được ít. Nhớ nhé: không có cỡ nào đúng cho mọi trường hợp — phải thử.
You cannot retrieve whole documents — the context would grow without bound — so documents are split into chunks. Split badly and you lose the point: Huyen's example is “I left my wife a note”, which split into “I left my wife” and “a note” leaves neither chunk carrying the original meaning.1 Overlapping chunks preserve boundary information. Smaller chunks let you fit more of them into the context but risk losing information and raise processing cost — Huyen is blunt: there is no universal best chunk size, you have to experiment.1
Thấy nó ở đâuWhere you see it Anthropic dùng chính mô hình AI để sinh một đoạn ngữ cảnh ngắn — thường 50–100 token — giải thích mẩu đó nằm ở đâu trong tài liệu gốc, rồi dán đoạn ấy vào đầu mẩu trước khi lập chỉ mục.4 Mẹo hay: trước khi cất một mẩu vào tủ, dán lên đó một dòng ghi chú “mẩu này nói về gì, trích từ đâu”. Sau này tìm dễ hơn hẳn. Anthropic uses an AI model to generate a short context — usually 50–100 tokens — explaining where a chunk sits within its original document, then prepends it to the chunk before indexing.4Vá bằng siêu dữ liệu
Ngoài đoạn ngữ cảnh sinh tự động, mỗi mẩu còn có thể được bổ sung thẻ, từ khóa, thực thể trích xuất, hoặc chính những câu hỏi mà nó trả lời được. Bài hướng dẫn đặt lại mật khẩu có thể được gắn kèm “tôi quên mật khẩu”, “tôi không đăng nhập được”, “tôi không tìm thấy tài khoản”.
Viết lại truy vấn
Câu hỏi “Thế còn Emily Doe?” là vô nghĩa nếu tách khỏi hội thoại. Trước khi truy xuất, cần viết lại nó thành một câu đứng độc lập. Huyen cảnh báo: nếu phải giải danh tính mà không có dữ liệu — “thế còn vợ anh ấy?” — thì bộ viết lại phải thừa nhận là không giải được, chứ không được bịa ra một cái tên.
Công cụ, kế hoạch, và những kiểu hỏng mớiMáy tự cầm đồ nghề mà làmTools, plans, and new ways to fail
Huyen mở phần này bằng một định nghĩa cũ hơn cả học sâu: tác tử là bất cứ thứ gì có thể cảm nhận môi trường và tác động lên môi trường đó — bà dẫn Artificial Intelligence: A Modern Approach của Russell và Norvig, cuốn sách định nghĩa chính ngành trí tuệ nhân tạo là “nghiên cứu và thiết kế những tác tử duy lý”.1 Một tác tử vì thế được đặc trưng bởi hai thứ: môi trường nó hoạt động, và tập hành động nó thực hiện được.
Tác tử nghĩa là gì? Là thứ biết nhìn quanh và biết làm. Con mèo là một tác tử. Cái máy hút bụi tự chạy cũng là một tác tử. Và một chương trình AI biết mở trình duyệt đi tra giá vé máy bay cũng vậy. Nhớ nhé: nhìn được và làm được, thế là thành tác tử.
Huyen opens with a definition older than deep learning: an agent is anything that can perceive its environment and act upon that environment — citing Russell and Norvig's Artificial Intelligence: A Modern Approach, the book that defines the field of AI research itself as “the study and design of rational agents”.1 An agent is therefore characterised by two things: the environment it operates in, and the set of actions it can perform.
Điểm tinh tế: quan hệ giữa môi trường và công cụ đi cả hai chiều. Môi trường quyết định công cụ nào có thể dùng — trong một ván cờ, hành động khả dĩ duy nhất là các nước đi hợp lệ. Nhưng kho công cụ lại giới hạn ngược môi trường: một con robot chỉ biết bơi thì mãi mãi bị nhốt trong nước.
Trong một tác tử, AI là bộ não: nó xử lý tác vụ và phản hồi từ môi trường, lập kế hoạch hành động, rồi tự xác định xem tác vụ đã xong chưa.
Trong một trợ lý máy, AI đóng vai cái đầu: nghĩ xem phải làm gì, sai tay chân làm, rồi xem đã xong chưa.
In an AI agent, AI is the brain: it processes the task and the feedback from the environment, plans a sequence of actions, and determines whether the task has been accomplished.
Bà cũng phân biệt tác tử mô hình nền tảng với tác tử học tăng cường: cả hai đều được đặc trưng bởi môi trường và hành động, nhưng ở tác tử RL bộ lập kế hoạch phải được huấn luyện bằng thuật toán RL — tốn thời gian và tài nguyên — còn ở tác tử mô hình nền tảng, chính mô hình là bộ lập kế hoạch, chỉ cần prompt hoặc tinh chỉnh.1 Bà dự đoán về dài hạn hai dòng này sẽ hợp nhất.
-
05Tool inventory
Kho công cụ — nhiều hơn không phải lúc nào cũng tốt hơnHộp đồ nghề — không phải cứ nhiều là hayTool inventory — more is not always better
Không cần công cụ ngoài mới là tác tử, nhưng thiếu chúng thì năng lực rất hạn chế: tự thân mô hình thường chỉ làm được một hành động. Huyen dẫn Chameleon (Lu và cộng sự, 2023): một tác tử chạy trên GPT-4 với 13 công cụ vượt chính GPT-4 trơ trọi — cải thiện 11,37% so với kết quả few-shot tốt nhất từng công bố trên ScienceQA, và tăng 17% độ chính xác trên TabMWP.5 Nhưng phổ kho công cụ trong tài liệu nghiên cứu rất rộng: Toolformer tinh chỉnh GPT-J để học năm công cụ,6 còn Gorilla thử cho tác tử chọn đúng lời gọi trong 1.645 API.7
Máy không có đồ nghề thì chỉ biết làm một việc: nói. Đưa cho nó máy tính bỏ túi, nó tính được. Đưa trình duyệt, nó tra tin mới được. Nhưng đưa quá nhiều đồ thì nó lại rối, y như người thợ có cả nghìn món mà chẳng biết dùng món nào. Nhớ nhé: đồ nghề đúng chứ không phải đồ nghề nhiều.
A system does not need external tools to be an agent, but without them its capabilities are limited: by itself, a model can typically perform one action. Huyen cites Chameleon (Lu et al., 2023): a GPT-4-powered agent with 13 tools outperforms GPT-4 alone — improving the best published few-shot result on ScienceQA by 11.37%, and raising TabMWP accuracy by 17%.5 But the range in the literature is wide: Toolformer finetuned GPT-J to learn five tools,6 while Gorilla attempted to have agents pick the right call among 1,645 APIs.7
Thấy nó ở đâuWhere you see it Huyen chỉ ra rằng ChatGPT chính là một tác tử: nó tra web, chạy mã Python, và sinh ảnh bằng cách gọi DALL-E như một công cụ.1 Và chính hệ RAG cũng là tác tử, với bộ truy xuất văn bản, bộ truy xuất ảnh và bộ thực thi SQL là công cụ của nó. Chính ChatGPT là một trợ lý máy kiểu này: nó biết lên mạng tìm, biết chạy chương trình, biết nhờ một máy khác vẽ tranh hộ. Huyen points out that ChatGPT is itself an agent: it searches the web, executes Python, and generates images by calling DALL-E as a tool.1 RAG systems are agents too, with text retrievers, image retrievers and SQL executors as their tools.Cách chọn công cụ
Không có chỉ dẫn nào chắc thắng. Huyen gợi ý làm thực nghiệm: so sánh hiệu năng với các bộ công cụ khác nhau; làm nghiên cứu cắt bỏ (ablation) xem bỏ một công cụ đi thì tụt bao nhiêu — không tụt thì bỏ hẳn; tìm những công cụ mà tác tử hay dùng sai; và vẽ phân bố lời gọi để biết công cụ nào dùng nhiều, công cụ nào bỏ xó.
Công cụ đẻ ra công cụ
Chameleon đề xuất nghiên cứu chuyển tiếp công cụ: sau công cụ X thì khả năng gọi công cụ Y là bao nhiêu — hai công cụ hay đi với nhau có thể gộp thành một công cụ lớn hơn.5 Voyager đi xa hơn với một bộ quản lý kỹ năng lưu lại những kỹ năng mới mà tác tử tạo ra, mỗi kỹ năng là một chương trình, để dùng lại về sau.1
-
06Planning, decoupled from execution
Tách kế hoạch khỏi thực thiDuyệt kế hoạch trước, làm sauDecoupling planning from execution
Có thể gộp lập kế hoạch và thực thi vào cùng một prompt — bảo mô hình nghĩ từng bước rồi làm luôn. Nhưng Huyen đặt câu hỏi phản biện: nếu mô hình nghĩ ra một kế hoạch 1.000 bước mà chẳng tới đâu thì sao? Không ai giám sát, tác tử sẽ chạy hàng giờ, đốt thời gian và tiền gọi API, trước khi ta kịp nhận ra.1 Cách chữa là tách: sinh kế hoạch trước, chỉ thực thi sau khi kế hoạch đã được thẩm định — bằng luật đơn giản (loại kế hoạch có hành động không tồn tại, loại kế hoạch quá X bước) hoặc bằng chính một mô hình làm giám khảo.
Nếu vừa nghĩ vừa làm thì dễ đi lạc rất xa mới biết mình sai. Nên làm thế này: bắt máy viết kế hoạch ra giấy trước, mình đọc duyệt, thấy được mới cho làm. Nhớ nhé: duyệt trước khi làm, đỡ tốn công đi lạc.
You can couple planning and execution in one prompt — ask the model to think step by step, then execute. But Huyen pushes back: what if the model produces a 1,000-step plan that does not accomplish the goal? Without oversight the agent will run for hours, burning time and API calls, before you realise it is going nowhere.1 The fix is to decouple: generate the plan first, and only execute it once validated — by simple heuristics (drop plans with invalid actions, drop plans over X steps) or by an AI judge.
Thấy nó ở đâuWhere you see it Tách ra rồi thì hệ có ba thành phần — sinh kế hoạch, thẩm định, thực thi — và nếu coi mỗi thành phần là một tác tử thì đây đã là một hệ đa tác tử.1 Con người cũng có thể xen vào bất kỳ khâu nào: nêu kế hoạch cấp cao, duyệt kế hoạch, hoặc tự tay thực thi những thao tác rủi ro như cập nhật cơ sở dữ liệu hay hợp nhất một thay đổi mã. Chia ra ba vai: một đứa nghĩ, một đứa duyệt, một đứa làm. Việc nào nguy hiểm thì để người thật bấm nút. Once decoupled, the system has three components — plan generation, plan validation, plan execution — and if you consider each an agent, this is already a multi-agent system.1 Humans can step into any stage: supplying a high-level plan, validating one, or executing risky operations like updating a database or merging a code change themselves.Độ hạt của kế hoạch
Có một đánh đổi: kế hoạch chi tiết khó sinh nhưng dễ thực thi; kế hoạch cấp cao dễ sinh nhưng khó thực thi. Cách vòng qua là lập kế hoạch phân tầng — sinh kế hoạch quý trước, rồi từ mỗi quý sinh kế hoạch tháng. Viết kế hoạch bằng ngôn ngữ tự nhiên thay vì tên hàm chính xác giúp kế hoạch bền trước thay đổi API, nhưng phải thêm một bộ phiên dịch — mà phiên dịch là việc đơn giản hơn lập kế hoạch nhiều.
Luồng điều khiển
Kế hoạch tuần tự chỉ là một loại. Còn có song song (lấy 100 sản phẩm bán chạy rồi tra giá từng cái cùng lúc), rẽ nhánh (đọc báo cáo tài chính rồi mới quyết mua hay bán), và vòng lặp (sinh số ngẫu nhiên cho đến khi gặp số nguyên tố).1 Trong phần mềm truyền thống, điều kiện rẽ nhánh là chính xác; với tác tử, chính mô hình AI quyết định luồng điều khiển — nên kế hoạch phi tuần tự vừa khó sinh vừa khó dịch thành lệnh.
-
07Reflection & error correction
Phản tỉnh — rẻ, dễ làm, và hiệu quả bất ngờTự xem lại mình làm đúng chưaReflection — cheap, easy, surprisingly effective
Phản tỉnh không bắt buộc để một tác tử vận hành, nhưng Huyen viết rằng nó cần thiết để tác tử thành công.1 Khuôn mẫu phổ biến nhất do ReAct đề xuất (Yao và cộng sự, 2022): đan xen suy luận và hành động theo nhịp Thought — Act — Observation, lặp cho tới khi tác tử tự xác định là đã xong.8 Reflexion (Shinn và cộng sự, 2023) tách phản tỉnh thành hai mô-đun riêng: một bộ đánh giá kết quả, và một mô-đun tự phản tỉnh phân tích xem đã sai ở đâu.9
Làm xong thì phải xem lại. Cách làm rất giống cách ta giải toán: nghĩ một câu, làm một bước, nhìn kết quả, rồi lại nghĩ tiếp. Sai thì hỏi “vì sao mình sai?” rồi làm lại. Nhớ nhé: biết mình sai ở đâu là đã sửa được một nửa.
Reflection is not strictly necessary for an agent to operate, but Huyen writes it is necessary for an agent to succeed.1 The most common pattern comes from ReAct (Yao et al., 2022): interleaving reasoning and action in a Thought — Act — Observation rhythm, repeated until the agent decides the task is finished.8 Reflexion (Shinn et al., 2023) splits reflection into two separate modules: an evaluator that scores the outcome, and a self-reflection module that analyses what went wrong.9
Thấy nó ở đâuWhere you see it Ví dụ Huyen đưa ra rất cụ thể: với một tác vụ sinh mã, bộ đánh giá phát hiện mã hỏng một phần ba số ca kiểm thử; tác tử phản tỉnh rằng nó đã quên trường hợp mảng toàn số âm; rồi sinh lại mã có tính tới trường hợp đó.1 Ví dụ: máy viết chương trình, chạy thử thấy sai một phần ba, nó tự nhận ra “à, mình quên trường hợp toàn số âm”, rồi viết lại. Huyen's example is concrete: on a code generation task, an evaluator finds the generated code fails a third of the test cases; the agent reflects that it failed to consider all-negative arrays; it then regenerates the code accounting for them.1Cái giá của việc nghĩ ra tiếng
So với sinh kế hoạch, phản tỉnh dễ cài đặt và cải thiện hiệu năng đáng ngạc nhiên. Nhược điểm nằm ở độ trễ và chi phí: suy nghĩ, quan sát và đôi khi cả hành động đều tốn rất nhiều token. Cả nhóm ReAct lẫn Reflexion đều phải nhồi nhiều ví dụ vào prompt để mô hình bám đúng định dạng — lại tốn thêm token đầu vào và chiếm mất chỗ trong ngữ cảnh.1
Mô hình có biết lập kế hoạch không?
Huyen trình bày cả hai phía. Yann LeCun khẳng định mô hình ngôn ngữ tự hồi quy không lập kế hoạch được; Kambhampati lập luận rằng các bài báo nhầm lẫn giữa tri thức chung về lập kế hoạch trích ra từ mô hình với kế hoạch thực thi được.10 Bà phản biện lập luận “không quay lui được”: một mô hình chạy nhánh A, thấy không ổn, hoàn toàn có thể sửa sang nhánh B — đó chính là quay lui. Và bà để ngỏ khả năng mô hình kém lập kế hoạch đơn giản vì chưa được cho đủ công cụ để làm việc đó.
-
08Compound mistakes
Sai số dồn — vì sao tác tử cần mô hình mạnh hơnSai nhỏ cộng lại thành sai toCompound mistakes — why agents need stronger models
Đây là con số đáng nhớ nhất của chương. Tác tử thường phải đi nhiều bước, và độ chính xác tổng thể giảm theo số bước: nếu mô hình đúng 95% mỗi bước, thì qua 10 bước độ chính xác còn 60%, và qua 100 bước chỉ còn 0,6%.1 Cộng thêm lý do thứ hai — rủi ro cao hơn: có công cụ trong tay, tác tử làm được việc có ảnh hưởng lớn hơn, nên mỗi lần hỏng cũng nặng nề hơn.
Đây là con số nên nhớ. Cứ cho là mỗi bước máy làm đúng 95 lần trên 100 — nghe rất giỏi. Nhưng đi 10 bước liền thì chỉ còn đúng 6 trên 10. Đi 100 bước thì gần như chắc chắn hỏng. Nhớ nhé: đi càng nhiều bước, càng dễ lạc — nên mỗi bước phải thật chắc.
This is the chapter's most memorable number. An agent often needs many steps, and overall accuracy decreases as steps accumulate: at 95% accuracy per step, accuracy drops to 60% over 10 steps, and to just 0.6% over 100 steps.1 Add the second reason — higher stakes: with tools, agents perform more impactful tasks, so any failure has more severe consequences.
Thấy nó ở đâuWhere you see it Huyen phân loại kiểu hỏng rất rõ. Hỏng lập kế hoạch, phổ biến nhất là hỏng khi dùng công cụ: gọi công cụ không tồn tại; gọi đúng công cụ nhưng sai số lượng tham số; gọi đúng công cụ đúng tham số nhưng sai giá trị. Hỏng mục tiêu: kế hoạch không giải được tác vụ, hoặc giải được nhưng phá vỡ ràng buộc. Và kiểu hỏng lạ nhất — hỏng vì phản tỉnh sai: tác tử tin chắc mình đã xong trong khi chưa.1 Máy hỏng theo mấy kiểu: gọi món đồ không có trong hộp; cầm đúng đồ nhưng dùng sai cách; làm xong việc khác chứ không phải việc được giao; và tệ nhất là làm dở dang nhưng khăng khăng “xong rồi”. Huyen classifies the failure modes precisely. Planning failures, most commonly tool-use failures: calling a tool that is not in the inventory; calling a valid tool with the wrong number of parameters; calling a valid tool with correct parameters but wrong values. Goal failures: the plan does not solve the task, or solves it while breaking the constraints. And the strangest one — failure caused by errors in reflection: the agent is convinced it has accomplished a task when it has not.1Thời gian cũng là ràng buộc
Huyen chỉ ra một ràng buộc thường bị bỏ quên khi đánh giá tác tử: thời gian. Nhiều lúc thời gian không quan trọng vì ta cứ giao việc rồi quay lại lấy. Nhưng nếu ta nhờ tác tử soạn một hồ sơ xin tài trợ mà nó soạn xong sau hạn nộp, thì tác tử ấy chẳng giúp được gì.
Hỏng công cụ, không phải hỏng kế hoạch
Có một lớp hỏng riêng: dùng đúng công cụ nhưng công cụ trả kết quả sai — bộ chú thích ảnh mô tả sai, bộ sinh SQL sinh sai truy vấn. Cách chữa là hành chính chứ không tinh vi: kiểm thử từng công cụ độc lập, và luôn in ra mọi lời gọi cùng kết quả của nó để soi. Một lớp nữa là thiếu công cụ — nếu tác tử hay hỏng ở một lĩnh vực, hãy hỏi chuyên gia lĩnh vực đó xem họ sẽ dùng công cụ gì.
Ba tầng ghi nhớ của một mô hìnhBa chỗ cất trí nhớA model's three memory tiers
Huyen khép chương bằng thành phần mà cả hai khuôn mẫu đều dựa vào. Một mô hình AI có ba cơ chế ghi nhớ: tri thức nội tại — chính mô hình, giữ lại những gì nó học từ dữ liệu huấn luyện, chỉ đổi khi mô hình được cập nhật; bộ nhớ ngắn hạn — ngữ cảnh, truy cập nhanh nhưng dung lượng giới hạn và không tồn tại qua tác vụ; và bộ nhớ dài hạn — nguồn dữ liệu ngoài truy xuất được, bền qua các tác vụ và xóa được mà không cần cập nhật mô hình.1
Máy nhớ theo ba kiểu, y như người. Kiểu thứ nhất là thứ đã ăn vào máu — như bạn biết thở, chẳng cần nghĩ. Kiểu thứ hai là thứ vừa nghe xong, như tên người mới gặp, nhớ được một lúc rồi quên. Kiểu thứ ba là sổ tay, sách vở, máy tính — cất ở ngoài, cần thì mở ra xem. Nhớ nhé: ba chỗ nhớ, ba việc khác nhau.
Huyen closes the chapter with the component both patterns rest on. An AI model has three memory mechanisms: internal knowledge — the model itself, retaining what it learned from training data and changing only when the model is updated; short-term memory — the context, fast to access but limited in capacity and not persistent across tasks; and long-term memory — external data sources reachable via retrieval, persistent across tasks and deletable without updating the model.1
Bà đặt một quy tắc chọn tầng theo tần suất dùng: thông tin thiết yếu cho mọi tác vụ nên được đưa vào tri thức nội tại qua huấn luyện hoặc tinh chỉnh; thông tin hiếm khi cần thì để ở bộ nhớ dài hạn; còn bộ nhớ ngắn hạn dành riêng cho thông tin tức thời, gắn với ngữ cảnh hiện tại.
Bộ nhớ là cơ chế cho phép mô hình giữ lại và sử dụng thông tin — và nó gồm đúng hai chức năng: quản trị bộ nhớ, và truy xuất bộ nhớ.
Bộ nhớ gồm hai việc thôi: quyết định cất gì ở đâu, và lúc cần thì lấy ra.
Memory refers to mechanisms that let a model retain and use information — and it has exactly two functions: memory management, and memory retrieval.
Truy xuất bộ nhớ chính là truy xuất RAG, vì bộ nhớ dài hạn là một nguồn dữ liệu ngoài — nên phần lớn chương này đã nói về nó rồi. Phần còn lại, quản trị bộ nhớ, rút gọn thành hai thao tác: thêm và xóa. Với bộ nhớ dài hạn, xóa thường không cần vì lưu trữ ngoài rẻ và dễ mở rộng; nhưng bộ nhớ ngắn hạn bị chặn bởi độ dài ngữ cảnh tối đa nên bắt buộc phải có chiến lược. Huyen lấy một mốc minh họa: nếu dành sẵn 30% ngữ cảnh cho phần truy xuất từ bộ nhớ dài hạn, thì bộ nhớ ngắn hạn dùng được tối đa 70%.1
-
09FIFO and its blind spot
Vào trước ra trước — và điểm mù chết người của nóQuên cái cũ nhất trước — và cái bẫyFirst in, first out — and its fatal blind spot
Chiến lược đơn giản nhất là FIFO: thứ vào bộ nhớ ngắn hạn trước sẽ bị đẩy ra ngoài trước. Huyen ghi nhận rằng khi hội thoại dài ra, các nhà cung cấp API có thể bắt đầu cắt bỏ phần đầu, và các khung như LangChain cho giữ lại N tin nhắn hoặc N token cuối.1 Giả định nằm dưới là tin nhắn sớm ít liên quan hơn tới cuộc bàn hiện tại — và bà gọi thẳng giả định ấy là có thể sai chí mạng, vì trong nhiều hội thoại chính những tin nhắn đầu tiên mới nêu ra mục đích của cả cuộc trò chuyện.
Cách dễ nhất để dọn trí nhớ là vứt cái cũ nhất đi. Nhưng thử nghĩ xem: câu đầu tiên trong một cuộc nói chuyện thường là câu quan trọng nhất — nó nói ta đang bàn chuyện gì. Vứt nó đi thì máy quên mất mình đang làm gì. Nhớ nhé: cũ không có nghĩa là không quan trọng.
The simplest strategy is FIFO: whatever entered short-term memory first is moved out first. Huyen notes that as conversations lengthen, API providers may start removing the beginning, and frameworks like LangChain let you retain the last N messages or N tokens.1 The underlying assumption is that early messages are less relevant to the current discussion — and she calls that assumption potentially fatally wrong, because in many conversations the earliest messages are exactly the ones stating the purpose of the whole conversation.
Thấy nó ở đâuWhere you see it Chiến lược tinh vi hơn nhắm vào chỗ dư thừa. Ngôn ngữ người vốn dư thừa để tăng độ rõ; tóm tắt hội thoại, kèm theo dõi các thực thể có tên, là cách gọn nhất để cắt dư thừa ấy. Bae và cộng sự (2022) đi xa hơn: huấn luyện một bộ phân loại xét từng câu trong bộ nhớ và từng câu trong bản tóm tắt để quyết định câu nào — một, cả hai, hay không câu nào — được đưa vào bộ nhớ mới.1 Cách khá hơn: đừng vứt, mà hãy tóm tắt lại. Một trang giấy dài có thể gói thành ba dòng mà vẫn đủ ý. More sophisticated strategies target redundancy. Human language is redundant by design, to aid clarity; summarising the conversation, together with tracking named entities, is the most economical way to cut that redundancy. Bae et al. (2022) went further: a classifier examines each sentence in the memory and each in the summary to decide which — one, both, or neither — enters the new memory.1Phản tỉnh để nhớ
Liu và cộng sự (2023) dùng cách tiếp cận phản tỉnh: sau mỗi hành động, tác tử được yêu cầu nghĩ lại về thông tin vừa sinh ra, rồi quyết định nên chèn nó vào bộ nhớ, hợp nhất với thứ đã có, hay thay thế một mẩu khác — đặc biệt khi mẩu cũ đã lỗi thời và mâu thuẫn với thông tin mới.1
Khi hai mẩu nhớ cãi nhau
Có người chọn giữ mẩu mới hơn; có người nhờ mô hình phán xử nên giữ cái nào. Huyen không đưa ra đáp án duy nhất: cách xử lý mâu thuẫn tùy tình huống — mâu thuẫn có thể làm tác tử rối, nhưng cũng có thể giúp nó nhìn vấn đề từ nhiều phía.
-
10Why memory earns its keep
Bộ nhớ trả lại những gìCó trí nhớ thì được lợi gìWhat a memory system buys you
Huyen liệt kê bốn khoản lợi. Quản trị tràn thông tin trong một phiên: tác vụ dài sinh ra lượng thông tin vượt độ dài ngữ cảnh, phần dư đẩy xuống bộ nhớ dài hạn. Giữ thông tin giữa các phiên: một huấn luyện viên AI gần như vô dụng nếu mỗi lần xin lời khuyên bạn phải kể lại cả đời mình. Tăng tính nhất quán: mô hình tham chiếu được câu trả lời cũ thì hiệu chỉnh được câu trả lời mới. Và giữ toàn vẹn cấu trúc dữ liệu: văn bản vốn phi cấu trúc, nhét một bảng vào ngữ cảnh từng dòng một không bảo đảm mô hình hiểu đó là bảng.1
Có trí nhớ thì được bốn cái lợi. Một, làm việc dài mà không bị quên giữa chừng. Hai, lần sau gặp lại không phải kể lại từ đầu. Ba, trả lời trước sao thì sau vậy, không tiền hậu bất nhất. Bốn, cất được bảng biểu cho ra bảng biểu. Nhớ nhé: nhớ được thì mới thành bạn đồng hành, chứ không chỉ là cái máy trả lời.
Huyen lists four benefits. Managing overflow within a session: a long task generates more information than the context can hold, and the excess goes to long-term memory. Persisting information between sessions: an AI coach is practically useless if you have to explain your whole life story every time you want advice. Boosting consistency: a model that can reference its previous answers can calibrate future ones. And maintaining structural integrity: text is inherently unstructured, and feeding a table into the context line by line does not guarantee the model understands it is a table.1
Thấy nó ở đâuWhere you see it Ví dụ của bà rất đời: nếu mô hình nhớ rằng bạn từng thích The Three-Body Problem, nó có thể gợi ý những cuốn tương tự khi bạn hỏi sách. Còn ở phía cấu trúc: một tác tử tìm khách hàng tiềm năng có thể dùng một bảng tính để lưu danh sách, hoặc dùng một hàng đợi để lưu chuỗi hành động cần làm.1 Ví dụ: máy nhớ bạn từng thích một cuốn sách, lần sau nó gợi ý đúng gu. Hoặc nó dùng một bảng tính để ghi danh sách việc, thay vì cố nhớ trong đầu. Her examples are everyday: if the model remembers you loved The Three-Body Problem, it can suggest similar books next time you ask. On the structural side: an agent finding sales leads can use a spreadsheet to store them, or a queue to store the sequence of actions to perform.1Không phải phát minh của AI
Huyen nhắc lại điều bà nhắc suốt chương: quản trị bộ nhớ là nền móng của mọi hệ dữ liệu, và đã có vô số chiến lược dùng bộ nhớ hiệu quả từ trước khi có mô hình nền tảng. AI không phải bắt đầu lại từ đầu — nó thừa kế.
Điều chương này bỏ ngỏ
Bà tự đánh dấu giới hạn: phần bộ nhớ chỉ là “một thảo luận ngắn” khép lại chương, và toàn bộ phần tác tử mang tính thử nghiệm hơn phần còn lại của sách. Đọc chương này nên đọc như một bản đồ đang được vẽ, không phải một giáo trình đã đóng.
Ba ngộ nhận thường gặp khi đọc chương nàyThree misconceptions this chapter corrects
“Ngữ cảnh dài rồi thì RAG hết thời”“Long context makes RAG obsolete”
Huyen nói thẳng là bà không nghĩ vậy, với hai lý do. Một: dù ngữ cảnh dài tới đâu vẫn sẽ có ứng dụng cần dài hơn — dữ liệu chỉ tăng theo thời gian, người ta tạo thêm chứ hiếm khi xóa bớt. Hai: mô hình xử lý được ngữ cảnh dài không có nghĩa là dùng tốt ngữ cảnh đó — càng dài thì càng dễ chú ý nhầm chỗ, và mỗi token thừa đều tốn tiền và có thể tăng độ trễ.1 Bà có dẫn hướng dẫn của Anthropic rằng nếu kho tri thức nhỏ hơn 200.000 token — khoảng 500 trang — thì cứ nhét cả vào prompt, không cần RAG.4 Nhưng đó là ngưỡng cho một trường hợp cụ thể, không phải lời cáo chung.
Huyen says plainly that she does not think so, for two reasons. One: however long the context, some applications will need more — data only grows, people add and rarely delete. Two: a model that can process long context does not necessarily use it well — the longer the context, the likelier it focuses on the wrong part, and every extra token costs money and can add latency.1 She does quote Anthropic's guidance that a knowledge base under 200,000 tokens — about 500 pages — can simply go into the prompt, with no need for RAG.4 But that is a threshold for one case, not an obituary.
“Tác tử là thứ gì đó hoàn toàn mới”“Agents are something entirely new”
Định nghĩa mà Huyen dùng đến từ năm 1995, trong Artificial Intelligence: A Modern Approach.1 Điều mới không phải khái niệm tác tử, mà là năng lực chưa từng có của mô hình nền tảng đã mở cánh cửa cho những ứng dụng tác tử trước đây không tưởng tượng nổi. Bà cũng nhắc rằng tác tử được dựng trên những khái niệm đã xuất hiện ở các chương trước của chính cuốn sách: tự phê bình, chuỗi suy nghĩ, và đầu ra có cấu trúc.
The definition Huyen uses dates to 1995, from Artificial Intelligence: A Modern Approach.1 What is new is not the concept of an agent but the unprecedented capabilities of foundation models, which opened the door to agentic applications that were previously unimaginable. She also notes that agents are built on concepts already introduced earlier in the book: self-critique, chain-of-thought, and structured outputs.
“Cứ thêm công cụ là tác tử giỏi lên”“More tools always means a better agent”
Nhiều công cụ cho nhiều năng lực hơn, nhưng Huyen cân ngay: càng nhiều công cụ thì càng khó hiểu và khó dùng chúng cho tốt — giống như con người cũng khó thành thạo một bộ đồ nghề quá lớn — và mô tả công cụ nhiều lên thì có khi không còn vừa ngữ cảnh.1 Thực nghiệm của Lu và cộng sự còn cho thấy lựa chọn công cụ phụ thuộc cả vào mô hình: GPT-4 chọn bộ công cụ rộng hơn ChatGPT, và ChatGPT nghiêng về chú thích ảnh trong khi GPT-4 nghiêng về truy xuất tri thức.5
More tools give more capabilities, but Huyen immediately counterweights: the more tools there are, the harder they are to understand and use well — much as humans struggle to master too large a toolkit — and growing tool descriptions may no longer fit the context.1 Lu et al.'s experiments further show that tool choice depends on the model: GPT-4 selects a wider set than ChatGPT, and ChatGPT favours image captioning while GPT-4 favours knowledge retrieval.5
Hệ của bạn hỏng ở đâuKiểm tra xem hỏng chỗ nàoWhere does your system break
Huyen viết rằng đánh giá là việc phát hiện hỏng hóc, và tác vụ càng phức tạp thì càng nhiều chỗ có thể hỏng. Bảy câu dưới đây bám theo chính những điểm hỏng mà chương này nêu tên.
Muốn biết hệ của mình có ổn không thì tự hỏi mấy câu này.
Huyen writes that evaluation is about detecting failures, and the more complex the task, the more possible failure points. These seven questions track the failure points this chapter names.
RAG dựng ngữ cảnh; tác tử dựng cả hành động. Cái thứ nhất đã chín và đã chạy trong sản xuất; cái thứ hai mạnh hơn, hỏng nặng hơn, và vẫn đang được dò đường. Cách thứ nhất là đưa đúng tài liệu cho máy. Cách thứ hai là đưa cả hộp đồ nghề. Cách hai mạnh hơn, nhưng cũng dễ hỏng to hơn. RAG builds context; agents build action. The first is mature and running in production; the second is more powerful, fails harder, and is still being charted.