Làm Chủ Hệ Thống RAG Tại Edge Với Cloudflare Vectorize và D1
Khám phá cách xây dựng pipeline Retrieval-Augmented Generation (RAG) hoàn chỉnh trên Cloudflare Edge mà không cần Pinecone hay máy chủ riêng.
Retrieval-Augmented Generation (RAG) là giải pháp tiêu chuẩn để cung cấp kiến thức riêng biệt, cập nhật thời gian thực cho các mô hình ngôn ngữ lớn mà không cần tốn kém chi phí fine-tuning.
Trước đây, kiến trúc RAG thường đòi hỏi:
- Một vector database chuyên dụng (như Pinecone, Qdrant, Milvus).
- Một server chạy ứng dụng (Python/Node.js).
- Một database quan hệ để lưu trữ metadata.
Trong bài viết này, chúng ta sẽ tối giản toàn bộ ngăn xếp (stack) đó bằng cách sử dụng bộ công cụ Edge của Cloudflare: Vectorize + D1 + Workers AI.
1. Luồng hoạt động của Edge RAG
[ Người dùng đặt câu hỏi ]
│
▼
[ Worker: Sinh Embedding cho câu hỏi qua Workers AI (@cf/baai/bge-base-en) ]
│
▼
[ Vectorize: Tìm Top K tài liệu tương đồng ngữ nghĩa nhất ]
│
▼
[ D1 Database: Lấy nội dung chi tiết của các tài liệu tìm được ]
│
▼
[ Workers AI: Ghép Context + Prompt vào Llama 3 -> Trả lời người dùng ]
2. Tạo Vectorize Index
Sử dụng Wrangler CLI để khởi tạo index hỗ trợ 768 chiều (tương thích mô hình BGE-base):
npx wrangler vectorize create ai-docs-index --dimensions=768 --metric=cosine
Liên kết trong wrangler.toml:
[[vectorize]]
binding = "VECTORIZE"
index_name = "ai-docs-index"
3. Tìm kiếm Vector từ Worker
// Query vector index
const queryVector = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: query });
const matches = await env.VECTORIZE.query(queryVector.data[0], { topK: 3 });
console.log('Top matching document IDs:', matches.matches.map(m => m.id));
4. Tối ưu hiệu năng và chi phí
Nhờ độ trễ mạng nội bộ giữa Vectorize và Workers chỉ tính bằng mili-giây, toàn bộ quy trình RAG từ lúc nhận câu hỏi đến khi stream token đầu tiên về trình duyệt chỉ mất chưa đầy 200ms.