Hệ thống tệp của bạn đã là cơ sở dữ liệu đồ thị
Backend·Hacker News·0 lượt xem

Hệ thống tệp của bạn đã là cơ sở dữ liệu đồ thị

Your File System Is Already A Graph Database

AI Summary

SKIP

Karpathy gần đây đã đăng về việc sử dụng LLM để xây dựng cơ sở kiến thức cá nhân — thu thập các nguồn thô vào một thư mục, có một LLM “biên dịch” chúng thành một wiki đánh dấu liên kết với nhau…

Karpathy gần đây đã đăng tải về việc sử dụng LLM để xây dựng cơ sở tri thức cá nhân — thu thập các nguồn dữ liệu thô vào một thư mục, để LLM "tổng hợp" chúng thành một wiki gồm các tệp markdown liên kết với nhau, và xem toàn bộ nội dung đó trong Obsidian. Sau đó, anh ấy tiếp nối bằng một "tệp ý tưởng" (idea file), một gist mà bạn có thể cung cấp cho agent của mình để nó tự xây dựng hệ thống đó cho bạn.

Đây là một ý tưởng tuyệt vời, tôi đã thực hiện một hình thức nào đó của việc này trong hơn một thập kỷ qua. Đồng nghiệp dẫn chương trình Staff Eng của tôi là @davidnoelromas đã liên hệ sau bài đăng để hỏi thêm chi tiết về cách tôi sử dụng Obsidian và AI. Đây là phiên bản mở rộng của những gì tôi đã chia sẻ với anh ấy.

Tôi đã thu thập có lẽ là quá nhiều tệp markdown.

find . -type f | wc -l
52447

Đó là vault Obsidian của tôi, và tôi sử dụng nó với AI hàng ngày mà không cần cơ sở dữ liệu đặc biệt, vector store hay pipeline RAG nào cả. Nó chỉ đơn thuần là các tệp trên ổ cứng.

Vấn đề mà cách này thực sự giải quyết

Hãy nghĩ về những ngữ cảnh mà bạn luôn mang theo trong đầu phục vụ cho công việc. Lịch sử các quyết định của một dự án. Những gì bạn đã thảo luận với quản lý ba tháng trước. Luồng tin nhắn Slack nơi cả nhóm thống nhất một hướng đi. Tài liệu Google Doc mà ai đó chia sẻ trong một cuộc họp mà bạn chỉ nhớ mang máng. Sự hiểu biết dần được hình thành về cách một hệ thống vận hành, vốn chỉ tồn tại trong đầu mười lăm người và không ở đâu khác.

Bây giờ hãy nghĩ về điều gì xảy ra khi bạn cần tạo ra thứ gì đó từ tất cả ngữ cảnh đó. Một tài liệu thiết kế (design doc). Một bộ hồ sơ hiệu suất (perf packet). Một quy trình bàn giao dự án. Hướng dẫn nhập môn cho thành viên mới trong nhóm. Bạn dành hàng giờ để lắp ghép lại ngữ cảnh từ Slack, các tài liệu, email, trí nhớ của chính mình, và bạn vẫn bỏ sót nhiều thứ.

Cơ sở tri thức biến điều này thành một hệ thống thay vì sự hỗn loạn.

Kiến trúc

Một hệ thống tệp với markdown và wikilinks vốn dĩ đã là một đồ thị cơ sở dữ liệu (graph database). Các tệp là các nút. Các wikilink là các cạnh ngữ nghĩa. Các thư mục tạo ra phân loại. Bạn không cần một MCP server hay plugin đặc biệt nào cả. Trừu tượng hóa hệ thống tệp chính là giao diện, và các LLM điều hướng nó tốt một cách đáng ngạc nhiên.

Tôi sử dụng cấu trúc mượn từ cuốn Building a Second Brain của Tiago Forte, với phân loại PARA làm điểm khởi đầu, được mở rộng với các danh mục phù hợp với cách tôi thực sự làm việc:

/projects/{name}
/areas/{topics}
/people/{slack_handle}
/daily/{year}/{month}/{day}/
/meetings/{year}/{month}/{day}/

Các tệp Markdown là các nút, wikilinks ([[target]]) là các cạnh, phân loại thư mục là lược đồ (schema) và LLM là công cụ truy vấn. Một cơ sở dữ liệu đồ thị với giao diện truy vấn bằng ngôn ngữ tự nhiên. Không yêu cầu cơ sở hạ tầng phức tạp.

Cách nó vận hành hàng ngày

Sau mỗi cuộc họp, agent sẽ tạo một ghi chú trong daily/{year}/{month}/{day}/, tải xuống bất kỳ Google Docs nào được đính kèm, và liên kết mọi thứ với các ghi chú dài hạn mà tôi lưu giữ cho mỗi người tôi tương tác thường xuyên. Một ghi chú từ cuộc họp 1:1 với sếp của tôi là JP sẽ có một wikilink đến [[/people/jp|jp]] và đến bất kỳ dự án nào chúng tôi đã thảo luận.

