Vectorize คืออะไร?
Cloudflare Vectorize เป็น Vector Database ที่ทำงานบน Cloudflare Network ออกแบบมาเพื่อเก็บและค้นหา Vector Embeddings ซึ่งเป็นหัวใจสำคัญของระบบ AI Search, Recommendation และ RAG (Retrieval-Augmented Generation)
เหมาะสำหรับลูกค้า VPS และ Cloud Hosting ที่ต้องการสร้างระบบค้นหาอัจฉริยะหรือ AI Chatbot ที่ตอบจากข้อมูลของตัวเอง
Vector Embeddings คืออะไร?
Vector Embeddings คือการแปลงข้อมูล (ข้อความ, รูปภาพ, เสียง) ให้เป็นตัวเลขหลายมิติ (Vectors) ที่คอมพิวเตอร์เข้าใจ ข้อมูลที่มีความหมายใกล้กันจะมี Vector ใกล้กัน:
- “Cloud VPS คือเซิร์ฟเวอร์เสมือน” → [0.23, -0.45, 0.67, …] (1536 มิติ)
- “Virtual Private Server” → [0.21, -0.43, 0.65, …] (ใกล้กับข้อความแรก)
- “ร้านอาหารญี่ปุ่น” → [-0.89, 0.12, -0.34, …] (ห่างจากสองข้อความแรก)
สร้าง Vectorize Index
ขั้นตอนที่ 1: สร้าง Index ด้วย Wrangler
# สร้าง Vector Index สำหรับ OpenAI Embeddings (1536 มิติ)
npx wrangler vectorize create my-knowledge-base \
--dimensions=1536 \
--metric=cosine
# สำหรับ Workers AI Embeddings (768 มิติ)
npx wrangler vectorize create my-knowledge-base \
--dimensions=768 \
--metric=cosine
ขั้นตอนที่ 2: เพิ่ม Binding ใน wrangler.toml
[[vectorize]]
binding = "VECTORIZE"
index_name = "my-knowledge-base"
[ai]
binding = "AI"
Insert Vectors เข้า Index
export default {
async fetch(request, env) {
const documents = [
{ id: "doc1", text: "Cloud VPS คือเซิร์ฟเวอร์เสมือนที่ทำงานบน Cloud" },
{ id: "doc2", text: "Cloud Hosting เหมาะสำหรับเว็บไซต์ที่ต้องการความเร็ว" },
{ id: "doc3", text: "Cloud Email รองรับ Custom Domain และ Anti-Spam" }
];
// สร้าง Embeddings ด้วย Workers AI
const embeddings = await env.AI.run(
"@cf/baai/bge-base-en-v1.5",
{ text: documents.map(d => d.text) }
);
// Insert เข้า Vectorize
const vectors = documents.map((doc, i) => ({
id: doc.id,
values: embeddings.data[i],
metadata: { text: doc.text }
}));
await env.VECTORIZE.insert(vectors);
return Response.json({ success: true, count: vectors.length });
},
};
Query: ค้นหา Vector ที่ใกล้ที่สุด
export default {
async fetch(request, env) {
const { query } = await request.json();
// สร้าง Embedding จากคำค้นหา
const queryEmbedding = await env.AI.run(
"@cf/baai/bge-base-en-v1.5",
{ text: [query] }
);
// ค้นหา Top 5 ที่ใกล้ที่สุด
const results = await env.VECTORIZE.query(
queryEmbedding.data[0],
{
topK: 5,
returnMetadata: true
}
);
return Response.json(results);
},
};
Embedding Models ที่รองรับ
- @cf/baai/bge-base-en-v1.5 — 768 มิติ, รองรับภาษาอังกฤษ, เร็วและแม่นยำ
- @cf/baai/bge-large-en-v1.5 — 1024 มิติ, คุณภาพสูงกว่า
- @cf/baai/bge-small-en-v1.5 — 384 มิติ, เร็วที่สุด เหมาะสำหรับ Prototype
- OpenAI text-embedding-3-small — 1536 มิติ, ใช้ผ่าน AI Gateway
กรณีใช้งาน
- Semantic Search — ค้นหาเอกสารจากความหมาย ไม่ใช่แค่ Keyword
- RAG System — AI Chatbot ที่ตอบจากข้อมูลของบริษัท
- Recommendation — แนะนำสินค้าหรือบทความที่เกี่ยวข้อง
- Duplicate Detection — ตรวจจับเนื้อหาซ้ำหรือคล้ายกัน
- Clustering — จัดกลุ่มข้อมูลตามความคล้ายคลึง
เทคนิคและข้อควรรู้
- เลือก Metric ที่เหมาะสม — Cosine สำหรับ Text, Euclidean สำหรับ Image
- Chunk Text — แบ่งเอกสารยาวเป็นชิ้นเล็กๆ (500-1000 ตัวอักษร) ก่อนทำ Embedding
- Metadata — เก็บข้อมูลเพิ่มเติมใน Metadata เพื่อใช้ Filter ผลลัพธ์
- topK — เริ่มจาก 5-10 แล้วปรับตามคุณภาพผลลัพธ์
สรุป
Cloudflare Vectorize เป็น Vector Database ที่ใช้งานง่าย ทำงานบน Edge ร่วมกับ Workers AI ได้อย่างลงตัว เหมาะสำหรับสร้างระบบ AI Search, RAG และ Recommendation เหมาะสำหรับลูกค้า VPS และ Cloud Hosting ที่ต้องการยกระดับเว็บไซต์ด้วย AI Search อัจฉริยะ

