Nâng cấp RAG thành Agentic RAG với Dynamic Toolcall | Xây dựng RAG AI

Giới thiệu

Trong những phần trước của chuỗi Xây dựng RAG AI, chúng ta đã tìm hiểu cách:

  • Tạo ứng dụng RAG cơ bản với .NET và OpenAI.

  • Trang bị bộ nhớ cho RAG bằng Vector Database (Qdrant).

  • Tối ưu kết quả trả về với kỹ thuật scoring và fingerprint.

Tuy nhiên, tất cả mới dừng lại ở RAG thủ công (manual RAG). Điều này nghĩa là lập trình viên phải kiểm soát toàn bộ quá trình: từ query, gọi tool, đến lấy context. Cách làm này tuy hiệu quả ở mức cơ bản, nhưng thiếu linh hoạt khi muốn mở rộng thêm nhiều nguồn dữ liệu hoặc tool khác nhau.

Vậy làm thế nào để nâng cấp RAG thành một hệ thống Agentic RAG thông minh hơn, có khả năng tự động quyết định khi nào và nên gọi tool nào? Câu trả lời chính là Dynamic Toolcall.


Hạn chế của RAG thủ công

  • Chỉ có một công cụ chính: vector search (memory).

  • Mọi thao tác được viết tay: từ lấy embedding, query DB, đến lọc dữ liệu.

  • Khó mở rộng: nếu muốn thêm web search, calculator, hay API khác thì phải chỉnh lại pipeline.

Điều này khiến RAG giống như một “cỗ máy cố định”, không thể thích ứng linh hoạt với nhu cầu đa dạng của người dùng.


Giải pháp: Dynamic Toolcall

Dynamic Toolcall cho phép LLM tự quyết định công cụ cần gọi dựa trên yêu cầu đầu vào.

  • LLM đóng vai trò planner: phân tích prompt của người dùng, sau đó chọn tool phù hợp.

  • Các tool được thiết kế như những “dịch vụ độc lập”, có thể bổ sung hoặc thay đổi mà không ảnh hưởng tới toàn bộ pipeline.

  • Nhờ đó, RAG không chỉ dừng ở việc tìm kiếm vector, mà còn có thể xử lý nhiều tình huống phức tạp hơn.


Xây dựng Search Doc Tool – Bước đầu của Agentic RAG

Để minh họa, chúng ta bắt đầu bằng việc tạo ra một tool cơ bản: Search Doc Tool.

Chức năng chính:

  • Nhận query từ LLM.

  • Lấy embedding và gọi Vector DB (Qdrant).

  • Dùng overfetching: lấy nhiều kết quả hơn số lượng cần (ví dụ: top k × 3) để giảm rủi ro mất dữ liệu quan trọng.

  • Lọc kết quả bằng filter + fingerprint để loại bỏ trùng lặp, dữ liệu nhiễu.

  • Chuẩn hóa kết quả trả về với các thông tin:

    • ID tài liệu gốc.

    • Score (độ liên quan).

    • Nguồn trích dẫn (citation).

    • Snippet (tóm tắt ngắn).

Ưu điểm:

  • Giữ dữ liệu sạch, chính xác, dễ sử dụng cho LLM.

  • Hỗ trợ trích dẫn nguồn (citation) → tăng độ tin cậy.

  • Có thể mở rộng sang nhiều loại dữ liệu khác nhau (SQL, MongoDB, file system…).


Mở rộng hệ thống Tool

Khi đã có Search Doc Tool, bạn có thể bổ sung thêm nhiều công cụ khác để hệ thống ngày càng mạnh mẽ:

  • Web Search Tool: tra cứu thông tin ngoài internet.

  • Calculator Tool: xử lý tính toán.

  • Planning Tool: hỗ trợ lập kế hoạch.

  • Custom API Tool: kết nối với các dịch vụ riêng của doanh nghiệp.

Điểm mạnh ở đây là LLM không cần viết lại code – chỉ cần định nghĩa thêm tool, agent sẽ tự biết khi nào nên sử dụng.


Agentic RAG – Sự tiến hóa của RAG

Với Dynamic Toolcall, RAG không còn là pipeline tĩnh nữa, mà trở thành một AI agent thực thụ:

  • Có khả năng ghi nhớ ngắn hạn và dài hạn.

  • Biết cách sử dụng nhiều công cụ để giải quyết vấn đề.

  • Linh hoạt trong việc mở rộng, nâng cấp mà không phá vỡ cấu trúc cũ.

Đây chính là bước tiến quan trọng để chuyển từ RAG thủ công sang Agentic RAG – một hệ thống thông minh, tự động, và có khả năng thích ứng với nhiều kịch bản thực tế.


Kết luận

Trong phần này, chúng ta đã tìm hiểu:

  • Sự khác biệt giữa RAG thủ công và Agentic RAG.

  • Cách xây dựng một tool đầu tiên – Search Doc Tool – để tách memory ra thành dịch vụ riêng.

  • Lợi ích của Dynamic Toolcall và tiềm năng mở rộng hệ thống với nhiều loại tool khác nhau.

👉 Đây là bước quan trọng để tiến tới việc xây dựng AI Agent hoàn chỉnh – nền tảng cho các ứng dụng AI thực sự hữu ích trong đời sống và công việc.

Hãy đón chờ những phần tiếp theo trong chuỗi Xây dựng RAG AI, nơi chúng ta sẽ còn khám phá nhiều kỹ thuật nâng cao khác để hoàn thiện hành trình này.


Tác giả: Bạch Ngọc Toàn

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Lên trên