Chuyển đến nội dung
tinAI
Quay lại

Biến bộ nhớ LLM thành hệ phân tích chương trình bằng Datalog

pwning.systems · Loại nguồn: web 2026-08-29T20:08:54.734Z
Bản dịch tiếng Việt của tinAI · Từ I accidentally turned LLM memory into program analysis (pwning.systems) · Ngày gốc: · Dịch ngày:

và giữ bối cảnh từ bản tin tinAI đã giới thiệu bài này .

Bài gốc: I accidentally turned LLM memory into program analysis (pwning.systems)

Tác giả: Jordy Zomer

Ngày đăng: Dịch ngày:

TL;DR

Lemmalog dùng Datalog để duy trì fact, dependency, provenance và retraction thay vì bắt LLM đọc lại toàn bộ lịch sử. Benchmark chưa dẫn đầu tuyệt đối, nhưng kết quả cho thấy maintained state có thể giảm context mạnh và xử lý tốt hơn những fact bị cập nhật hoặc premise sai.

Ước tính đọc: 7 phút

Vấn đề không chỉ là “bộ nhớ”

LLM agent có thể đọc codebase lớn, giải thích subsystem lạ và hỗ trợ tìm attack surface. Nhưng khi một cuộc điều tra kéo dài nhiều giờ, model dễ quên điều gì đã được xác nhận, nhắc lại hướng đã bị loại hoặc tiếp tục suy luận từ một giả định không còn đúng.

Các hệ memory phổ biến thường lưu conversation và observation, tạo embedding rồi tìm lại đoạn liên quan cho câu hỏi mới. Cách này giải quyết câu hỏi “thông tin nào trong quá khứ có liên quan?”, nhưng chưa tự trả lời câu hỏi quan trọng hơn: “với mọi điều đã học được, hiện tại điều gì vẫn đúng?”

Ví dụ, một agent từng ghi nhận object_a trỏ tới object_b và từ đó kết luận attacker điều khiển được một kernel object. Nếu debugger sau đó chứng minh quan sát đầu tiên sai, retrieval có thể trả về cả mệnh đề cũ, kết luận phụ thuộc và thông tin sửa sai. Model lại phải tự phân biệt chúng trong prompt.

Nhìn memory như program analysis

Program analysis vốn làm việc với fact, rule và kết luận được suy ra. Khi input thay đổi, engine có thể cập nhật phần kết quả bị ảnh hưởng thay vì tính lại toàn bộ trạng thái.

Từ phép so sánh đó, tác giả xây Lemmalog, một Datalog engine dành cho LLM. Kiến trúc chia công việc thành hai phần:

Ví dụ, từ ba fact controls(attacker, object_a), points_to(object_a, object_b)kernel_object(object_b), engine có thể suy ra attacker kiểm soát một kernel object. Nếu quan hệ points_to bị rút lại, kết luận phụ thuộc cũng bị invalidation tự động.

Ý tưởng cốt lõi là không bắt LLM dựng lại toàn bộ trạng thái từ transcript ở mỗi lượt. Model đóng vai trò front-end xác suất; fact database và rule engine trở thành intermediate representation cùng lớp phân tích xác định.

Retraction, provenance và thời gian

Xóa fact khó hơn thêm fact. Một kết luận có thể có nhiều đường suy diễn: nếu c được hỗ trợ bởi cả ab, xóa a không được phép xóa c. Lemmalog vì vậy theo dõi cách mỗi derived fact được tạo ra và chỉ rút kết luận khi mọi nguồn hỗ trợ phù hợp đã mất.

Cơ chế này tạo thêm provenance. Khi agent nói một exploit candidate khả thi, người dùng có thể hỏi kết luận đó đến từ observation và rule nào. Nếu không có chuỗi bằng chứng, mệnh đề không thuộc trạng thái được duy trì.

Fact cũng có validity interval. Một primitive có thể được xem là khả thi từ 10:14 đến 12:37 rồi bị thay bằng trạng thái không khả thi. Nhờ giữ khoảng thời gian, hệ thống vừa trả lời được trạng thái hiện tại, vừa giải thích vì sao trước đây agent đã theo đuổi một chiến lược khác mà không đặt hai fact mâu thuẫn vào cùng prompt.

Vector database vẫn hữu ích cho semantic retrieval. Lemmalog không thay thế nó; kiến trúc kết hợp episodic memory cho context mơ hồ với deductive state cho truth, dependency, retraction và provenance.

Kết quả LongMemEval

Tác giả chạy Lemmalog ba lần trên một split LongMemEval gồm 102 câu hỏi. Hệ thống đạt:

