milvus-logo
LFAI
フロントページへ
  • スタート
    • Milvusのインストール

ローカルでMilvus Liteを動かす

このページでは、Milvus Liteを使ってローカルでMilvusを実行する方法を説明します。Milvus LiteはMilvusの軽量版です。Milvusはオープンソースのベクトルデータベースで、ベクトル埋め込みと類似性検索によりAIアプリケーションを強化します。

概要

Milvus LiteはPythonアプリケーションにインポートすることができ、Milvusのコアとなるベクトル検索機能を提供します。Milvus LiteはMilvusのPython SDKに含まれています。デプロイはpip install pymilvus で簡単に行うことができます。

Milvus Liteを使えば、ベクトル類似性検索を使ったAIアプリケーションを数分で作り始めることができます!Milvus Liteは以下の環境で動作します:

  • Jupyter Notebook / Google Colab
  • ラップトップ
  • エッジデバイス

Milvus Liteは、Milvus StandaloneおよびDistributedと同じAPIを共有し、ベクトルデータの永続化と管理、ベクトルCRUD操作、スパースおよびデンスベクトル検索、メタデータフィルタリング、マルチベクトル、hybrid_searchなど、ほとんどの機能をカバーしています。これらを組み合わせることで、エッジデバイスからクラウド上のクラスタまで、さまざまなタイプの環境にわたって一貫したエクスペリエンスを提供し、さまざまな規模のユースケースにフィットします。同じクライアント側のコードで、ラップトップやJupyter Notebook上のMilvus Lite、Dockerコンテナ上のMilvus Standalone、または本番環境で数十億のベクターに対応する大規模なKubernetesクラスタ上のMilvus DistributedでGenAIアプリを実行することができます。

前提条件

Milvus Liteは現在以下の環境をサポートしています:

  • Ubuntu >= 20.04 (x86_64およびarm64)
  • MacOS >= 11.0 (Apple Silicon M1/M2およびx86_64)

Milvus Liteは小規模なベクトル検索ユースケースにのみ適しています。大規模なユースケースでは、Milvus StandaloneまたはMilvus Distributedのご利用をお勧めします。また、フルマネージドのMilvus onZilliz Cloudもご検討ください。

Milvus Liteのセットアップ

pip install -U pymilvus

pymilvus の利用を推奨します。milvus-litepymilvus バージョン2.4.2以上に含まれているため、pip install-U で強制的に最新版にアップデートすると、milvus-lite が自動的にインストールされます。

milvus-lite パッケージを明示的にインストールしたい場合や、古いバージョンのmilvus-lite をインストールしており、それをアップデートしたい場合は、pip install -U milvus-lite

Milvus Liteへの接続

pymilvus で、MilvusClient の uri パラメータにローカルファイル名を指定すると、Milvus Lite が使用されます。

from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")

上記のコードを実行すると、カレントフォルダにmilvus_demo.dbというデータベースファイルが生成されます。

注:同じAPIがMilvus Standalone、Milvus Distributed、Zilliz Cloudにも適用されることに注意してください。唯一の違いはローカルファイル名をリモートサーバーエンドポイントと認証情報(例:client = MilvusClient(uri="http://localhost:19530", token="username:password") )に置き換えることです。

以下はMilvus Liteを使ったテキスト検索の簡単なデモです。RAG画像検索LangChainや LlamaIndexのような一般的なRAGフレームワークでのMilvus Liteの使用など、Milvus Liteを使用したアプリケーションを構築するためのより包括的な例があります!

from pymilvus import MilvusClient
import numpy as np

client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)

# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).

vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for \_ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)

# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)

# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)

# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)

制限事項

Milvus Liteを使用する場合、いくつかの機能がサポートされていないことに注意してください。以下の表はMilvus Liteの利用制限をまとめたものです。

コレクション

