46.4kデモを予約するログイン無料で始める
Nomic

Nomic / nomic-embed-vision-v1

9,200万パラメータのビジョン埋め込みモデルで、nomic-embed-text-v1とのユニモーダル検索およびマルチモーダル検索のペアリングの両方をサポートします

nomic-embed-vision-v1 の紹介

nomic-embed-vision-v1 モデルは、nomic-embed-text-v1 と同じ潜在空間を共有する、完全に再現可能なビジョン埋め込みモデルです。これにより、テキスト埋め込みと画像埋め込みが互いを直接クエリできるマルチモーダルな利用が可能になります。92M パラメータのビジョンエンコーダーを備え、画像およびテキストの埋め込み、各モダリティ内でのユニモーダル検索、両方にまたがるマルチモーダル検索をサポートします。

nomic-embed-vision-v1 で埋め込みを作成する方法

ベクトル埋め込みを生成する主な方法は 2 つあります。

  • PyMilvus: nomic-embed-vision-v1 モデルをシームレスに統合する Milvus 向けの Python SDK。
  • Nomic Python SDK の embed モジュールは、Nomic Embedding API を使用した埋め込み機能を提供します。

ベクトル埋め込みが生成されたら、それらを Zilliz Cloud(Milvus を基盤とするフルマネージドのベクトルデータベースサービス)に保存し、セマンティック類似性検索 に使用できます。主な手順は次の 4 つです。

PyMilvus 経由で埋め込みを作成し、セマンティック検索のために Zilliz Cloud に挿入する

from pymilvus import MilvusClient
from nomic import embed

# Prepare images (can be local paths or URLs)
images = ["path/to/image1.jpg", "path/to/image2.jpg", "path/to/image3.jpg"]

# Generate embeddings for images using nomic-embed-vision-v1
image_embeddings = embed.image(images=images, model="nomic-embed-vision-v1")[
    "embeddings"
]

# Prepare query image
query_images = ["path/to/query_image.jpg"]

# Generate embeddings for query
query_embeddings = embed.image(images=query_images, model="nomic-embed-vision-v1")[
    "embeddings"
]

# Connect to Zilliz Cloud with Public Endpoint and API Key
client = MilvusClient(uri=ZILLIZ_PUBLIC_ENDPOINT, token=ZILLIZ_API_KEY)

COLLECTION = "nomic_vision_v1_images"

# Drop collection if it exists
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)

# Create collection with dimension 768 (nomic-embed-vision-v1 output dimension)
client.create_collection(collection_name=COLLECTION, dimension=768, auto_id=True)

# Insert images with embeddings
for image, embedding in zip(images, image_embeddings):
    client.insert(COLLECTION, {"image_path": image, "vector": embedding})

# Search for similar images
results = client.search(
    collection_name=COLLECTION,
    data=query_embeddings,
    # consistency_level="Strong",  # Strong consistency ensures accurate results but may increase latency
    output_fields=["image_path"],
    limit=3,
)

# Print search results
print("Similar images found:")
for result in results[0]:
    print(f"  - {result['entity']['image_path']} (distance: {result['distance']:.4f})")

詳細については、当社の PyMilvus Embedding Model ドキュメント を参照してください。