Trong những năm gần đây, Mô Hình Ngôn Ngữ Lớn (LLMs) đã thể hiện những khả năng ấn tượng trong các tác vụ xử lý ngôn ngữ tự nhiên. Tuy nhiên, những hạn chế của các mô hình này, chẳng hạn như kiến thức lỗi thời và việc tạo ra ảo giác, đã thúc đẩy các nhà nghiên cứu phát triển nhiều kỹ thuật tăng cường khác nhau. Trong số đó, Giao thức Bối cảnh Mô hình (MCP) và Tạo Sinh Tăng Cường Truy Xuất (RAG) là hai khái niệm quan trọng. MCP thực sự là một tiêu chuẩn kỹ thuật rất quan trọng có thể giúp chúng ta giải quyết nhiều vấn đề khó khăn trước đây. Vì vậy, trong hướng dẫn hôm nay, tôi sẽ bắt đầu với một trường hợp thực tế để thảo luận về MCP với bạn.
Trước khi bắt đầu học, hãy cùng tìm hiểu những hạn chế hiện tại của công nghệ RAG.
Bối Cảnh: Hạn Chế của RAG
RAG, hay Tạo Sinh Tăng Cường Truy Xuất, hiện là một hướng đi phổ biến trong lĩnh vực mô hình lớn. Nó kết hợp công nghệ truy xuất thông tin với các mô hình tạo sinh để giải quyết những thách thức mà các mô hình lớn phải đối mặt về độ chính xác của kiến thức, hiểu ngữ cảnh và sử dụng thông tin mới nhất.
Tuy nhiên, nhiều người có thể có một số hiểu lầm về RAG, tin rằng chỉ cần chúng ta nhập thêm một số kiến thức thông qua RAG, mô hình có thể hoàn toàn nắm vững và trả lời các câu hỏi liên quan đến kiến thức này. Nhưng thực tế và trí tưởng tượng khá khác nhau. Bạn có thể thấy sau những nỗ lực thực tế rằng độ chính xác của RAG dường như không tốt lắm.
Từ góc độ nguyên tắc kỹ thuật của chính RAG, những vấn đề sau hiện đang tồn tại:
- Độ Chính Xác Truy Xuất Không Đủ: Trước hết, cốt lõi của RAG là trước tiên chuyển đổi kiến thức thành "vector", nhập chúng vào "cơ sở dữ liệu vector", sau đó chuyển đổi thông tin đầu vào của người dùng thành "vector", sau đó đối sánh các "vector" tương tự trong cơ sở dữ liệu vector và cuối cùng để mô hình lớn tóm tắt nội dung đã truy xuất.
- Nội Dung Được Tạo Không Đầy Đủ: Vì RAG xử lý các lát tài liệu và tính cục bộ của các lát này có nghĩa là nó không thể nhìn thấy thông tin của toàn bộ tài liệu, nên câu trả lời thường không đầy đủ khi trả lời các câu hỏi như "liệt kê XXX" hoặc "tóm tắt XXX".
- Thiếu Cái Nhìn Toàn Diện: RAG không thể xác định cần bao nhiêu lát để trả lời một câu hỏi, cũng như không thể xác định các kết nối giữa các tài liệu. Ví dụ: trong các quy định pháp luật, các diễn giải mới có thể ghi đè các diễn giải cũ, nhưng RAG không thể xác định cái nào là mới nhất.
- Khả Năng Truy Xuất Nhiều Vòng Yếu: RAG thiếu khả năng thực hiện truy xuất nhiều vòng, nhiều truy vấn, điều cần thiết cho các tác vụ suy luận.
Mặc dù một số công nghệ mới nổi, chẳng hạn như GraphRAG và KAG, có thể giải quyết những vấn đề này ở một mức độ nào đó, nhưng chúng vẫn chưa trưởng thành và công nghệ RAG hiện tại còn lâu mới đạt được kết quả mong đợi.
Lý Thuyết: Hiểu Các Khái Niệm Cơ Bản của MCP
Trước khi chúng ta bắt đầu tìm hiểu về MCP, có một chủ đề không thể tránh khỏi: Gọi Hàm. Hãy cùng tìm hiểu trước.
Gọi Hàm
Trước đây, các mô hình lớn AI giống như những cá nhân am hiểu bị mắc kẹt trong một căn phòng, chỉ có thể trả lời các câu hỏi dựa trên kiến thức hiện có của họ, không thể truy cập trực tiếp dữ liệu thời gian thực hoặc tương tác với các hệ thống bên ngoài. Ví dụ: họ không thể truy cập trực tiếp thông tin mới nhất trong cơ sở dữ liệu, cũng như không thể sử dụng các công cụ bên ngoài để hoàn thành các tác vụ cụ thể.
Gọi Hàm là một khái niệm rất quan trọng được OPEN AI giới thiệu vào năm 2023:
Gọi Hàm về cơ bản cung cấp cho các mô hình lớn khả năng tương tác với các hệ thống bên ngoài, tương tự như cài đặt "hộp công cụ plugin" cho các mô hình. Khi một mô hình lớn gặp phải một câu hỏi mà nó không thể trả lời trực tiếp, nó sẽ chủ động gọi các hàm được xác định trước (chẳng hạn như truy vấn thời tiết, tính toán dữ liệu, truy cập cơ sở dữ liệu, v.v.) để lấy thông tin thời gian thực hoặc chính xác trước khi tạo ra một phản hồi.
Khả năng này thực sự khá tốt, mang lại cho các mô hình lớn nhiều khả năng hơn. Tuy nhiên, nó có một nhược điểm đáng kể: chi phí triển khai quá cao.
Trước khi MCP xuất hiện, chi phí để các nhà phát triển triển khai Gọi Hàm là tương đối cao. Đầu tiên, bản thân mô hình cần hỗ trợ ổn định việc gọi Gọi Hàm. Nếu chúng ta chọn một số mô hình cho biết chúng không hỗ trợ gọi plugin, điều này thực sự có nghĩa là chúng không hỗ trợ Gọi Hàm.
Điều này cũng có nghĩa là bản thân mô hình cần phải trải qua quá trình tinh chỉnh chuyên biệt cho việc gọi Gọi Hàm để hỗ trợ ổn định khả năng này.
Một vấn đề lớn khác là khi OPEN AI lần đầu tiên đề xuất công nghệ này, họ không có ý định biến nó thành một tiêu chuẩn. Do đó, mặc dù nhiều mô hình tiếp theo cũng hỗ trợ gọi Gọi Hàm, nhưng các phương pháp triển khai tương ứng của chúng khá khác nhau.
Điều này có nghĩa là nếu chúng ta muốn phát triển một công cụ Gọi Hàm, chúng ta cần phải điều chỉnh nó cho các mô hình khác nhau, bao gồm các định dạng tham số, logic kích hoạt, cấu trúc trả về, v.v., điều này có chi phí rất cao.
Điều này làm tăng đáng kể ngưỡng phát triển của AI Agents. Do đó, trong quá khứ, chúng ta chủ yếu chỉ có thể xây dựng Agents thông qua các nền tảng như Dify và Wordware.
MCP
MCP (Giao thức Bối cảnh Mô hình) là một giao thức tiêu chuẩn mở do Anthropic (công ty đã phát triển mô hình Claude) giới thiệu, với mục tiêu giải quyết vấn đề khó khăn về tương tác giữa các mô hình AI và các nguồn dữ liệu và công cụ bên ngoài.
Với Gọi Hàm, mỗi khi một mô hình cần kết nối với một nguồn dữ liệu mới hoặc sử dụng một công cụ mới, các nhà phát triển phải viết một lượng lớn mã dành riêng cho tích hợp, điều này vừa rắc rối vừa dễ xảy ra lỗi. Sự ra đời của MCP là để giải quyết những vấn đề này. Nó giống như một "phích cắm đa năng" hoặc "giao diện USB" thiết lập các thông số kỹ thuật thống nhất. Cho dù kết nối với cơ sở dữ liệu, API của bên thứ ba hay các tệp cục bộ và các tài nguyên bên ngoài khác, tất cả đều có thể được thực hiện thông qua "giao diện đa năng" này, giúp tương tác giữa các mô hình AI và các công cụ hoặc nguồn dữ liệu bên ngoài trở nên tiêu chuẩn hóa và có thể tái sử dụng hơn.
Khi nó được giới thiệu lần đầu tiên, chỉ có ứng dụng Claude hỗ trợ nó và mọi người không chú ý nhiều đến nó. Tuy nhiên, do sự hỗ trợ của Cursor (mọi người đều hiểu mối quan hệ giữa Cursor và Claude), các plugin và công cụ khác nhau cũng bắt đầu cung cấp hỗ trợ lần lượt. Ngoài ra, sự cường điệu gần đây xung quanh AI Agents bởi công cụ "khái niệm" Manus đã dần đưa MCP ra công chúng. Cho đến gần đây, OPEN AI cũng đã công bố hỗ trợ MCP.
Điều này khiến tôi thực sự nhận ra rằng MCP đã thực sự thành công; nó đã trở thành "tiêu chuẩn ngành" cho việc gọi công cụ AI.
MCP Hosts, chẳng hạn như Claude Desktop và Cursor, triển khai MCP Client bên trong. Sau đó, MCP Client tương tác với MCP Server thông qua giao thức MCP tiêu chuẩn. MCP Server, được cung cấp bởi các nhà phát triển bên thứ ba khác nhau, chịu trách nhiệm triển khai logic để tương tác với các tài nguyên bên thứ ba khác nhau, chẳng hạn như truy cập cơ sở dữ liệu, trình duyệt và các tệp cục bộ. Cuối cùng, nó trả lại kết quả cho MCP Client thông qua giao thức MCP tiêu chuẩn, sau đó được hiển thị trên MCP Host.
Các nhà phát triển phát triển theo giao thức MCP mà không phải viết lại mã điều chỉnh để kết nối từng mô hình với các tài nguyên khác nhau, điều này có thể tiết kiệm đáng kể khối lượng công việc phát triển. Ngoài ra, các MCP Server đã được phát triển, vì giao thức là phổ quát, có thể được mở trực tiếp để mọi người sử dụng, điều này làm giảm đáng kể công việc lặp đi lặp lại của các nhà phát triển.
Ví dụ: nếu bạn muốn phát triển một plugin có cùng logic, bạn không cần viết nó một lần trong Cursor và sau đó lại trong Dify. Nếu cả hai đều hỗ trợ MCP, bạn có thể sử dụng trực tiếp cùng một logic plugin.
Thực Hành: Học Cách Sử Dụng Cơ Bản của MCP
Để sử dụng công nghệ MCP, bước đầu tiên là tìm một ứng dụng khách hỗ trợ giao thức MCP, sau đó tìm một máy chủ MCP đáp ứng nhu cầu của bạn và sau đó gọi các dịch vụ này trong ứng dụng khách MCP.
Từ bảng, chúng ta có thể thấy rằng MCP chia các khả năng được ứng dụng khách hỗ trợ thành năm loại. Chúng ta sẽ hiểu ngắn gọn chúng ở đây:
- Công Cụ: Các máy chủ hiển thị các hàm có thể thực thi để LLMs gọi để tương tác với các hệ thống bên ngoài.
- Tài Nguyên: Các máy chủ hiển thị dữ liệu và nội dung để ứng dụng khách đọc và sử dụng làm ngữ cảnh LLM.
- Lời Nhắc: Các máy chủ xác định các mẫu lời nhắc có thể tái sử dụng để hướng dẫn các tương tác LLM.
- Lấy Mẫu: Cho phép các máy chủ bắt đầu các yêu cầu hoàn thành đối với LLMs thông qua các ứng dụng khách, cho phép các hành vi thông minh phức tạp.
- Gốc: Một số địa chỉ được ứng dụng khách chỉ định cho máy chủ để cho máy chủ biết tài nguyên nào cần chú ý và nơi tìm chúng.
Hiện tại, phổ biến nhất và được hỗ trợ rộng rãi nhất là khả năng Công Cụ (gọi công cụ).
Đối với các công cụ được hỗ trợ MCP được đề cập ở trên, chúng có thể được chia thành các loại sau:
- Công Cụ Chat AI: Chẳng hạn như 5ire, LibreChat, Cherry Studio
- Công Cụ Lập Trình AI: Chẳng hạn như Cursor, Windsurf, Cline
- Khung Phát Triển AI: Chẳng hạn như Genkit, GenAIScript, BeeAI
MCP Server
Mô tả chính thức của MCP Server là: Một chương trình nhẹ, mỗi chương trình hiển thị chức năng cụ thể thông qua Giao thức Bối cảnh Mô hình được tiêu chuẩn hóa.
Nói một cách đơn giản, nó tương tác với các ứng dụng khách thông qua một giao thức tiêu chuẩn, cho phép các mô hình gọi các nguồn dữ liệu hoặc chức năng công cụ cụ thể. Các MCP Server phổ biến bao gồm:
- Truy Cập Tệp và Dữ Liệu: Cho phép các mô hình lớn vận hành và truy cập các tệp hoặc cơ sở dữ liệu cục bộ, chẳng hạn như File System MCP Server.
- Tự Động Hóa Web: Cho phép các mô hình lớn vận hành trình duyệt, chẳng hạn như Pupteer MCP Server.
- Tích Hợp Công Cụ Của Bên Thứ Ba: Cho phép các mô hình lớn gọi các API được hiển thị bởi các nền tảng của bên thứ ba, chẳng hạn như Gaode Map MCP Server.
Dưới đây là một số cách để tìm MCP Server bạn cần:
Đầu tiên là bộ sưu tập MCP Server chính thức trên Github (https://github.com/modelcontextprotocol/servers), bao gồm MCP Server làm ví dụ tham khảo chính thức, MCP Server được nhóm chính thức tích hợp và một số MCP Server của bên thứ ba do cộng đồng phát triển:
Một cái khác là MCP.so (https://mcp.so/): một nền tảng tổng hợp MCP Server của bên thứ ba hiện bao gồm hơn 5000 MCP Server:
Nó cung cấp một phương pháp hiển thị rất thân thiện với người dùng, với các ví dụ cấu hình cụ thể cho mỗi MCP Server:
MCP Market (https://mcpmarket.com/), với tốc độ truy cập tốt, cho phép lọc theo loại công cụ:
Thực Hành: Sử Dụng MCP để Gọi Cơ Sở Dữ Liệu
ServBay+Mongodb
Đầu tiên, để thuận tiện cho việc trình diễn, hãy xây dựng một ví dụ cơ sở dữ liệu đơn giản.
Ở đây, chúng ta chọn MongoDB: một cơ sở dữ liệu tài liệu mã nguồn mở phổ biến. MongoDB sử dụng mô hình dữ liệu tài liệu và dữ liệu được lưu trữ ở định dạng JSON.
Tại sao chọn MongoDB thay vì các cơ sở dữ liệu quan hệ như SQLite? Lý do chính là trong các cơ sở dữ liệu quan hệ, cấu trúc bảng được cố định. Việc thêm các trường mới hoặc sửa đổi cấu trúc bảng thường yêu cầu các thao tác di chuyển phức tạp. Mô hình dữ liệu tài liệu của MongoDB cho phép lưu trữ các tài liệu có cấu trúc khác nhau trong cùng một bộ sưu tập. Các ứng dụng có thể linh hoạt thêm hoặc sửa đổi các trường khi cần mà không cần xác định trước các cấu trúc bảng nghiêm ngặt. Điều này rất thân thiện cho các tình huống mà chúng ta muốn xây dựng một cơ sở kiến thức có cấu trúc được bổ sung liên tục.
Ở đây, chúng ta sử dụng ServBay để triển khai MongoDB. ServBay là một nền tảng quản lý môi trường phát triển cung cấp hỗ trợ bộ cơ sở dữ liệu phong phú, bao gồm cơ sở dữ liệu SQL và NoSQL, bao gồm MySQL, MariaDB, PostgreSQL, MongoDB, Redis và Memcached.
Đối với người mới bắt đầu, việc cài đặt MongoDB với ServBay rất thuận tiện. Chỉ cần nhấp để tải xuống mà không cần phải xem xét những thứ khác. Bạn thậm chí có thể sử dụng ServBay để triển khai LLMs cục bộ.
Bạn có thể tải xuống và cài đặt trực tiếp ServBay từ trang web chính thức: https://www.servbay.com
Sau khi tải xuống, hãy đi đến "Services" ở bên trái, tìm tùy chọn MongoDB trong phần cơ sở dữ liệu và nhấp để tải xuống phiên bản mong muốn.
Sau khi cài đặt, nó sẽ lắng nghe trên cổng 27017 cục bộ của chúng ta theo mặc định.
Sau đó, để trực quan hóa dữ liệu, chúng ta cũng cần cài đặt MongoDB Compass (một công cụ trực quan hóa GUI cục bộ do MongoDB cung cấp).
Địa chỉ tải xuống: https://www.mongodb.com/try/download/compass
Sau khi cài đặt, chúng ta kết nối với MongoDB Server cục bộ thông qua ứng dụng MongoDB Compass.
Sau đó, bạn có thể nhập dữ liệu của mình vào cơ sở dữ liệu MongoDB thông qua ứng dụng khách.
Trong ví dụ sau, chúng ta sẽ sử dụng dữ liệu thông tin để trình diễn. Giả sử dữ liệu của chúng ta như thế này:
Nếu bạn không biết cách nhập vào MongoDB, bạn có thể sử dụng AI để giúp bạn viết tập lệnh nhập và sau đó làm theo lời nhắc AI để nhập.
Lời Nhắc: Giúp tôi viết một tập lệnh có thể nhập dữ liệu trong bảng hiện tại vào cơ sở dữ liệu MongoDB cục bộ của tôi. Tên cơ sở dữ liệu là datamanagement.
Sau đó, chạy tập lệnh theo lời nhắc AI để nhập. Hiệu ứng sau khi nhập thành công.
VSCode+Cline
Chúng ta chọn Cline để cấu hình. Cline là một plugin trợ lý lập trình AI dựa trên VS Code. Nó hoàn toàn mã nguồn mở và được cung cấp trực tiếp dưới dạng plugin VS Code, hỗ trợ cấu hình các API AI của bên thứ ba khác nhau, làm cho nó rất linh hoạt. Do đó, nếu bạn là người mới bắt đầu lập trình AI, bạn cũng nên sử dụng VS Code + Cline để bắt đầu.
Việc cài đặt Cline cũng tương đối đơn giản. Tìm kiếm trực tiếp Cline trong thị trường tiện ích mở rộng VS Code và nhấp vào cài đặt sau khi tìm thấy nó (lưu ý rằng có nhiều phiên bản không chính thức, chỉ cần cài đặt phiên bản có nhiều lượt tải xuống nhất):
Sau khi cài đặt, hãy tìm biểu tượng Cline trong thanh bên trái, nhấp để mở cài đặt và sau đó cấu hình mô hình. Nó hỗ trợ các nhà cung cấp mô hình khác nhau; bạn có thể chọn khi cần.
Sau khi cấu hình mô hình hoàn tất, chúng ta có thể kiểm tra nó trong cửa sổ trò chuyện. Nếu nó xuất ra bình thường, điều đó có nghĩa là cấu hình đã thành công.
Cấu Hình mcp-mongo-server
Tiếp theo, chúng ta cần tìm một MCP Server hỗ trợ MongoDB. Có rất nhiều trực tuyến; ở đây, tôi chọn mcp-mongo-server.
Mở VS Code, nhấp vào tab đã cài đặt và sau đó nhấp vào Configure MCP Servers ở dưới cùng. Bạn sẽ thấy rằng một tệp JSON mở ra, đó là nơi Cline lưu trữ cấu hình MCP. Ban đầu nó chỉ chứa một đối tượng trống.
Chúng ta sao chép lệnh mã được cung cấp trên Github và thay đổi MCP_MONGODB_URI thành địa chỉ MongoDB của riêng chúng ta.
Dán cấu hình này vào tệp cấu hình MCP của Cline. Sau đó, chúng ta thấy đèn xanh mongodb ở bên trái bật sáng, cho biết cấu hình thành công.
Lưu ý rằng chúng ta cần sử dụng lệnh npx ở đây, yêu cầu bạn phải có môi trường Node.js trên máy tính của bạn. Bạn có thể tải xuống và cài đặt nó chỉ bằng một cú nhấp chuột từ ServBay.
Sau đó, hãy kiểm tra hiệu ứng.
Chúng ta đặt một câu hỏi về việc đếm số lượng nữ: Có bao nhiêu nữ giới?
Sau đó, chúng ta thấy rằng cửa sổ trò chuyện tự động nhận ra rằng câu hỏi này yêu cầu gọi MCP và hỏi liệu chúng ta có cho phép gọi mongodb MCP hay không. Chúng ta nhấp vào cho phép.
Sau đó, MCP đã truy vấn chính xác kết quả từ cơ sở dữ liệu và cung cấp câu trả lời.
Sau đó, chúng ta đặt một câu hỏi phức tạp hơn một chút: Có bao nhiêu nam giới có nghề nghiệp là tài xế xe buýt?
Mô hình vẫn đưa ra câu trả lời chính xác.
Hạn Chế Hiện Tại
Vì công nghệ MCP chỉ mới nổi, nhiều khía cạnh vẫn chưa trưởng thành và giải pháp này hiện có những hạn chế nhất định:
- Tránh để AI truy xuất lượng dữ liệu quá lớn. Không giống như RAG, chỉ truy xuất một phần nhỏ nội dung cần thiết mỗi lần, phương pháp này thực sự thực thi SQL. Lượng dữ liệu bạn truy vấn là lượng dữ liệu được truy xuất. Nếu truy vấn trả về một lượng lớn dữ liệu cùng một lúc, nó sẽ tiêu thụ một số lượng lớn mã thông báo và thậm chí có thể đóng băng ứng dụng khách MCP.
- Nhiều ứng dụng khách MCP dựa vào một số lượng lớn lời nhắc hệ thống để giao tiếp với các công cụ MCP. Do đó, một khi MCP được sử dụng, mức tiêu thụ mã thông báo chắc chắn sẽ tăng lên đáng kể.
Tuy nhiên, tương lai đầy hứa hẹn. Trước đây, thực sự có một số khả năng tương tự dựa trên Function Call + Text2SQL, và tôi đã thử chúng, nhưng chúng không trở nên phổ biến do chi phí phát triển và các vấn đề phục hồi độ chính xác. Phương pháp MCP + cơ sở dữ liệu mà chúng ta đã học cùng nhau ngày hôm nay thực sự làm giảm chi phí phát triển, thậm chí về không mã, và độ chính xác rất cao. Tôi tin rằng nó chắc chắn sẽ trở thành một phương pháp truy vấn rất phổ biến trong tương lai và sẽ thay thế các phương pháp RAG truyền thống trong các tình huống truy xuất dữ liệu có cấu trúc như dịch vụ khách hàng thông minh, quản lý kho và quản lý thông tin.