メソッド / パラメータMilvus Liteでサポートされている
create_collection()制限付きパラメータでサポート
collection_nameY
dimensionY
primary_field_nameY
id_typeY
vector_field_nameY
metric_typeY
auto_idY
schemaY
index_paramsY
enable_dynamic_fieldY
num_shardsN
partition_key_fieldN
num_partitionsN
consistency_levelN (Strong のみサポート。どのような設定もStrong として扱われる)
get_collection_stats()コレクション統計の取得をサポートする。
collection_nameY
timeoutY
describe_collection()num_shardsレスポンスのconsistency_level およびcollection_id は無効です。
timeoutY
has_collection()コレクションが存在するかどうかのチェックをサポート。
collection_nameY
timeoutY
list_collections()すべてのコレクションの一覧をサポートします。
drop_collection()コレクションの削除をサポートします。
collection_nameY
timeoutY
rename_collection()コレクション名の変更はサポートしていません。

フィールドとスキーマ

メソッド / パラメータMilvus Liteでサポートされている
create_schema()限られたパラメータでサポート
auto_idY
enable_dynamic_fieldY
primary_fieldY
partition_key_fieldN
add_field()限られたパラメータでのサポート
field_nameY
datatypeY
is_primaryY
max_lengthY
element_typeY
max_capacityY
dimY
is_partition_keyN
メソッド / パラメータMilvus Liteでサポートされている
検索()限られたパラメータでサポート
collection_nameY
dataY
filterY
limitY
output_fieldsY
search_paramsY
timeoutY
partition_namesN
anns_fieldY
クエリ()限られたパラメータでのサポート
collection_nameY
filterY
output_fieldsY
timeoutY
idsY
partition_namesN
get()限られたパラメータでのサポート
collection_nameY
idsY
output_fieldsY
timeoutY
partition_namesN
削除()パラメータを限定してサポート
collection_nameY
idsY
timeoutY
filterY
partition_nameN
インサート()限定されたパラメータでのサポート
collection_nameY
dataY
timeoutY
partition_nameN
upsert()限定されたパラメータでのサポート
collection_nameY
dataY
timeoutY
partition_nameN

ロード&リリース

方法 / パラメータMilvus Liteでサポートされている
ロード_コレクション()Y
collection_nameY
timeoutY
リリース_コレクション()Y
collection_nameY
timeoutY
get_load_state()ロード状態の取得はサポートされていません。
refresh_load()ロードされたコレクションのアンロードされたデータをロードすることはサポートされていません。
close()Y

インデックス

メソッド / パラメータMilvus Liteでサポートされている
list_indexes()インデックスのリストがサポートされています。
collection_nameY
field_nameY
インデックスの作成FLAT インデックス型のみをサポートします。
index_paramsY
timeoutY
drop_index()インデックスの削除に対応。
collection_nameY
index_nameY
timeoutY
describe_index()インデックスの記述がサポートされている
collection_nameY
index_nameY
timeoutY

ベクトルインデックス型

Milvus LiteはFLATインデックスタイプのみをサポートしています。コレクションで指定されたインデックスタイプに関係なく、FLATタイプを使用します。

検索機能

Milvus Liteはスパースベクトル、マルチベクトル、ハイブリッド検索をサポートしています。

パーティション

Milvus Liteはパーティションおよびパーティション関連メソッドをサポートしていません。

ユーザとロール

Milvus Liteはユーザとロールおよび関連するメソッドをサポートしていません。

エイリアス

Milvus Liteはエイリアスおよびエイリアス関連メソッドに対応していません。

Milvus Liteからのデータ移行

Milvus Liteに保存されている全てのデータは、Docker上のMilvus Standalone、K8s上のMilvus Distributed、Zilliz Cloud上のフルマネージドMilvusなど、他のタイプのMilvusデプロイメントに簡単にエクスポート、ロードすることができます。

Milvus Liteはコマンドラインツールでデータをjsonファイルにダンプし、milvusや Zilliz Cloud(Milvusのフルマネージドクラウドサービス)にインポートすることができます。milvus-liteコマンドはmilvus-lite pythonパッケージと一緒にインストールされます。

# Install
pip install -U "pymilvus[bulk_writer]"

milvus-lite dump -h

usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]

optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir

以下の例では、./milvus_demo.db (Milvus Liteデータベースファイル)に保存されているdemo_collection コレクションの全データをダンプします。

データをエクスポートする:

milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir

このダンプファイルを使って、データインポートでZilliz Cloudにデータをアップロードしたり、一括挿入でMilvusサーバにデータをアップロードすることができます。

次のステップ

Milvus Liteに接続したら、次のことができます:

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?