🔥
仕事で使うための Cloudflare Workers 入門 Day 4 - R2/KV/D1/Vectorize
TODO: あとでちゃんと書く
何ができるか認識するようの速習用のコードサンプル
Workers KV
結果整合ストレージ
"kv_namespaces": [
{
"binding": "KV_BINDING",
"id": "<YOUR_BINDING_ID>"
}
]
コード例
await env.NAMESPACE.put(key, value, {
metadata: { someMetadataKey: "someMetadataValue" },
});
R2
S3 互換のオブジェクトストレージ
{
"r2_buckets": [
{
"binding": "MY_BUCKET",
"bucket_name": "<YOUR_BUCKET_NAME>"
}
]
}
コード例
await env.MY_BUCKET.put(key, request.body);
s3 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();
Vectorize
ベクトル検索
"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