Zilliz REST APIを使い始める

Zilliz Cloudは、人工知能(AI)と分析アプリケーションを大規模に実現し、高速化する包括的なベクトルデータベースサービスです。Milvus](https://milvus.io/)上に構築されており、堅牢でスケーラブルなオープンソースのベクトルデータベースで、数十億のベクトル埋め込みを簡単に扱うことができます。
Milvusは非構造化データの取り扱いを簡素化し、企業が大量のデータから効率的に分析し、洞察を導き出すことを可能にします。スケーラブルでクラウド対応のベクターデータベースを提供することで、Zilliz Cloudはワンストップソリューションとして機能します。
MilvusとZilliz Cloudのユースケースは広範で多様です。顧客のブラウジングや購買パターンを分析することで、カスタマイズされたショッピング体験を提供するレコメンデーション・システムを支援することができる。ヘルスケアでは、大規模な医療データセットのパターンを認識するAIモデルの構築を支援し、より正確な診断とパーソナライズされた治療計画につなげることができる。
Zilliz CloudがMilvusに追加した機能の1つは、ベクトル・データベースを管理するためのREST APIで、コレクションの操作、データのアップロードと削除、クエリの送信などを簡単に行うことができる。この記事ではこれらのAPIの使い方を紹介します。さっそく始めましょう!
始める前に
このチュートリアルに従うには、いくつかのものが必要です:
まず、Zilliz Cloudのアカウントが必要です。すでにお持ちの場合は、クラスタのURLとAPIキーの取得までスキップできます。
この記事で説明することはすべて無料アカウントで動作しますので、こちらにアクセスしてGet Started Freeをクリックするだけです。その後、Zillizのダッシュボードにログインし、プロンプトに従ってクラスタを作成します。
新しいクラスタを作成する](https://assets.zilliz.com/Create_New_Cluster_e1ff4b450a.png)
名前を付けます。このチュートリアルではデフォルトのオプションで十分です。次へ]をクリックします:Create Collection**をクリックします。
新しいクラスタ用のコレクションを作成する](https://assets.zilliz.com/Create_collection_for_your_new_cluster_0e8498a7bb.png)
Example Collection** を選択し、次に Create Collection and Cluster を選択します。
クラスタに接続](https://assets.zilliz.com/Connect_to_your_cluster_3d4c354e5c.png)
このダイアログにはクラスタのURLとAPIキーが表示されます。後で使用するためにコピーしてください。クラスタを選択してダッシュボードから取得することもできます。
このチュートリアルの例では、Visual Studio Codeとvscode-restclientプラグインのコードを使用します。
クエリはgistでここにあります HTTPクライアントで実行するか、ZillizダッシュボードのPlaygroundを使用してください。
Zilliz REST APIの概要
Zilliz REST APIにはクラスタ、コレクション、ベクトルデータを管理するメソッドがあります。ここでは最後の2つのカテゴリに焦点を当てます。データを格納するためのコレクションの作成と、コレクション内のデータの管理です。
コレクション操作には以下が含まれます:
リスト
作成
説明する
落とす
ベクター操作が含まれる:
クエリー
取得
挿入
削除
検索
APIコールコンポーネント
すべてのAPIエンドポイントの最初の部分は、上記でコピーしたクラスタのパブリックエンドポイントで、その後にAPIバージョンとAPIメソッドのトップレベルディレクトリである/vector/が続く。
例えば、私のクラスタのURLはこう始まる:
https://in03-75204f04fc4368d.api.gcp-us-west1.zillizcloud.com/v1/vector`
呼び出しの例では、$PUBLIC_ENDPOINTをクラスタのホスト名のプレースホルダとして使用します。
各APIコールには2つのヘッダが必要です:
- content_type - これは常に application/json です。これは、送信するデータがJSONであることをWebサーバーに伝えます。
**すべてのリクエストは、APIキーとともにこのヘッダーを必要とします。
呼び出しの例では、クラスタのホスト名のプレースホルダとして $YOUR_API_KEY を使用します。
コレクションから始めましょう。
Zilliz APIを始めよう
コレクションの作成、記述、削除、一覧表示
まず、クラスタ上のコレクションのリストを見てみましょう。
コレクション操作のエンドポイントは /collections です。これに対するGETコールはリストを引き出します。
以下はVS Code Rest Clientでの呼び出しです:
GET https://$PUBLIC_ENDPOINT/v1/vector/collections HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
そして、これがすべてのヘッダーを含むレスポンスだ。今後は省略します。
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
コンテンツ長: 40
x-ratelimit-remaining-second: 999
x-ratelimit-limit-second: 1000
ratelimit-リミット: 1000
ratelimit-残り: 999
ratelimit-reset:1 x-sso-plugin-version: v0.0.1
日付: Mon, 10 Jul 2023 17:53:12 GMT
異なる:オリジン access-control-allow-origin:*
requestid: 8c5a2031-afbe-4fa2-9a28-8195e1f20357
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff via:1.1 google Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
接続:閉じる
{
「コード":200,
「data":[
"medium_articles"
]
}
サーバーは成功コード200と、コレクション名のベクトルを持つdataフィールドを返す。
新しいコレクションを追加](https://docs.zilliz.com/reference/restful/create-collection)して、新しいリストを取得してみよう。
このためには、コレクションを記述したドキュメントを /collections/create に POST してください。
POST https://$PUBLIC_ENDPOINT/v1/vector/collections/create HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"large_articles"、
"dimension":256,
"metricType":"L2",
"primaryField":"id"、
"vectorField":"ベクトル"
}
コレクションを記述する5つのフィールドを指定できます:
コレクション名** - 名前は必須です。
dimension** - ベクトル・フィールドの次元数も指定する。
metricType** - ベクトル間の類似性を測定するために使用される類似性メトリクスのタイプ。この例では、デフォルトのメトリック・タイプはユークリッド距離を表す L2 です。
primaryField** - デフォルトの主フィールドは id です。
vectorField** - デフォルトのベクトル・フィールドは vector です。
成功すると、Zillizは200と空のドキュメントを返します。
http/1.1 200 ok
{
"code":200,
"data":{}
}
コレクションをもう一度リストアップすると、2つの名前が表示されます。
http/1.1 200 ok
{
"code":200,
「データ":[
"medium_articles"、
"large_articles"
]
}
既存のコレクションの説明を取得する](https://docs.zilliz.com/reference/restful/describe-collection)ことができます。このためには、 collectionName をリクエストパラメータとして GET を送信します。
GET https://$PUBLIC_ENDPOINT/v1/vector/collections/describe?collectionName=medium_articles HTTP/1.1
コンテントタイプ: application/json
認証ベアラ $YOUR_API_KEY
このレスポンスは、コレクションの現在の状態についての詳細な説明です。
HTTP/1.1 200 OK
{
"code":200,
"data":{
"collectionName":"medium_articles"、
"shardsNum":2,
"description":"デモコレクション"、
"load":"loaded"、
"enableDynamicField": true、
"fields":[
{
"name":"id"、
"type":"int64"、
"primaryKey": true、
"autoId": true、
"description":""
},
{
"name":"title_vector"、
「type":"floatVector(256)"、
"primaryKey": false、
"autoId": false、
"description":""
}
],
「indexes":[
{
「indexName":"vector_idx"、
"fieldName":"vector": "ベクトル"、
"metricType":"L2"
}
]
}
}
最後に、先ほど作成したコレクションを削除することで締めくくりましょう。これは/collections/dropへのPOSTリクエストなので、パラメータとして名前を渡す代わりにJSONドキュメントを使用します。
POST https://$PUBLIC_ENDPOINT/v1/vector/collections/drop HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"large_articles"
}
このレスポンスは、Zillizがコレクションを作成する際に送信するものと似ている。
http/1.1 200 ok
{
"code":200,
"data":{}
}
別のコレクションのリストをリクエストすると、1つに戻っていることがわかります。では、データを使ってみましょう。
データの挿入
データを挿入](https://docs.zilliz.com/reference/restful/insert)するには、データを記述したドキュメントを /insert に POST で送信します。
上記で取得した説明を見ると、サンプルコレクションには2つのフィールドがあります:
id** - 整数値
title_vector**-768個の浮動小数点数を持つベクトル。
つまり、挿入リクエストのdataフィールドに、これら2つのフィールドを含む値を持つドキュメントが必要です。dataはリストなので、複数の値を挿入することができます。
以下は1つの値を持つリクエストです:
POST https://$PUBLIC_ENDPOINT/v1/vector/insert HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName": "medium_articles"、
"data":[
{
"id":1,
"title_vector":[
0.2109777665089908,
0.6424190129752343,
(768値)...
0.9818514815450557
],
},
]
}
このコードを送信する。応答は挿入されたアイテムの数とそのIDです。
http/1.1 200 ok
{
"code":200,
"data":{
"insertCount":1,
"insertIds":[
"1"
]
}
}
クエリ、検索、データの取得
Zilliz REST APIには、データを取得するための3つのメソッドがある。
ベクトル・クエリー](https://docs.zilliz.com/reference/restful/query)は、データベースのエントリーにマッチする条件を使用します。まず、idフィールドに基づいたクエリから始めましょう。
このクエリーでは、検索ドキュメントを /query に POST します。in**演算子を使用して、idが1または2のエントリーにマッチさせます。
POST https://$PUBLIC_ENDPOINT/v1/vector/query HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"filter":"id in (1, 2)"
}
Milvusはサンプルコレクションのデータとともに、先ほど挿入した値で応答します。
http/1.1 200 ok
{
"code":200,
「データ":[
{
"id":1,
"title_vector":[
0.21097776,
0.5381259,
0.48835102,
0.15038285,
0.94545513,
(768の値)...
]
},
{
拍手500,
「id":2,
"link":"https://medium.com/swlh/how-can-we-best-switch-in-python-458fb33f7835"、
"publication":"スタートアップ"、
「reading_time":6,
"回答":7,
"タイトル":"Pythonでどのように切り替えるのがベストか?"、
"title_vector":[
0.031961977,
0.00047043373,
-0.018263113,
0.027324716,
-0.0054595284,
-0.014779159,
(768の値)...
]
}
結果をフィルタリングするには outputFields を使用します。
結果のサイズを減らしながら、もう少し多くの文書を照会してみましょう。
POST https://$PUBLIC_ENDPOINT/v1/vector/query HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"filter":"id in (1, 2, 4, 99)"、
"outputFields":[id", "publication"]。
}
この結果はずっと読みやすい:
http/1.1 200 ok
{
"code":200,
「データ":[
{
"id":1,
"publication": null
},
{
"id":2,
"publication":"スタートアップ"
},
{
"id":4,
"publication":"スタートアップ"
},
{
"id":99,
"publication":"データサイエンスに向けて"
}
]
}
ベクトル検索](https://docs.zilliz.com/reference/restful/search)は、ベクトル場の類似性検索を使ってデータを見つける。
新しい値を挿入するのに使ったのと同じ値を使って検索してみよう。
Searchは、クエリと同じfilterフィールドとoutputFieldsフィールドに加え、検索条件用のvectorフィールド、検索結果用のlimit、およびoffsetをサポートしています。オフセットは省略できます。
POST https://$PUBLIC_ENDPOINT/v1/vector/search HTTP/1.1
コンテントタイプ: application/json
認証ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"filter":"id in (1,2,3,4,5,6,7,8,9,99)"、
"limit":5,
"outputFields":[id", "publication"]、
"vector":[
0.2109777665089908,
0.0375565730811388,
0.6424190129752343,
0.9818514815450557,
0.10598735548499805,
...
]
}
}
検索を5つの値に限定したので、結果はこうなる。新しいエントリーを追加するために使用した値によって、結果は異なります。
HTTP/1.1 200 OK
{
"code":200,
「データ":[
{
"distance":0,
"id":1,
「出版": null
},
{
"distance":211.61267,
"id":2,
"publication":"スタートアップ"
},
{
"distance":211.71194,
"id":5,
"publication":"スタートアップ"
},
{
"distance":211.719,
"id":6,
"publication":"スタートアップ"
},
{
"distance":211.9408,
"id":7,
"publication":"スタートアップ"
}
]
}
最後に、idのリストを/getに投稿することで、vectorsを取得することができます。このgetリクエストは上記のクエリと同じ結果をもたらします。
POST https://$PUBLIC_ENDPOINT/v1/vector/get HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"id":[1, 2, 4, 99],
"outputFields":[id", "publication"]。
}
データを削除する
最後の操作はベクターの削除です。getと同様に、deleteはidフィールドを使用します。データベースからエントリを削除するには、id** のリストを /delete にポストします。
POST https://$PUBLIC_ENDPOINT/v1/vector/delete HTTP/1.1
content-type: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"id":[1]
}
結果は空のドキュメントです。
http/1.1 200 ok
{
"code":200,
"data":{}
}
idがなくなったことを確認するために、id**を取得してみる:
POST https://$PUBLIC_ENDPOINT/v1/vector/get HTTP/1.1
コンテントタイプ: application/json
認証:ベアラ $YOUR_API_KEY
{
"collectionName":"medium_articles"、
"id":[1],
"outputFields":[id", "publication"]。
}
Milvusは空の結果セットを返します。
結論
本ポストでは、Zilliz Cloudを使用してMilvusクラスタを作成し、Zilliz REST APIを使用してクラスタにクエリを実行する方法について説明しました。コレクションを作成、リストアップ、削除する方法と、ZillizクラウドとZillizクラウドが作成するMilvusクラスタのRESTエンドポイントを使用してデータを操作する方法について説明しました。
Zillizクラウドがいかに簡単にMilvusをデプロイし、利用できるかがお分かりいただけたと思いますので、無料アカウント登録をして、今すぐ始めましょう!
読み続けて

Zilliz Cloud Audit Logs Goes GA: Security, Compliance, and Transparency at Scale
Zilliz Cloud Audit Logs are GA—delivering security, compliance, and transparency at scale with real-time visibility and enterprise-ready audit trails.

Why Deepseek is Waking up AI Giants Like OpenAI And Why You Should Care
Discover how DeepSeek R1's open-source AI model with superior reasoning capabilities and lower costs is disrupting the AI landscape and challenging tech giants like OpenAI.

Zilliz Cloud BYOC Upgrades: Bring Enterprise-Grade Security, Networking Isolation, and More
Discover how Zilliz Cloud BYOC brings enterprise-grade security, networking isolation, and infrastructure automation to vector database deployments in AWS