Trong bảng kết quả được công bố, PropMem đạt 0,550 F1 và SimpleMem đạt 0,480, nên Lemmalog chưa dẫn đầu. Tuy nhiên, nó cao hơn gấp đôi Full Context ở mức 0,222 trong bảng so sánh; một lượt full-context GPT-4.1 do tác giả tự chạy đạt 0,197.

Điểm đáng chú ý nhất là nhóm Knowledge Update — dạng bài mà một fact ban đầu đúng rồi bị thông tin mới thay thế. Lemmalog đạt 0,579, cao hơn PropMem 0,528 và Full Context 0,202 trong run đại diện.

Context đưa vào reader model cũng nhỏ hơn nhiều: khoảng 2.700 token cho mỗi câu hỏi, so với 104.000 token của full context, tức khoảng 38 lần ít hơn. Chi phí extraction vẫn tồn tại, nhưng chỉ trả một lần cho conversation; full-context prompting phải đọc lại toàn bộ history ở mỗi query.

Kết quả LoCoMo

LoCoMo lớn hơn, với 1.986 câu hỏi trên 10 conversation dài. Qua ba lần chạy, Lemmalog đạt 0,533 ± 0,001 F1. Kết quả tổng vẫn dưới PropMem 0,605, OpenClaw 0,557 và Full Context 0,542.

Dù vậy, cấu trúc fact giúp hệ thống mạnh hơn full context ở một số nhóm được thiết kế phù hợp:

Ở LoCoMo, reader nhận khoảng 3.400 token mỗi câu hỏi thay vì 18.900 token của full context, giảm khoảng sáu lần.

Những bug cho thấy front-end quan trọng hơn engine

Phần lớn cải thiện không đến từ Datalog evaluator “thông minh” hơn, mà từ sửa cách dữ liệu đi vào và ra khỏi analysis state.

Entity resolution từng biến “Honda Civic”, “my car” và “the Civic” thành ba object khác nhau. Date từng được so sánh bằng internal ID của Datalog symbol thay vì timestamp thực. Một relevance filter không nhận ra ownsown cùng gốc, khiến toàn bộ count line biến mất. Reader cũng từng được hướng dẫn chống hallucination quá mạnh đến mức từ chối câu hỏi cần đếm hoặc tổng hợp dù bằng chứng đã có.

Các lỗi này nhấn mạnh rằng structured memory chỉ tốt khi bước extraction, normalization, entity reconciliation và retrieval tạo ra một IR đủ chính xác. Nếu extractor bỏ sót booking, rule engine hoàn hảo cũng không thể trả lời câu hỏi về booking đó.

Giới hạn và hướng thử nghiệm tiếp theo

Lemmalog chưa chứng minh Datalog đã giải quyết LLM memory. LongMemEval chỉ có 102 câu hỏi; LoCoMo là benchmark conversation chứ không phải vulnerability research. Hệ thống vẫn yếu ở inference mơ hồ: trên LoCoMo, điểm inferential là 0,164, thấp hơn PropMem 0,289. Việc ép một preference có điều kiện thành tuple vô điều kiện có thể làm mất ý nghĩa trước khi Datalog xử lý.

Kiến trúc hợp lý vì vậy không phải “vector hoặc symbolic”, mà là hai lớp bổ sung nhau:

Thử nghiệm tiếp theo của tác giả là cho agent chạy một cuộc điều tra lỗ hổng dài, rồi đo xem maintained state có ngăn nó hồi sinh giả thuyết đã chết và bịa quan hệ giữa các observation hay không.

Dev nên quan tâm vì sao

Nếu agent phải làm việc dài hơi, tăng context window không phải lựa chọn duy nhất. Có thể tách natural-language understanding khỏi state management, lưu dependency có provenance và dùng deterministic invalidation khi sự thật thay đổi.

Điều đáng học từ Lemmalog chưa phải một benchmark thắng tuyệt đối. Đó là cách biến lỗi “model quên” thành các bài toán engineering cụ thể: schema, entity identity, temporal normalization, aggregation, retrieval và nguồn gốc bằng chứng. Những bài toán này có test được, debug được và không đòi hỏi model lớn hơn để sửa.


Đường dẫn nguồn

tinAI dịch bài này sang tiếng Việt từ I accidentally turned LLM memory into program analysis (pwning.systems) · Loại nguồn: web và giữ bối cảnh từ bản tin tinAI đã giới thiệu bài này .

Bản tin này có 3 bài dịch liên quan từ cùng bản tin.

Đọc tiếp từ đây

Bạn có thể quay lại bản tin nguồn hoặc mở kho bài dịch để đọc tiếp.

Các bài bên dưới cùng xuất hiện trong bản tin nguồn, nên giữ chung bối cảnh đọc với bài này.

Các bài liên quan trong cùng bản tin trải trên 2 loại nguồn (2 bài). Loại nguồn: công ty/blog 1 Loại nguồn: web 1