Qua nhiều tháng, ghi chú của mỗi người trở thành một dòng thời gian của mọi cuộc trò chuyện, quyết định và các vấn đề mở. Mỗi thư mục dự án tích lũy mọi tài liệu liên quan. Bạn không cần phải nhớ mọi thứ ở đâu. Đồ thị sẽ ghi nhớ giúp bạn.

Đối với một dự án công việc, tôi có thể chỉ định cho agent bắt đầu từ một tài liệu và nói: "Hãy quét qua mọi công cụ mà bạn có quyền truy cập và kéo tất cả ngữ cảnh liên quan về." Nó sẽ lấy các luồng Slack, Google Docs, tài nguyên web, tất cả được render dưới dạng markdown trong thư mục dự án. Từ ngữ cảnh đã tập hợp đó, agent có thể soạn thảo các tài liệu thiết kế, tuyên bố tầm nhìn sản phẩm, phân tích vấn đề/giải pháp. Kết quả đầu ra tốt hơn so với việc prompt một cách mơ hồ vì LLM đang làm việc với lịch sử thực tế của dự án, chứ không phải bản tóm tắt của bạn.

Đây là phần mà tweet của Karpathy đã gợi ý nhưng chưa giải thích đầy đủ: cơ sở tri thức không chỉ để nghiên cứu. Đó là một hệ thống kỹ thuật ngữ cảnh (context engineering). Bạn đang xây dựng chính xác đầu vào mà LLM cần để thực hiện công việc hữu ích.

Điều gì tạo nên sự khác biệt so với việc chỉ sử dụng LLM đơn thuần

Bạn có thể nghĩ: Tôi vẫn thường nhờ Claude giúp viết tài liệu thiết kế mà. Đúng vậy. Nhưng có một sự khác biệt thực sự giữa việc prompt "hãy giúp tôi viết một tài liệu thiết kế cho dịch vụ giới hạn tốc độ" và việc prompt một LLM có quyền truy cập vào thư mục dự án của bạn với sáu tháng ghi chú cuộc họp, ba tài liệu thiết kế trước đó, luồng Slack nơi cả nhóm tranh luận về phương pháp, và ghi chú của bạn về kiến trúc hiện tại.

Cơ sở tri thức là một hệ thống kỹ thuật ngữ cảnh. Bạn không xây dựng wiki chỉ để cho có wiki. Bạn đang xây dựng lớp đầu vào giúp cho mọi tương tác LLM sau này trở nên tốt hơn. Mỗi ghi chú cuộc họp, mỗi quyết định được liên kết, mỗi tài liệu được lưu trữ đều cải thiện chất lượng của mọi truy vấn theo sau.

Điều gì vẫn còn khó khăn

Phần mà tôi chưa giải quyết được là xử lý hộp thư đến (inbox) tự động. Ý tưởng rất đơn giản: các đoạn trích web, ghi chú cuộc họp, những nội dung lưu từ Slack, và các thông tin thu thập ngẫu nhiên đều rơi vào một thư mục inbox. Agent sẽ xử lý mọi thứ mới, áp dụng tóm tắt lũy tiến, chia nhỏ nội dung thành các phần nguyên tử, đối chiếu từng phần với đúng dự án, lĩnh vực hoặc cá nhân liên quan.

Tôi có một nghĩa địa các thử nghiệm ở đây. LLM rất giỏi trong việc tóm tắt và phân loại. Phần khó là xác định thế nào là "đã xử lý" theo cách nhất quán đủ để hữu ích sau sáu tháng nhưng lại linh hoạt đủ để xử lý sự đa dạng của những thứ rơi vào inbox. Mọi nỗ lực đều hoặc là quá cứng nhắc (mọi thứ đều được đối xử như nhau) hoặc quá lỏng lẻo (vault trở nên hỗn loạn).

Nếu bạn đã giải quyết được vấn đề này, tôi rất muốn được nghe về nó.

Bắt đầu như thế nào

Bạn không cần tới 52.000 tệp để nhận được giá trị từ việc này. Hãy bắt đầu với ba điều:

Một: Tạo cấu trúc thư mục. Projects, areas, people, daily. Ngay cả khi trống rỗng, phân loại này cung cấp cho bạn và LLM một lược đồ.

Hai: Sau cuộc họp tiếp theo của bạn, hãy để agent tạo một ghi chú và liên kết nó với người và dự án liên quan. Làm điều này trong một tuần. Hãy quan sát đồ thị bắt đầu hình thành.

Ba: Lần tới khi bạn cần viết gì đó, một tài liệu thiết kế, cập nhật trạng thái, tự đánh giá hiệu suất, hãy chỉ định agent vào các thư mục liên quan và yêu cầu nó soạn thảo từ những gì có ở đó.

Sự khác biệt có thể nhận thấy ngay lập tức. Không phải vì LLM thông minh hơn, mà vì cuối cùng nó đã có đủ ngữ cảnh để trở nên hữu ích.

Công việc của bạn được tích lũy. Đó là điều cảm thấy thực sự mới mẻ.

Tác giả: alxndr

#discussion