- Triển khai một tác nhân nghiên cứu theo kiểu Deep Research bằng cách tận dụng các mô hình và công cụ mã nguồn mở (Milvus, LangChain, v.v.)
- Các ví dụ triển khai cấu trúc tác nhân có khả năng tự động nghiên cứu chuyên sâu về một chủ đề hoặc câu hỏi thông qua tìm kiếm web và tài liệu, đồng thời lựa chọn hành động (tìm kiếm, sắp xếp, v.v.) ở từng bước trung gian đang ngày càng nhiều hơn
- Bài viết giới thiệu dự án mã nguồn mở DeepSearcher, mở rộng các ý tưởng này. Nội dung đề cập đến định tuyến truy vấn, luồng thực thi có điều kiện, sử dụng công cụ thu thập web và nhiều nội dung khác
- DeepSearcher được cung cấp dưới dạng thư viện Python và CLI, cho phép đưa vào nhiều tài liệu nguồn và dễ dàng điều chỉnh mô hình embedding cùng cấu hình vector DB bằng tệp cấu hình
- Dù đơn giản, đây là một ví dụ trình diễn RAG dựa trên tác nhân, có thể đóng vai trò bàn đạp để đi đến phát triển ứng dụng AI thực tế
- Đặc biệt, bài viết nhấn mạnh vấn đề tốc độ và hiệu quả của mô hình suy luận: quá trình truy vấn và tìm kiếm cần sinh ra rất nhiều token, khiến tài nguyên suy luận trở thành nút thắt cổ chai
- Khi dùng DeepSeek-R1 reasoning model chạy trên phần cứng tùy biến của SambaNova, tốc độ sinh token mỗi giây nhanh hơn các dịch vụ cạnh tranh
- Thông qua các dịch vụ suy luận đám mây như vậy, việc suy luận hiệu quả cho nhiều mô hình khác nhau như Llama 3.x, Qwen2.5, QwQ cũng trở nên khả thi
Xác định và phân rã câu hỏi
- Truy vấn ban đầu của người dùng được phân rã thành các truy vấn con chi tiết
- Tương tự bài viết trước, một truy vấn như "How has The Simpsons changed over time?" sẽ được chia thành nhiều truy vấn con như dưới đây
- Ví dụ: ảnh hưởng văn hóa và xã hội của tác phẩm, thay đổi về nhân vật, hài hước và cách kể chuyện theo từng mùa, thay đổi trong hoạt hình và kỹ thuật sản xuất, thay đổi trong phản ứng của khán giả, v.v.
- Ở các bước sau, nếu cần, hệ thống cũng có thể định nghĩa lại câu hỏi hoặc mở rộng thêm
Nghiên cứu và phân tích
- Dựa trên các truy vấn con, hệ thống đi qua các bước định tuyến truy vấn, tìm kiếm vector, reflection, và lặp có điều kiện
- Định tuyến truy vấn
- Prompt được thiết kế để LLM quyết định nên sử dụng collection nào trong nhiều collection cơ sở dữ liệu
- Hệ thống nhận phản hồi ở dạng JSON và tạo truy vấn tìm kiếm cho từng collection
- Tìm kiếm vector
- Thực hiện tìm kiếm tương đồng bằng cách sử dụng embedding được lưu trong Milvus
- Tương tự bài viết trước, dữ liệu nguồn được chia nhỏ và vector hóa từ trước
- Reflection
- Dựa trên truy vấn và câu trả lời từ bước trước, LLM kiểm tra xem có cần thêm thông tin hay không
- Nếu còn thiếu, hệ thống tạo truy vấn con mới và thử tìm kiếm lại
- Lặp có điều kiện
- Nếu kết quả reflection cho thấy cần truy vấn bổ sung, hệ thống lặp lại quy trình trên
- Nếu xác định không cần thu thập thêm thông tin nữa, hệ thống chuyển sang bước tạo báo cáo cuối cùng
Tạo báo cáo cuối cùng
- Tổng hợp tất cả truy vấn con và kết quả tìm kiếm để tạo báo cáo bằng một prompt duy nhất
- Nhờ đó, báo cáo thu được có tính nhất quán và độ gắn kết cao hơn so với bản trình diễn trước
- Ví dụ, báo cáo cuối cùng cho câu hỏi “How has The Simpsons changed over time?” sẽ cung cấp nội dung chi tiết với cấu trúc như sau
-
- Ảnh hưởng văn hóa và mức độ liên quan xã hội
-
- Sự tiến hóa của nhân vật, yếu tố hài hước và tuyến truyện
-
- Những thay đổi về hoạt hình và công nghệ
-
- Thay đổi về nhóm khán giả, phản ứng và tỷ suất người xem
- Kết luận: quá trình tác phẩm chuyển mình từ một tác phẩm châm biếm nổi loạn thời kỳ đầu thành một biểu tượng đại chúng, v.v.
- Có thể so sánh báo cáo được tạo bằng mô hình DeepSeek-R1 với phiên bản tạo bằng mô hình GPT-4o mini
Hướng phát triển tiếp theo
- DeepSearcher hiện vẫn còn ở mức đơn giản, nhưng có thể tiếp tục phát triển thêm thông qua cấu trúc tác nhân bổ sung, tổ chức báo cáo, mở rộng lặp có điều kiện và các cải tiến khác
- Các mô hình suy luận quy mô lớn đòi hỏi khối lượng tính toán rất nặng, vì vậy tốc độ suy luận và chi phí trở thành vấn đề cốt lõi của dịch vụ
- Với mô hình DeepSeek-R1 của SambaNova, bài viết cho biết đã sử dụng 65 lần gọi suy luận, khoảng 25k token đầu vào và 22k token đầu ra, và vẫn nhận được phản hồi đủ nhanh với chi phí khoảng 0,30 USD
- Có thể tự trải nghiệm dự án tại kho mã DeepSearcher, và nhóm dự định sẽ tiếp tục chia sẻ thêm tính năng cũng như các ví dụ trong tương lai
1 bình luận
Ý kiến trên Hacker News
Hệ thống này không sử dụng LLM cục bộ, nên không phải là một hệ thống cục bộ thực sự
Tò mò muốn so sánh với phiên bản mã nguồn mở của HuggingFace
Điều kỳ diệu trong cách Grok triển khai là họ đã lưu cache phần lớn website nên cảm giác rất nhanh
Thích các cách tiếp cận đa dạng đối với Deep Research
Có hai bài đăng blog liên quan
Vì các công ty AI lớn đều đã tạo ra cùng một kiểu sản phẩm Deep Research, nên có lẽ sẽ hợp lý hơn nếu tập trung vào một nền tảng mã nguồn mở dùng chung
Tò mò ý nghĩa thực tế của việc tích hợp web crawling là gì
Đã tìm một công cụ Deep Research có thể kết nối với ghi chú cá nhân (Obsidian) và web
Đã thực sự dùng thử và gặp một vài vấn đề nên phải thay thế text embedding của openAI bằng MilvusEmbedding
Viên đạn bạc thực sự là tìm kiếm trên lib-gen và sci-hub