Vô tình biến bộ nhớ LLM thành công cụ phân tích chương trình

28 tháng 8, 2026·5 phút đọc

Tác giả Jordy Zomer chia sẻ hành trình xây dựng Lemmalog, một công cụ dùng Datalog để quản lý trạng thái kiến thức cho LLM trong nghiên cứu lỗ hổng bảo mật. Kết quả thử nghiệm cho thấy phương pháp này vượt trội so với việc nhồi toàn bộ ngữ cảnh vào prompt, đặc biệt trong các tác vụ cập nhật kiến thức và từ chối tiền đề sai.

Vô tình biến bộ nhớ LLM thành công cụ phân tích chương trình

Vô tình biến bộ nhớ LLM thành công cụ phân tích chương trình

Trong quá trình dùng agent LLM để nghiên cứu lỗ hổng bảo mật, tác giả Jordy Zomer nhận ra một vấn đề lớn: model thường xuyên quên mất những gì đã xác lập và tiếp tục suy luận từ các giả định sai. Thay vì cải thiện bộ nhớ theo cách thông thường, anh đã xây dựng Lemmalog — một công cụ kết hợp LLM với Datalog để duy trì trạng thái kiến thức một cách có hệ thống, cho phép tự động vô hiệu hóa các kết luận phụ thuộc vào dữ kiện đã thay đổi và giải thích nguồn gốc của mọi suy luận.

Vấn đề: LLM quên và tự bịa

Trong các phiên nghiên cứu lỗ hổng kéo dài nhiều giờ, LLM có xu hướng lặp lại các hướng tiếp cận đã bị bác bỏ, quên rằng một giả định hóa ra là sai, hoặc tiếp tục suy luận từ dữ liệu không còn hiệu lực. Các hệ thống bộ nhớ truyền thống lưu trữ hội thoại cũ và truy vấn bằng vector embedding chỉ giải quyết được một phần — chúng không biết câu nào đã bị chứng minh là sai.

Giải pháp: Datalog cho LLM

Tác giả nhận ra vấn đề này giống hệt phân tích chương trình tĩnh: có các sự kiện đầu vào (facts), các luật suy diễn (rules), và điểm cố định (fixed point) — thứ mà ta tin là đúng hiện tại. Khi một sự kiện thay đổi, ta có thể cập nhật có chọn lọc thay vì tính toán lại toàn bộ.

Lemmalog tách bài toán thành hai phần:

  • LLM xử lý phần mờ: chuyển mã nguồn, output debugger, ghi chú thành các dữ kiện có cấu trúc
  • Datalog xử lý phần xác định: áp dụng luật suy diễn, theo dõi dependencies, tự động thu hồi kết luận sai

Các tính năng chính

Retraction (thu hồi dữ kiện): Nếu một kết luận có nhiều luồng chứng minh độc lập, việc xóa một dữ kiện không làm sụp đổ toàn bộ. Lemmalog theo dõi cách mỗi sự kiện được suy ra để cập nhật chính xác.

Provenance (truy xuất nguồn gốc): Với mỗi kết luận, ta có thể hỏi "tại sao tin điều này?". Điều này chống lại việc LLM tự khẳng định "chúng ta đã xác lập điều này rồi" khi thực tế không hề có.

Khoảng thời gian hiệu lực (validity intervals): Dữ kiện có thể thay đổi theo thời gian. Lemmalog cho phép lưu cả trạng thái cũ và mới, phục vụ việc truy vấn "tại sao lúc đó ta lại thử hướng này?".

Kết quả benchmark

LongMemEval (102 câu hỏi, chuẩn hóa): Lemmalog đạt F1 0.463 ± 0.010accuracy 0.575 ± 0.004, cao gấp đôi so với full context GPT-4.1 (0.197 F1) và chỉ dùng 2.700 token/câu thay vì 104.000.

Điểm ấn tượng nhất nằm ở Knowledge Update — đúng tình huống tác giả quan tâm nhất: biết A, sau đó học rằng A sai, giờ phải tin gì? Lemmalog đạt 0.579, vượt PropMem (0.528) và gấp gần 3 lần full context (0.202).

LoCoMo (1.986 câu hỏi, 10 hội thoại dài): Lemmalog đạt F1 0.533 ± 0.001, xếp thứ ba trong các hệ thống bộ nhớ chuyên dụng sau PropMem (0.605) và OpenClaw (0.557). Đáng chú ý, ở hạng mục adversarial questions (câu hỏi chứa tiền đề sai), Lemmalog đạt 0.707 so với 0.509 của full context — khả năng nói "không" một cách có cơ sở.

Bài học rút ra

  • Front-end quan trọng hơn engine: Hầu hết cải thiện đến từ việc sửa cách trích xuất thông tin, giải quyết danh tính thực thể, kết hợp BM25 + graph + embeddings cho truy vấn, chứ không phải từ Datalog engine thông minh hơn.
  • Tính toán ngày tháng cần chuẩn hóa: Một lỗi buồn cười — engine so sánh ngày như symbol nội bộ — đã giảm gần 20 điểm F1 temporal reasoning.
  • Lời hướng dẫn phản tác dụng: Thêm chỉ thị "chỉ trả lời khi được dữ kiện hỗ trợ" khiến model từ chối 32/102 câu trả lời hợp lệ vì không có fact nào chứa sẵn đáp án cuối cùng.
  • Suy luận có điều kiện vẫn còn yếu: LLM vẫn kém trong việc xử lý các tuyên bố có ngoại lệ ("thích nhà hàng yên tĩnh, trừ khi đi với bạn bè"). Hướng đi là không làm phẳng mọi thứ thành tuple vô điều kiện.

Kết luận

"Tôi không thực sự muốn cho LLM một bộ nhớ tốt hơn. Tôi muốn nó ngừng quên lý do vì sao chúng ta tin một điều gì đó."

Với một agent nghiên cứu lỗ hổng, việc duy trì trạng thái phân tích có cấu trúc — thay vì nhồi toàn bộ lịch sử vào context mỗi lần — không chỉ rẻ hơn (38x ít token hơn) mà còn chính xác hơn trong việc quản lý giả định, quan hệ và kết luận bị vô hiệu hóa. Dù chưa vượt qua PropMem trên mọi chỉ số, kết quả cho thấy ý tưởng này hoàn toàn khả thi và mở ra hướng tiếp cận mới: đôi khi ta không cần context window to hơn, chỉ cần biết cách duy trì trạng thái đúng đắn.

Nguồn: Bài viết gốc của Jordy Zomer trên pwning.systems. Mã nguồn Lemmalog được công bố công khai.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