Cloudflare Vectorize — Vector Database สำหรับ AI Search และ Embeddings

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 อัจฉริยะ