Máy chủ MCP-RAG: Hướng dẫn cài đặt và sử dụng đầy đủ

Advanced Data Extraction Specialist
Trong kỷ nguyên của các ứng dụng AI phát triển nhanh chóng, nhu cầu về các hệ thống có thể kết hợp kiến thức miền tĩnh với thông tin web thời gian thực chưa bao giờ lớn đến vậy. Các mô hình sinh ra tăng cường truy xuất (RAG) truyền thống thường dựa vào dữ liệu đã được lập chỉ mục trước, giới hạn khả năng phản ứng của chúng với những phát triển mới. Máy chủ MCP-RAG đã thu hẹp khoảng cách này bằng cách tích hợp tìm kiếm vector ngữ nghĩa (thông qua Qdrant) với khả năng tìm kiếm web thời gian thực (thông qua Scrapeless), cung cấp nền tảng sẵn sàng đưa vào sản xuất cho các hệ thống trả lời câu hỏi thông minh. Cho dù bạn là một doanh nghiệp xây dựng các tác nhân kiến thức nội bộ hay một nhà phát triển đang thử nghiệm tích hợp LLM, hướng dẫn này sẽ hướng dẫn bạn từng bước thiết lập và sử dụng MCP-RAG—đảm bảo bạn được trang bị để triển khai một hệ thống kiến thức AI hiện đại, phản ứng nhanh.
Máy chủ MCP-RAG là gì?
Máy chủ MCP-RAG là một hệ thống dựa trên TypeScript kết hợp khả năng tìm kiếm vector với tìm kiếm web thời gian thực để tạo ra một hệ thống kiến thức AI nâng cao. Nó cung cấp ba công cụ chính:
- Lấy thông tin Câu hỏi thường gặp bằng Machine Learning - Tìm kiếm ngữ nghĩa qua cơ sở dữ liệu vector của bạn
- Thêm tài liệu - Mở rộng cơ sở kiến thức của bạn với thông tin mới
- Tìm kiếm web - Lấy thông tin hiện tại từ internet
Hệ thống này giải quyết những hạn chế quan trọng của AI: kiến thức lỗi thời, thiếu chuyên môn trong miền, và truy xuất thông tin không hiệu quả.
Giới thiệu Scrapeless: Công cụ nâng cao thông minh web của RAG
API tìm kiếm web Scrapeless là một API tìm kiếm web mạnh mẽ cung cấp truy cập ổn định đến các kết quả tìm kiếm mà không bị chặn bởi các trình thu thập thông tin truyền thống.
Tại sao Scrapeless lại quan trọng cho các hệ thống RAG
Các hệ thống RAG truyền thống bị giới hạn bởi các cơ sở kiến thức tĩnh. Scrapeless biến đổi Máy chủ MCP-RAG bằng cách:
- Truy xuất thông tin thời gian thực: Truy cập thông tin mới nhất từ web
- Cải thiện cơ sở kiến thức: Liên tục cập nhật cơ sở dữ liệu vector của bạn với dữ liệu hiện tại
- Tìm kiếm bổ sung: Lấp đầy các khoảng trống khi kiến thức nội bộ không đủ
- Quan điểm đa dạng: Tìm kiếm từ các khu vực và ngôn ngữ khác nhau
Scrapeless hoạt động như thế nào trong MCP-RAG?
Scrapeless tích hợp với Máy chủ MCP-RAG thông qua một lớp đóng gói TypeScript có tên ScrapelessClient để đạt được các khả năng sau:
export class ScrapelessClient {
private api: AxiosInstance;
constructor(config: ScrapelessConfig) {
this.api = axios.create({
baseURL: config.baseURL,
headers: {
"Content-Type": "application/json",
"x-api-token": config.token,
},
});
}
async searchWeb(params: WebSearchParams) {
try {
const response = await this.api.post("/api/v1/scraper/request", {
actor: "scraper.google.search",
input: {
q: params.query,
gl: params.country || "us",
hl: params.language || "en",
google_domain: params.domain || "google.com"
}
});
return {
query: params.query,
results: response.data
};
} catch (error) {
// Xử lý lỗi...
}
}
}
Tính năng cao cấp được hỗ trợ
Tính năng | Mô tả |
---|---|
Tích hợp Google Search | Sử dụng tác nhân scraper.google.search để lấy kết quả tìm kiếm |
Định vị theo khu vực | Kiểm soát quốc gia/khu vực bằng tham số gl |
Hỗ trợ đa ngôn ngữ | Trả về kết quả bằng các ngôn ngữ khác nhau sử dụng tham số hl |
Chuyển đổi miền công cụ tìm kiếm | Hỗ trợ nhiều miền như google.de , google.fr , v.v |
Quản lý proxy tự động | Kích hoạt quay vòng proxy theo mặc định để tránh bị chặn IP |
Hướng dẫn Triển khai Hệ thống Trả lời Câu hỏi Thông minh (Dựa trên Tìm kiếm Vector + Tìm kiếm Web Thời gian thực)
Bước 1: Khởi tạo cấu trúc dự án và cài đặt các dependencies
Sao chép và thiết lập dự án:
git clone git@github.com:scrapeless-ai/mcp-rag-server.git
cd mcp-rag-server
Phân tích cấu trúc dự án:
mcp-rag-server/
├── src/
│ ├── config.ts
│ ├── index.ts
│ ├── server.ts
│ ├── qdrant-client.ts
│ └── scrapeless-client.ts
├── package.json
├── tsconfig.json
└── .env
Cài đặt các dependencies:
npm install
💡Vấn đề đã giải quyết:
Đảm bảo rằng môi trường dự án TypeScript đã sẵn sàng, các dependencies cần thiết (chẳng hạn như @modelcontextprotocol/sdk, axios, zod, v.v.) đã được tích hợp và các định nghĩa kiểu cần thiết cho phát triển cũng đã được cấu hình tự động.
Bước 2: Cấu hình Môi trường
Tạo tệp `.env`:
QDRANT_URL=http://localhost:6333
QDRANT_API_KEY=
QDRANT_COLLECTION=ml_faq_collection
SCRAPELESS_KEY=khóa_api_scrapeless_của_bạn
SCRAPELESS_BASE_URL=https://api.scrapeless.com
Hiểu cấu hình (từ config.ts):
const QDRANT_URL = process.env.QDRANT_URL?.trim() || "http://localhost:6333";
const QDRANT_API_KEY = process.env.QDRANT_API_KEY?.trim() || "";
const QDRANT_COLLECTION = process.env.QDRANT_COLLECTION?.trim() || "ml_faq_collection";
const SCRAPELESS_KEY = process.env.SCRAPELESS_KEY?.trim();
const SCRAPELESS_BASE_URL = process.env.SCRAPELESS_BASE_URL?.trim() || "https://api.scrapeless.com";
**💡Vấn đề đã được giải quyết:**
Cung cấp các tham số kết nối chính xác cho các phụ thuộc bên ngoài (cơ sở dữ liệu vector Qdrant và tìm kiếm thời gian thực Scrapeless). Các giá trị mặc định và quy trình trim() được tích hợp trong mã cấu hình để ngăn ngừa lỗi định dạng biến. Nếu thiếu khóa Scrapeless, một cảnh báo sẽ được phát hành.
### Bước 3: Thiết lập Cơ sở Dữ liệu Vector Qdrant
**Khởi động Qdrant với Docker:**
Tải hình ảnh Qdrant
docker pull qdrant/qdrant
Chạy container Qdrant với dữ liệu bền vững
docker run -d
--name qdrant-server
-p 6333:6333
-p 6334:6334
-v $(pwd)/qdrant_storage:/qdrant/storage
qdrant/qdrant
**Tạo một bộ sưu tập vector FAQ:**
curl -X PUT 'http://localhost:6333/collections/ml_faq_collection'
-H 'Content-Type: application/json'
--data-raw '{
"vectors": {
"size": 1536,
"distance": "Cosine"
}
}'
**💡Vấn đề đã được giải quyết:**
Cấu hình lưu trữ truy xuất vector ngữ nghĩa, sử dụng 1536 chiều và độ tương đồng cosin, và tương thích với đầu ra của bộ sinh nhúng và các cuộc gọi QdrantClient.
### Bước 4: Tích hợp tìm kiếm web thời gian thực Scrapeless
**Lấy Khóa API Scrapeless:**
1. Truy cập [Scrapeless](https://app.scrapeless.com/passport/login?utm_source=official&utm_medium=blog&utm_campaign=mcprag) và tạo tài khoản
2. Lấy Token API của bạn từ bảng điều khiển

3. Thêm nó vào tệp .env dưới SCRAPELESS_KEY
**Kiểm tra Kết nối Scrapeless:**
Kiểm tra kết nối API (tùy chọn)
curl -X POST 'https://api.scrapeless.com/api/v1/scraper/request'
-H 'Content-Type: application/json'
-H 'x-api-token: YOUR_API_KEY'
-d '{"actor": "scraper.google.search", "input": {"q": "test query"}}'
Vấn đề đã được giải quyết: Bước này đảm bảo API Scrapeless của bạn được cấu hình chính xác. Hệ thống bao gồm xác thực để kiểm tra xem khóa API có được thiết lập hay không, ngăn chặn lỗi thời gian chạy trong quá trình tìm kiếm web.
### Bước 5: Xây dựng Dự án TypeScript
Biên dịch TypeScript ra JavaScript:
npm run build
Những gì xảy ra trong quá trình xây dựng (từ package.json):
```language
{
"scripts": {
"build": "tsc && chmod 755 build/index.js",
"start": "node build/index.js"
}
}
Xác minh đầu ra của quá trình xây dựng:
language
ls build/
# Nên hiển thị: index.js, server.js, config.js, qdrant-client.js, scrapeless-client.js
Vấn đề đã được giải quyết:
Bước này biên dịch TypeScript sang JavaScript và đảm bảo điểm vào chính là có thể thực thi. Quy trình xây dựng xuất các mô-đun ES (như được chỉ định bởi "type": "module"
trong package.json) tương thích với Node.js.
Bước 6: Khởi động Máy chủ MCP
language
Chạy máy chủ:
npm start
Những gì xảy ra trong quá trình khởi động (từ index.ts):
async function main() {
try {
console.log("Khởi động máy chủ MCP Agentic RAG...");
const transport = new StdioServerTransport();
await server.connect(transport);
console.log("Máy chủ MCP đang chạy trên cổng 8080");
} catch (error) {
console.error("Lỗi nghiêm trọng trong main():", error);
process.exit(1);
}
}
Vấn đề đã được giải quyết:
Bước này khởi chạy máy chủ MCP sử dụng giao thức STDIO để giao tiếp. Máy chủ được khởi tạo với việc xử lý và ghi log lỗi đúng cách.
Bằng cách thực hiện sáu bước trên, bạn sẽ xây dựng một hệ thống hỏi-đáp có sức mạnh AI với:
- Khả năng QA ngữ nghĩa (do cơ sở dữ liệu vector Qdrant cung cấp)
- Tăng cường web thời gian thực (thông qua tích hợp API Scrapeless)
- Cơ sở hạ tầng sẵn sàng cho LLM (dựa trên tiêu chuẩn giao thức MCP)
Điều này tạo thành một nền tảng vững chắc cho các doanh nghiệp hoặc nhà phát triển nhanh chóng triển khai một hệ thống RAG (Truy xuất-Tăng cường Sinh) sẵn sàng cho sản xuất.
Giải thích chi tiết về các thành phần chính
QdrantClient: động cơ xử lý vector
QdrantClient cung cấp các chức năng tạo nhúng và tương tác với cơ sở dữ liệu vector. Ví dụ sử dụng một phương pháp nhúng xác định đơn giản cho mục đích trình diễn:
private generateEmbedding(text: string): number[] {
const seed = [...text].reduce((sum, char) => sum + char.charCodeAt(0), 0) % 10000;
const vector: number[] = [];
let value = seed;
for (let i = 0; i < 1536; i++) {
value = (value * 48271) % 2147483647;
vector.push((value / 2147483647) * 2 - 1);
}
return vector;
}
Các tính năng chính:
- Tạo nhúng xác định đơn giản
- Các hoạt động upsert để thêm tài liệu
- Tìm kiếm ngữ nghĩa với ngưỡng điểm số có thể cấu hình
- Xử lý lỗi đúng cách và phản hồi dự phòng
ScrapelessClient: Giao diện công cụ tìm kiếm web
ScrapelessClient truy cập API Scrapeless để thực hiện tìm kiếm web và hỗ trợ các tham số tìm kiếm nâng cao:
async searchWeb(params: WebSearchParams) {
try {
if (!this.api.defaults.headers.common["x-api-token"]) {
throw new Error("Khóa API Scrapeless chưa được thiết lập");
}
const response = await this.api.post("/api/v1/scraper/request", {
actor: "scraper.google.search",
input: {
q: params.query,
gl: params.country || "us",
hl: params.language || "en",
google_domain: params.domain || "google.com"
}
});
return {
query: params.query,
results: response.data
};
} catch (error) {
// Xử lý lỗi...
}
}
Các tính năng chính:
- Tích hợp tìm kiếm Google qua Scrapeless
- Có thể cấu hình quốc gia, ngôn ngữ và miền
- Xử lý lỗi toàn diện
- Xác thực khóa API
Công cụ Server MCP
Tệp server.ts định nghĩa ba công cụ chính:
- truy xuất-câu-hỏi-học-máy:
- Tìm kiếm cơ sở dữ liệu vector cho các khái niệm ML
- Sử dụng khớp tương tự ngữ nghĩa
- Trả về kết quả định dạng với điểm số
- thêm-tài-liệu-vào-câu-hỏi-học:
- Thêm tài liệu mới vào cơ sở kiến thức
- Hỗ trợ metadata (loại, nguồn, thẻ)
- Xử lý lỗi đúng cách với phản hồi chi tiết
- tìm-kiếm-web-scrapeless:
- Thực hiện tìm kiếm web qua API Scrapeless
- Các tham số tìm kiếm có thể cấu hình
- Khôi phục thông tin theo thời gian thực
Hướng Dẫn Sử Dụng: Sử dụng hệ thống với Scrapeless
Ví dụ Sử Dụng Cơ Bản
Tìm kiếm cơ sở kiến thức:
Sử dụng truy xuất-câu-hỏi-học-máy để tìm thông tin về mạng nơ-ron
Thêm thông tin mới:
Sử dụng thêm-tài-liệu-vào-câu-hỏi-học để thêm điều này:
Văn bản: "Rừng ngẫu nhiên là phương pháp học tập tập hợp..."
Loại: "Phương pháp Tập hợp"
Thẻ: ["rừng ngẫu nhiên", "học tập tập hợp"]
Tìm kiếm web với Scrapeless:
language
Sử dụng tìm-kiếm-web-scrapeless để tìm các phát triển gần đây trong AI
Sử dụng Scrapeless nâng cao:
language
Sử dụng tìm-kiếm-web-scrapeless với:
Truy vấn: "tính năng PyTorch mới nhất"
Quốc gia: "uk"
Ngôn ngữ: "en"
Miền: "google.co.uk"
Quy Trình Làm Việc Nâng Cao với Tích Hợp Scrapeless
Tăng cường cơ sở kiến thức:
1. Sử dụng tìm-kiếm-web-scrapeless để tìm "các mô hình transformer mới nhất 2024"
2. Sử dụng thêm-tài-liệu-vào-câu-hỏi-học để thêm các phát hiện liên quan
3. Sử dụng truy xuất-câu-hỏi-học-máy để xác minh thông tin có thể tìm kiếm
Xác minh thông tin:
1. Sử dụng truy xuất-câu-hỏi-học-máy để kiểm tra kiến thức hiện có
2. Sử dụng tìm-kiếm-web-scrapeless để tìm thông tin hiện tại
3. So sánh và cập nhật cơ sở kiến thức tương ứng
Xây dựng kiến thức đa ngôn ngữ:
1. Sử dụng tìm-kiếm-web-scrapeless với country="de" và language="de" để tìm kiếm nghiên cứu AI tiếng Đức
2. Sử dụng thêm-tài-liệu-vào-câu-hỏi-học để thêm tóm tắt đã dịch
3. Xây dựng cơ sở kiến thức đa ngôn ngữ
Tích hợp với Claude Desktop
Dự án bao gồm một cấu hình mẫu cho tích hợp Claude Desktop:
{
"mcpServers": {
"MCP-RAG-app": {
"command": "node",
"args": ["your-path/to/build/index.js"],
"host": "127.0.0.1",
"port": 8080,
"timeout": 30000,
"env": {
"QDRANT_URL": "http://localhost:6333",
"QDRANT_API_KEY": "",
"QDRANT_COLLECTION": "ml_faq_collection",
"SCRAPELESS_KEY": "SCRAPELESS_KEY"
}
}
}
}
Các Vấn Đề Thông Thường và Giải Pháp
- Lỗi xây dựng:
- Đảm bảo phiên bản Node.js >= 18
- Kiểm tra biên dịch TypeScript: npx tsc --noEmit
- Lỗi thời gian chạy:
- Xác minh Qdrant đang chạy: curl http://localhost:6333/health
- Kiểm tra các biến môi trường đã được thiết lập chính xác
- Đảm bảo khóa API Scrapeless hợp lệ
- Vấn đề đặc biệt với Scrapeless:
- Xác minh khóa API đã được thiết lập đúng trong môi trường
- Kiểm tra hạn ngạch và giới hạn API trong bảng điều khiển Scrapeless
- Đảm bảo cấu hình điểm cuối API đúng
- Vấn đề kết nối:
- Xác minh các cổng có sẵn (6333 cho Qdrant)
- Kiểm tra cài đặt tường lửa
- Đảm bảo các container Docker đang chạy
Lợi Ích của Hệ Thống Kết Hợp
Tích hợp Scrapeless với Qdrant tạo ra một hệ thống lai mạnh mẽ:
- Kiến thức Tĩnh + Động: Kết hợp cơ sở kiến thức đã được chọn lọc với dữ liệu web theo thời gian thực
- Tìm kiếm Thông minh: Sử dụng tìm kiếm ngữ nghĩa cho dữ liệu nội bộ và tìm kiếm theo từ khóa cho nội dung web
- Tăng cường Liên tục: Tự động cập nhật cơ sở kiến thức với thông tin mới
- Góc nhìn Toàn cầu: Truy cập thông tin từ các khu vực và ngôn ngữ khác nhau
- Độ tin cậy: Scrapeless đảm bảo truy cập web ổn định mà không gặp phải vấn đề chặn
Kết Luận
Máy chủ MCP-RAG và Scrapeless triển khai một hệ thống trả lời câu hỏi thông minh, có khả năng mở rộng cao và cập nhật theo thời gian thực. Các giá trị cốt lõi bao gồm:
- Hiểu biết ngữ nghĩa: hiểu ngữ cảnh thông qua độ tương đồng vector
- Truy cập thông tin theo thời gian thực: truy cập Scrapeless để lấy nội dung web mới nhất
- Tích hợp giao thức tiêu chuẩn: sử dụng giao thức MCP, dễ dàng kết nối với các nền tảng như Claude
- Cấu hình linh hoạt: bộ sưu tập cơ sở tri thức và công cụ tìm kiếm tùy chỉnh
- Nền tảng thông minh hướng tới tương lai: hỗ trợ nâng cao tri thức động, hỗ trợ đa ngôn ngữ và thu thập thông tin thông minh trên web.
Việc thêm Scrapeless giúp hệ thống không còn chỉ là một cơ sở tri thức tĩnh mà trở thành một động cơ tri thức AI với tầm nhìn toàn cầu và khả năng học hỏi liên tục.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.