🔥

仕事で使うための Cloudflare Workers 入門 Day 4 - R2/KV/D1/Vectorize

に公開

TODO: あとでちゃんと書く

何ができるか認識するようの速習用のコードサンプル

Workers KV

結果整合ストレージ

https://developers.cloudflare.com/kv/

  "kv_namespaces": [
    {
      "binding": "KV_BINDING",
      "id": "<YOUR_BINDING_ID>"
    }
  ]

コード例

await env.NAMESPACE.put(key, value, {
  metadata: { someMetadataKey: "someMetadataValue" },
});

R2

S3 互換のオブジェクトストレージ

https://developers.cloudflare.com/r2/api/workers/workers-api-usage/

{
  "r2_buckets": [
    {
      "binding": "MY_BUCKET",
      "bucket_name": "<YOUR_BUCKET_NAME>"
    }
  ]
}

コード例

await env.MY_BUCKET.put(key, request.body);

s3 client から操作する例
https://zenn.dev/mizchi/articles/s3-compatible-client

D1

分散 Sqlite

  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "prod-d1-tutorial",
      "database_id": "<unique-ID-for-your-database>"
    }
  ]

コード例

const { results } = await env.DB.prepare(
  "SELECT * FROM Customers WHERE CompanyName = ?"
)
  .bind("Bs Beverages")
  .all();

https://developers.cloudflare.com/d1/get-started/

Vectorize

ベクトル検索

https://developers.cloudflare.com/vectorize/get-started/intro/

  "vectorize": [
    {
      "binding": "VECTORIZE",
      "index_name": "tutorial-index"
    }
  ]

コード例

const sampleVectors: Array<VectorizeVector> = [
  {
    id: "1",
    values: [
      0.12, 0.45, 0.67, 0.89, 0.23, 0.56, 0.34, 0.78, 0.12, 0.9, 0.24, 0.67,
      0.89, 0.35, 0.48, 0.7, 0.22, 0.58, 0.74, 0.33, 0.88, 0.66, 0.45, 0.27,
      0.81, 0.54, 0.39, 0.76, 0.41, 0.29, 0.83, 0.55,
    ],
    metadata: { url: "/products/sku/13913913" },
  },
  ///...
];
const inserted = await env.VECTORIZE.insert(sampleVectors);
const matches = await env.VECTORIZE.query(queryVector, {
  topK: 3,
  returnValues: true,
  returnMetadata: "all",
});

Discussion