画像データ
Zilliz CloudのWeb UIは、パイプラインを作成、実行、管理するためのシンプルで直感的な方法を提供し、RESTful APIはWeb UIに比べてより柔軟性とカスタマイズ性を提供します。
このガイドでは、画像パイプラインの作成、埋め込み画像データの逆画像検索の実行、パイプラインが不要になった場合の削除に必要な手順を説明します。
Zilliz Cloud Pipelinesは、2025年第2四半期の終わりまでに廃止され、「Data In, Data Out」という新しい機能に置き換えられます。これにより、MilvusとZilliz Cloudの両方で埋め込み生成が効率化されます。2024年12月24日現在、新規ユーザー登録は受け付けられていません。現在のユーザーは、日没日まで月額20ドルの無料手当内でサービスを継続して利用できますが、SLAは提供されていません。モデルプロバイダーまたはオープンソースモデルの埋め込みAPIを使用してベクトル埋め込みを生成することを検討してください。
前提条件と制限
-
Google Cloud Platform(GCP)上のus-west 1にデプロイされたクラスタを作成していることを確認してください。
-
一つのプロジェクトでは、同じタイプのパイプラインを最大100個まで作成できます。詳細については、Zillizクラウドの制限を参照してください。
イメージデータを取り込む
データを取り込むには、まず取り込みパイプラインを作成してから実行する必要があります。
イメージ取り込みパイプラインを作成する
- Cloud Console
- Bash
-
プロジェクトに移動します。
-
ナビゲーションパネルからパイプラインをクリックします。次に、概要タブに切り替えて、パイプラインをクリックします。パイプラインを作成するには、+パイプラインをクリックしてください。
-
作成するパイプラインの種類を選択します。[+パイプライン]ボタンをクリックします。Ingestion Pipeline列。
-
作成するIngestionパイプラインを構成します。
パラメータ
説明する
ターゲットクラスタ
このIngestionパイプラインを使用して新しいコレクションが自動的に作成されるクラスタです。現時点では、GCP us-west 1にデプロイされたクラスタのみとなります。
コレクション名
自動作成されたコレクションの名前。
パイプライン名
新しいIngestionパイプラインの名前です。小文字、数字、アンダースコアのみを含める必要があります。
説明(オプション)
新しいIngestionパイプラインの説明。
-
IngestionパイプラインにINDEX関数を追加するには、+Functionをクリックします。各Ingestionパイプラインに対して、正確に1つのINDEX関数を追加できます。
-
関数名を入力します。
-
関数タイプとしてINDEX_IMAGEを選択してください。INDEX_IMAGE関数は、提供されたURL内の画像のベクトル埋め込みを生成できます。
-
ベクトル埋め込みを生成するために使用する埋め込みモデルを選択してください。現在、利用可能なモデルは2つあります:zilliz/vit-base-patch16-224とzilliz/clip-vit-base-patch32。以下のチャートは、各埋め込みモデルを簡単に紹介しています。
埋め込みモデル
説明する
Vision Transformer(ViT)は、Googleによってオープンソース化されたトランスエンコーダーモデル(BERTのようなもの)です。このモデルは、画像コンテンツの意味をベクトル空間に埋め込むために、大量の画像コレクションで事前にトレーニングされています。このモデルは、最適なレイテンシを提供するためにZilliz Cloudにホストされています。
Open AIによってリリースされたマルチモーダルモデル。このビジョンモデルとそのペアリングテキストモデルは、画像とテキストを同じベクトル空間に埋め込むことができ、視覚情報とテキスト情報の間の意味検索を可能にします。モデルはZilliz Cloudにホストされ、最高のレイテンシを提供します。
-
[追加]をクリックして関数を保存します。
-
-
(オプション)テキストのメタデータを保持する必要がある場合は、別のPRESERVE関数を追加してください。PRE SERVE関数は、データ取り込みとともにコレクションにスカラーフィールドを追加します。
📘ノート各Ingestionパイプラインについて、最大50個のPRESERVE関数を追加できます。
-
[+Function]をクリックします。
-
関数名を入力します。
-
入力フィールドの名前と種類を設定します。サポートされている入力フィールドの種類は、Bool、Int 8、Int 16、Int 32、Int 64、Float、Double、VarCharです。
📘ノート現在、出力フィールド名は入力フィールド名と同じでなければなりません。入力フィールド名は、Ingestionパイプラインを実行する際に使用されるフィールド名を定義します。出力フィールド名は、保存された値が保持されるベクトルコレクションスキーマ内のフィールド名を定義します。
VarCharフィールドの場合、値は最大4,000文字の英数字の文字列である必要があります。
スカラーフィールドに日時を格納する場合は、年データにはInt 16データ型、タイムスタンプにはInt 32データ型を使用することをお勧めします。
- [追加]をクリックして関数を保存します。
-
-
[Ingestion Pipelineを作成]をクリックします。
-
作成したばかりのIngestionパイプラインと互換性があるように自動構成された検索パイプラインと削除パイプラインの作成を続けます。
次の例では、という名前のIngestionパイプラインを作成しますmy_image_ingestion_パイプライン
、INDEX_IMAGE関数とPRESERVE関数が追加されました。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines" \
-d '{
"name": "my_image_ingestion_pipeline",
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"projectId": "proj-xxxx",
"collectionName": "my_collection",
"description": "A pipeline that converts an image into vector embeddings and store in efficient index for search.",
"type": "INGESTION",
"functions": [
{
"name": "index_my_image",
"action": "INDEX_IMAGE",
"embedding": "zilliz/vit-base-patch16-224"
},
{
"name": "keep_image_tag",
"action": "PRESERVE",
"inputField": "image_title",
"outputField": "image_title",
"fieldType": "VarChar"
}
]
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
lusterId
:パイプラインを作成するクラスタのIDです。現在、GCP上のus-west 1にデプロイされたクラスタのみを選択できます。CLUSTER_IDの確認方法については、How can I find my CLUSTER_ID?を参照してください。 -
projectId
:パイプラインを作成するプロジェクトのID。詳しくはプロジェクトIDの取得方法をご覧ください。 -
lectionName:
作成するインジェストパイプラインで自動的に生成されるコレクションの名前です。また、既存のコレクションを指定することもできます。 -
name
:作成するパイプラインの名前。パイプライン名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
description
(オプション):作成するパイプラインの説明。 -
type
:作成するパイプラインの種類。現在利用可能なパイプラインの種類には、INGESTION
、SEARCH
、DELETION
があります。 -
functions
:パイプラインに追加する関数。Ingestionパイプラインには、1つのINDEX関数と最大50個のPRESERVE関数しか持てません。-
name
:関数の名前です。関数名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
action
:追加する関数の種類。現在利用可能なオプションには、INDEX_DOC
、INDEX_TEXT
、INDEX_IMAGE
、PRE
SERVEがあります。 -
埋め込み
:画像のベクトル埋め込みを生成するために使用される埋め込みモデルです。利用可能なオプションは以下の通りです。(このパラメータはINDEX
関数でのみ使用されます。)埋め込みモデル
説明する
ジリズ/vit-base-patch16-224
Vision Transformer(ViT)は、Googleによってオープンソース化されたトランスエンコーダーモデル(BERTのようなもの)です。このモデルは、画像コンテンツの意味をベクトル空間に埋め込むために、大量の画像コレクションで事前にトレーニングされています。このモデルは、最適なレイテンシを提供するためにZilliz Cloudにホストされています。
ジリズ/clip-vit-base-patch32
Open AIによってリリースされたマルチモーダルモデル。このビジョンモデルとそのペアリングテキストモデルは、画像とテキストを同じベクトル空間に埋め込むことができ、視覚情報とテキスト情報の間の意味検索を可能にします。モデルはZilliz Cloudにホストされ、最高のレイテンシを提供します。
-
-
input tField
:input
フィールドの名前です。値はカスタマイズできますが、output tFieldと同じにしてください
。(このパラメータはPRESERVE
関数でのみ使用されます。) -
output
Field:コレクションスキーマで使用される出力フィールドの名前。現在、出力フィールドの名前は入力フィールドの名前と同じでなければなりません。(このパラメータはPRESERVE
関数でのみ使用されます。) -
fieldType
:入力フィールドと出力フィールドのデータ型です。使用可能な値は、Bool
、Int 8
、Int 16
、Int 32
、Int 64
、Float
、Double
、およびVarCharです
。(このパラメータはPRESERVE
関数でのみ使用されます。)📘ノートスカラーフィールドに日時を格納する場合は、年データにはInt 16データ型、タイムスタンプにはInt 32データ型を使用することをお勧めします。
VarCharフィールド
型
の場合、このフィールドのデータのmax_length
は4,000を超えることはできません。
以下は出力例です。
{
"code": 200,
"data": {
"pipelineId": "pipe-xxxx",
"name": "my_image_ingestion_pipeline",
"type": "INGESTION",
"createTimestamp": 1721187300000,
"clusterId": "in03-***************",
"collectionName": "my_collection"
"description": "A pipeline that converts an image into vector embeddings and store in efficient index for search.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions": [
{
"action": "INDEX_IMAGE",
"name": "index_my_image",
"inputFields": ["image_url", "image_id"],
"embedding": "zilliz/vit-base-patch16-224"
},
{
"action": "PRESERVE",
"name": "keep_image_tag",
"inputField": "image_title",
"outputField": "image_title",
"fieldType": "VarChar"
}
]
}
}
技術的な制限により、総使用データが数時間遅れる可能性があります。
Ingestionパイプラインが作成されると、my_collection
という名前のコレクションが自動的に作成されます。
このコレクションには、INDEX_IMAGE関数の2つの出力フィールドと、PRESERVE関数ごとに1つの出力フィールドが含まれています。コレクションのスキーマは以下の通りです。
イメージID (データ型: Int 64) | 埋め込み (データ型: FLOAT_VECTOR) | 画像タイトル (データ型: VarChar) |
---|
イメージ取り込みパイプラインを実行する
- Cloud Console
- Bash
-
インジェスチョンパイプラインの横にある「▶︎」ボタンをクリックしてください。または、プレイグラウンドタブをクリックすることもできます。
-
画像IDとURLを
image_id
とimage_url
フィールドに入力してください。PRESERVE関数を追加した場合は、定義済みの保存フィールドにも値を入力してください。実行をクリックしてください。 -
結果を確認してください。
-
再度実行する他のテキストを入力します。
次の例では、Ingestionパイプラインmy_image_ingestion_Pipeline
を実行します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}/run" \
-d '{
"data": {
"image_id": "my-img-123456",
"image_url": "xxx",
"image_title": "A cute yellow cat"
}
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
image_id
:オブジェクトストレージに保存されている画像のID。 -
image_url
:オブジェクトストレージに保存されている画像のURLです。エンコードされていないか、UTF-8でエンコードされたURLを使用してください。URLが少なくとも1時間有効であることを確認してください。 -
image_title:
保存する必要のあるメタデータフィールド。
以下は回答例です。
{
"code": 200,
"data": {
"num_entities": 1,
"usage": {
"embedding": 1
}
}
}
画像データを検索する
任意のデータを検索するには、まず検索パイプラインを作成してから実行する必要があります。IngestionおよびDeletionパイプラインとは異なり、検索パイプラインを作成する場合、クラスタとコレクションはパイプラインレベルではなく関数レベルで定義されます。これは、Zilliz Cloudが複数のコレクションから同時に検索できるためです。
画像データを検索するには2つの方法があります。逆画像検索を行うか、テキストによる画像検索を行います。
逆画像検索を行う
画像検索パイプラインの作成
- Cloud Console
- Bash
-
プロジェクトに移動します。
-
ナビゲーションパネルからパイプラインをクリックします。次に、概要タブに切り替えて、パイプラインをクリックします。パイプラインを作成するには、+パイプラインをクリックしてください。
-
作成するパイプラインの種類を選択してください。「+パイプライン」ボタンを検索パイプライン欄でクリックしてください。
-
作成したい検索パイプラインを構成します。
パラメータ
説明する
パイプライン名
新しい検索パイプラインの名前です。小文字、数字、アンダースコアのみを含める必要があります。
説明(オプション)
新しい検索パイプラインの説明。
-
「+Function」をクリックして、検索パイプラインに関数を追加します。正確に1つの関数を追加できます。
-
関数名を入力します。
-
「Target Cluster」と「Target collection」を選択します。Target Clusterは、**us-west 1 on Google Cloud Platform(GCP)**にデプロイされたクラスタである必要があります。また、Target CollectionはIngestionパイプラインによって作成されている必要があります。そうでない場合、Searchパイプラインは互換性がありません。
-
Function TypeとしてSEARCH_IMAGE_BY_IMAGEを選択してください。Function TypeとしてSEARCH_IMAGE_BY_IMAGE関数を使用すると、クエリ画像をベクトル埋め込みに変換し、最も類似した画像を取得できます。
-
[追加]をクリックして関数を保存します。
-
-
[検索パイプラインを作成]をクリックします。
次の例では、my_image_search_Pipeline
という名前の検索パイプラインを作成し、SEARCH_IMAGE_BY_IMAGE関数を追加します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines" \
-d '{
"projectId": "proj-xxxx",
"name": "my_image_search_pipeline",
"description": "A pipeline that searches image by image.",
"type": "SEARCH",
"functions": [
{
"name": "search_image_by_image",
"action": "SEARCH_IMAGE_BY_IMAGE",
"embedding": "zilliz/vit-base-patch16-224",
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "my_collection"
}
]
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
projectId
:パイプラインを作成するプロジェクトのID。詳しくはプロジェクトIDの取得方法をご覧ください。 -
name
:作成するパイプラインの名前。パイプライン名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
description
(オプション):作成するパイプラインの説明。 -
type
:作成するパイプラインの種類。現在利用可能なパイプラインの種類には、INGESTION
、SEARCH
、DELETION
があります。 -
functions
:パイプラインに追加する関数。Searchパイプラインには1つの関数しか持てません。-
name
:関数の名前です。関数名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
action
:追加する関数の種類。現在利用可能なオプションは、SEARCH_DOC_CHUNK
、SEARCH_TEXT
、SEARCH_IMAGE_BY_IMAGE
、SEARCH_IMAGE_BY_TEXT
です。 -
lusterId
:パイプラインを作成するクラスタのIDです。現在、GCP上のus-west 1にデプロイされたクラスタのみを選択できます。CLUSTER_IDの確認方法については、How can I find my CLUSTER_ID?を参照してください。 -
collection
Name:パイプラインを作成するコレクションの名前。 -
埋め込み
:ベクトル検索中に使用される埋め込みモデル。モデルは、互換性のあるコレクションで選択されたものと一致する必要があります。
-
以下は出力例です。
{
"code": 200,
"data": {
"pipelineId": "pipe-xxxx",
"name": "my_image_search_pipeline",
"type": "SEARCH",
"createTimestamp": 1721187300000,
"description": "A pipeline that searches image by image.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions":
{
"action": "SEARCH_IMAGE_BY_IMAGE",
"name": "search_image_by_image",
"inputFields": ["query_image_url"],
"clusterId": "in03-***************",
"collectionName": "my_collection",
"embedding": "zilliz/vit-base-patch16-224"
}
}
}
技術的な制限により、総使用データが数時間遅れる可能性があります。
画像検索パイプラインの実行
- Cloud Console
- Bash
-
検索パイプラインの横にある「▶︎」ボタンをクリックしてください。または、プレイグラウンドタブをクリックすることもできます。
-
クエリ画像のURLを入力し、実行をクリックします。
-
結果を確認してください。
-
パイプラインを再実行するための新しいクエリイメージURLを入力してください。
次の例では、my_image_search_パイプライン
という名前の検索パイプラインを実行します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}/run" \
-d '{
"data": {
"query_image_url": "xxx"
},
"params":{
"limit": 1,
"offset": 0,
"outputFields": ["image_id", "image_title"],
"filter": "id >= 0"
}
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
query_image_url
:類似検索を実行するために使用されるクエリ画像のURL。 -
params
:設定する検索パラメータ。-
limit
:返すエンティティの最大数。値は1から500までの整数である必要があります。この値とoffset
の値の合計は1024になる必要があります。 -
オフセット
:検索結果でスキップするエンティティの数。この値と
limit
の合計は大なり1024ではありません。最大値は1024です。 -
output
Fields:検索結果とともに返されるフィールドの配列です。デフォルトでは、検索結果にid
(エンティティID)、distance
が返されます。返される結果に他の出力フィールドが必要な場合は、このパラメータを設定できます。 -
フィルター
:検索に一致するものを見つけるために使用されるブール式のフィルター
-
以下は回答例です。
{
"code": 200,
"data": {
"result": [
{
"id": "my-img-123456",
"distance": 0.40448662638664246,
"image_id": "my-img-123456",
"image_title": "A cute yellow cat"
}
],
"usage": {
"embedding": 1
}
}
}
技術的な制限により、使用データが数時間遅れる可能性があります。
テキストで画像を検索する
画像検索パイプラインの作成
- Cloud Console
- Bash
-
プロジェクトに移動します。
-
ナビゲーションパネルからパイプラインをクリックします。次に、概要タブに切り替えて、パイプラインをクリックします。パイプラインを作成するには、+パイプラインをクリックしてください。
-
作成するパイプラインの種類を選択してください。「+パイプライン」ボタンを検索パイプライン欄でクリックしてください。
-
作成したい検索パイプラインを構成します。
パラメータ
説明する
パイプライン名
新しい検索パイプラインの名前です。小文字、数字、アンダースコアのみを含める必要があります。
説明(オプション)
新しい検索パイプラインの説明。
-
「+Function」をクリックして、検索パイプラインに関数を追加します。正確に1つの関数を追加できます。
-
関数名を入力します。
-
「Target Cluster」と「Target collection」を選択します。Target Clusterは、**us-west 1 on Google Cloud Platform(GCP)**にデプロイされたクラスタである必要があります。また、Target CollectionはIngestionパイプラインによって作成されている必要があります。そうでない場合、Searchパイプラインは互換性がありません。
📘ノートSEARCHIMAGEBY_TEXT関数は、マルチモーダル画像モデルサービス
zilliz/clip-vit-base-patch32
を使用して互換性のある画像取り込みパイプラインがある場合にのみ使用できます。 -
Function TypeとしてSEARCH_IMAGE_BY_TEXTを選択してください。Function TypeとしてSEARCH_IMAGE_BY_TEXT関数を使用すると、クエリテキストをベクトル埋め込みに変換し、最も類似した画像を取得できます。
関数SEARCH_IMAGE_BY_TEXTを選択した場合、マルチモーダルテキスト埋め込みサービス
zilliz/clip-vit-base-patch32-multilingual-v1
がデフォルトで使用され、対応する取り込みパイプラインとターゲットコレクションに一致します。 -
[追加]をクリックして関数を保存します。
-
-
[検索パイプラインを作成]をクリックします。
次の例では、my_image_search_Pipeline
という名前の検索パイプラインを作成し、SEARCH_IMAGE_BY_TEXT関数を追加します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines" \
-d '{
"projectId": "proj-xxxx",
"name": "my_image_search_pipeline",
"description": "A pipeline that searches image by text.",
"type": "SEARCH",
"functions": [
{
"name": "search_image_by_text",
"action": "SEARCH_IMAGE_BY_TEXT",
"embedding": "zilliz/clip-vit-base-patch32-multilingual-v1",
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "my_collection"
}
]
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
projectId
:パイプラインを作成するプロジェクトのID。詳しくはプロジェクトIDの取得方法をご覧ください。 -
name
:作成するパイプラインの名前。パイプライン名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
description
(オプション):作成するパイプラインの説明。 -
type
:作成するパイプラインの種類。現在利用可能なパイプラインの種類には、INGESTION
、SEARCH
、DELETION
があります。 -
functions
:パイプラインに追加する関数。Searchパイプラインには1つの関数しか持てません。-
name
:関数の名前です。関数名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
action
:追加する関数の種類。現在利用可能なオプションは、SEARCH_DOC_CHUNK
、SEARCH_TEXT
、SEARCH_IMAGE_BY_IMAGE
、SEARCH_IMAGE_BY_TEXT
です。 -
lusterId
:パイプラインを作成するクラスタのIDです。現在、GCP上のus-west 1にデプロイされたクラスタのみを選択できます。CLUSTER_IDの確認方法については、How can I find my CLUSTER_ID?を参照してください。 -
collection
Name:パイプラインを作成するコレクションの名前。 -
埋め込み
:ベクトル検索中に使用される埋め込みモデルです。ここでは、埋め込みモデルzilliz/clip-vit-base-patch32-multilingual-v1
を使用する必要があります。このモデルは、Open AIのCLIP-ViT-B 32モデルの多言語バリアントです。zilliz/clip-vit-base-patch32
ビジョンモデルと一緒に動作するように設計されており、50以上の言語でテキストを処理できます。
-
以下は出力例です。
{
"code": 200,
"data": {
"pipelineId": "pipe-xxxx",
"name": "my_image_search_pipeline",
"type": "SEARCH",
"createTimestamp": 1721187300000,
"description": "A pipeline that searches image by image.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions":
{
"action": "SEARCH_IMAGE_BY_TEXT",
"name": "search_image_by_text",
"inputFields": ["query_text"],
"clusterId": "in03-***************",
"collectionName": "my_collection",
"embedding": "zilliz/clip-vit-base-patch32-multilingual-v1"
}
}
}
技術的な制限により、総使用データが数時間遅れる可能性があります。
画像検索パイプラインの実行
- Cloud Console
- Bash
-
検索パイプラインの横にある「▶︎」ボタンをクリックしてください。または、プレイグラウンドタブをクリックすることもできます。
-
クエリテキストを入力します。[実行]をクリックします。
-
結果を確認してください。
-
パイプラインを再実行する新しいクエリテキストを入力してください。
次の例では、my_image_search_パイプライン
という名前の検索パイプラインを実行します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}/run" \
-d '{
"data": {
"query_text": "Can you show me the image of a cat?",
},
"params":{
"limit": 1,
"offset": 0,
"outputFields": ["image_id", "image_title"],
"filter": "id >= 0"
}
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
query_text
:類似検索を実行するために使用されるクエリテキスト。 -
params
:設定する検索パラメータ。-
limit
:返すエンティティの最大数。値は1から100までの整数である必要があります。この値とoffset
の値の合計は1024になる必要があります。 -
オフセット
:検索結果でスキップするエンティティの数。この値と
limit
の合計は大なり1024ではありません。最大値は1024です。 -
output
Fields:検索結果とともに返されるフィールドの配列です。デフォルトでは、検索結果にid
(エンティティID)、distance
が返されます。返される結果に他の出力フィールドが必要な場合は、このパラメータを設定できます。 -
フィルター
:検索に一致するものを見つけるために使用されるブール式のフィルター
-
以下は回答例です。
{
"code": 200,
"data": {
"result": [
{
"id": "my-img-123456",
"distance": 0.40448662638664246,
"image_id": "my-img-123456",
"image_title": "A cute yellow cat"
}
],
"usage": {
"embedding": 1
}
}
}
技術的な制限により、使用データが数時間遅れる可能性があります。
画像データの削除
データを削除するには、まず削除パイプラインを作成してから実行する必要があります。
まず、Ingestionパイプラインを作成する必要があります。Ingestionパイプラインの作成に成功したら、検索パイプラインと削除パイプラインを作成して、新しく作成したIngestionパイプラインを操作できます。
イメージ削除パイプラインの作成
- Cloud Console
- Bash
-
プロジェクトに移動します。
-
ナビゲーションパネルからパイプラインをクリックします。次に、概要タブに切り替えて、パイプラインをクリックします。パイプラインを作成するには、+パイプラインをクリックしてください。
-
作成するパイプラインの種類を選択してください。「+パイプライン」ボタンを削除パイプライン欄でクリックしてください。
-
作成する削除パイプラインを構成します。
パラメータ
説明する
パイプライン名
新しい削除パイプラインの名前です。小文字、数字、アンダースコアのみを含める必要があります。
説明(オプション)
新しいDeletionパイプラインの説明。
-
「+Function」をクリックして、削除パイプラインに関数を追加します。1つの関数だけを追加できます。
-
関数名を入力します。
-
「PURGE_IMAGE_INDEX」または「PURGE_BY_EXPRESSION」を関数タイプとして選択します。PURGE_IMAGE_INDEX関数は指定されたimage_idを持つすべての画像を削除できますが、PURGE_BY_EXPRESSION関数は指定されたフィルタ式に一致するすべてのテキストエンティティを削除できます。
-
[追加]をクリックして関数を保存します。
-
-
[削除パイプラインを作成]をクリックします。
以下の例では、my_image_delete_Pipeline
という名前のDeletionパイプラインを作成し、PURGE_IMAGE_INDEX関数を追加しています。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zilliz.cloud.com/v1/pipelines" \
-d '{
"projectId": "proj-xxxx",
"name": "my_image_deletion_pipeline",
"description": "A pipeline that deletes image by id",
"type": "DELETION",
"functions": [
{
"name": "purge_image_by_id",
"action": "PURGE_IMAGE_INDEX"
}
],
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "my_collection"
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
projectId
:パイプラインを作成するプロジェクトのID。詳しくはプロジェクトIDの取得方法をご覧ください。 -
name
:作成するパイプラインの名前。パイプライン名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
description
(オプション):作成するパイプラインの説明。 -
type
:作成するパイプラインの種類。現在利用可能なパイプラインの種類には、INGESTION
、SEARCH
、DELETION
があります。 -
functions
:パイプラインに追加する関数。Deletionパイプラインには1つの関数しか持てません。-
name
:関数の名前です。関数名は3~64文字の文字列で、英数字とアンダースコアのみを含めることができます。 -
アクション
:追加する関数の種類。利用可能なオプションには、PURGE_DOC_INDEX
、PURGE_TEXT_INDEX
、PURGE_BY_EXPRESSION
、PURGE_IMAGE_INDEX
があります。
-
-
lusterId
:パイプラインを作成するクラスタのIDです。現在、GCP us-west 1にデプロイされたクラスタのみを選択できます。詳しくはHow can I find my CLUSTER_ID? -
collection
Name:パイプラインを作成するコレクションの名前。
以下は出力例です。
{
"code": 200,
"data": {
"id": 0,
"name": "my_image_deletion_pipeline",
"type": "DELETION",
"createTimestamp": 1721187655000,
"description": "A pipeline that deletes image by id",
"status": "SERVING",
"functions": [
{
"name": "purge_image_by_id",
"action": "PURGE_IMAGE_INDEX",
"inputFields": ["image_id"]
}
],
"clusterId": "in03-xxxx",
"collectionName":" my_collection"
}
}
イメージ削除パイプラインの実行
- Cloud Console
- Bash
-
削除パイプラインの横にある「▶︎」ボタンをクリックしてください。または、プレイグラウンドタブをクリックすることもできます。
-
フィルタ式を入力します。[実行]をクリックします。
-
結果を確認してください。
次の例では、Deletionパイプラインmy_image_deletion_Pipelineを
実行します。
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}/run" \
-d '{
"data": {
"image_id": "my-img-123456"
}
}'
上記のコードのパラメータは次のように説明されています
-
YOUR_API_KEY
: APIリクエストの認証に使用される資格情報。APIキーの表示方法については、こちらをご覧ください。 -
cloud-region
:クラスターが存在するクラウドリージョンのID。現在、gcp-us-west 1
のみがサポートされています。 -
image_id
:削除する画像のID。
以下は回答例です。
{
"code": 200,
"data": {
"num_deleted_entities": 1
}
}
パイプラインの管理
以下は、前述の手順で作成されたパイプラインを管理する関連する操作です。
ビューパイプライン
- Cloud Console
- Bash
左ナビゲーションのパイプラインをクリックします。パイプラインタブを選択します。利用可能なすべてのパイプラインが表示されます。
特定のパイプラインをクリックすると、基本情報、合計使用量、機能、関連コネクタなどの詳細情報が表示されます。
技術的な制限により、総使用データが数時間遅れる可能性があります。
Web UIでパイプラインのアクティビティを確認することもできます。
APIを呼び出して、既存のすべてのパイプラインを一覧表示したり、特定のパイプラインの詳細を表示したりできます。
-
既存のパイプラインをすべて表示する
以下の例に従い、projectIdを指定してくださ
い
。プロジェクトIDの取得方法については、こちらをご覧ください。curl --request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines?projectId=proj-xxxx"以下は出力例です。
{
"code": 200,
"data": [
{
"pipelineId": "pipe-xxxx",
"name": "my_text_ingestion_pipeline",
"type": "INGESTION",
"createTimestamp": 1721187655000,
"clusterId": "in03-***************",
"collectionName": "my_collection"
"description": "A pipeline that generates text embeddings and stores additional fields.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions": [
{
"action": "INDEX_TEXT",
"name": "index_my_text",
"inputFields": ["text_list"],
"language": "ENGLISH",
"embedding": "zilliz/bge-base-en-v1.5"
},
{
"action": "PRESERVE",
"name": "keep_text_info",
"inputField": "source",
"outputField": "source",
"fieldType": "VarChar"
}
]
},
{
"pipelineId": "pipe-xxxx",
"name": "my_text_search_pipeline",
"type": "SEARCH",
"createTimestamp": 1721187655000,
"description": "A pipeline that receives text and search for semantically similar texts",
"status": "SERVING",
"totalUsage": {
"embedding": 0,
"rerank": 0
},
"functions":
{
"action": "SEARCH_TEXT",
"name": "search_text",
"inputFields": "query_text",
"clusterId": "in03-***************",
"collectionName": "my_collection",
"embedding": "zilliz/bge-base-en-v1.5",
"reranker": "zilliz/bge-reranker-base"
}
},
{
"pipelineId": "pipe-xxxx",
"name": "my_text_deletion_pipeline",
"type": "DELETION",
"createTimestamp": 1721187655000,
"description": "A pipeline that deletes entities by expression",
"status": "SERVING",
"functions":
{
"action": "PURGE_BY_EXPRESSION",
"name": "purge_data_by_expression",
"inputFields": ["expression"]
},
"clusterId": "in03-***************",
"collectionName": "my_collection"
}
]
}📘ノート技術的な制限により、総使用データが数時間遅れる可能性があります。
-
特定のパイプラインの詳細を表示する
パイプラインの詳細を表示するには、以下の例に従ってください。
curl --request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}"以下は出力例です。
{
"code": 200,
"data": {
"pipelineId": "pipe-xxx",
"name": "my_text_ingestion_pipeline",
"type": "INGESTION",
"createTimestamp": 1721187300000,
"description": "A pipeline that generates text embeddings and stores additional fields.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions": [
{
"name": "index_my_text",
"action": "INDEX_TEXT",
"inputFields": ["text_list"],
"language": "ENGLISH",
"embedding": "zilliz/bge-base-en-v1.5"
},
{
"name": "keep_text_info",
"action": "PRESERVE",
"inputField": "source",
"outputField": "source",
"fieldType": "VarChar"
}
],
"clusterId": "inxx-xxxx",
"collectionName": "my_collection"
}
}📘ノート技術的な制限により、総使用データが数時間遅れる可能性があります。
パイプラインを削除
パイプラインが不要になった場合は、削除できます。パイプラインを削除しても、データを取り込んだ自動作成コレクションは削除されません。
ドロップしたパイプラインは回復できません。行動には注意してください。
データ取り込みパイプラインを削除しても、パイプラインと一緒に作成されたコレクションには影響しません。データは安全です。
- Cloud Console
- Bash
Web UIにパイプラインをドロップするには、をクリックします**。。。**「アクション」列の下にあるボタンをクリックします。次に、「ドロップ」をクリックします。
以下の例に従って、パイプラインを削除してください。
curl --request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${YOUR_API_KEY}" \
--url "https://controller.api.{cloud-region}.zillizcloud.com/v1/pipelines/${YOUR_PIPELINE_ID}"
以下は出力例です。
{
"code": 200,
"data": {
"pipelineId": "pipe-xxx",
"name": "my_text_ingestion_pipeline",
"type": "INGESTION",
"createTimestamp": 1721187300000,
"description": "A pipeline that generates text embeddings and stores additional fields.",
"status": "SERVING",
"totalUsage": {
"embedding": 0
},
"functions": [
{
"name": "index_my_text",
"action": "INDEX_TEXT",
"inputFields": ["text_list"],
"language": "ENGLISH",
"embedding": "zilliz/bge-base-en-v1.5"
},
{
"name": "keep_text_info",
"action": "PRESERVE",
"inputField": "source",
"outputField": "source",
"fieldType": "VarChar"
}
],
"clusterId": "inxx-xxxx",
"collectionName": "my_collection"
}
}
技術的な制限により、総使用データが数時間遅れる可能性があります。