データマスタリーを簡単に:Jupyterノートブックでベクターデータベースのマジックを探る
Anthropicは最近、Claudeの10万トークンバージョンをリリースした。そしてもちろん、OpenAIのGPTとChatGPTはよく知られている。大規模言語モデル(LLM)はAI導入のスピードアップを牽引し、それに伴いベクターデータベースの需要も押し上げている。
なぜか?ベクターデータベースは、LLMが直面する最大の問題の1つ、ドメイン知識と最新データの不足を解決するのに役立つからだ。LLM以外でも、ベクターデータベースは類似検索アプリケーションのパワーアップにその有用性を発揮している。さらに、商品レコメンデーション、逆画像検索、セマンティック・テキスト検索にも必要である。
Jupyter Notebookでベクターデータベースを使い始めるにはどうしたらよいでしょうか?このチュートリアルでは、以下の項目について説明します:
- ベクターデータベースとは?
- Jupyterノートブックでベクターデータベースを使う方法
- Milvus(Lite)とは?
- Jupyterノートブックでのベクターデータベースの概要
これはCoLabノートブックにも当てはまります。画像逆引きCoLabノート](https://colab.research.google.com/drive/1qBVYsiNTp5w8zclqxkKp_hHIoKdCGwB8?usp=sharing)と意味テキスト検索CoLabノートです。
ベクターデータベースとは?
チュートリアルに入る前に、ベクターデータベースの基本を理解しましょう。ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、ベクトルデータの保存、インデックス付け、クエリのために構築されます。主に、画像、テキスト、ビデオなどの非構造化データを扱うために使用されます。まず、データを既存のニューラルネットワークに通し、通常は2番目から最後のレイヤーから抽出されるベクトル埋め込みを得る。
これらのベクトル埋め込みは、次にベクトルデータベースに格納される。いったんベクトル埋め込みが保存されると、上のCoLabノートブックに示されているように、ベクトル埋め込みを介して、最も類似した上位k個のデータエントリをベクトルデータベースに問い合わせることができます。ベクトルデータベースが抽象化してくれるツールには以下のようなものがあります:
- ベクターインデックス。
- HNSWのようなベクトル検索アルゴリズム。
- 永続ストレージレイヤーと通信する方法。
Milvus(Lite)とは?
Milvusは分散システムネイティブのバックエンドを持つベクトルデータベースです。億スケールのベクトルデータのインデックス作成、保存、クエリを処理することを目的として構築されています。Milvusは複数のレイヤーとタイプのワーカーノードを使用し、容易にスケーラブルな設計となっています。複数の単一目的のノードを使用することに加え、Milvusはより効率的なインデックス作成のためにセグメント化されたデータも使用している。Milvusは512MBのデータセグメントを使用し、セグメントを埋めた後は変更せず、並列にクエリを実行することで、業界で最も低いレイテンシーを実現している。
Milvusベクトルデータベースのハイレベルアーキテクチャ](https://assets.zilliz.com/architecture_diagram_c2acfbe310.png)
通常、Milvusインスタンスの起動にはDocker Compose、Helm、Milvus Operatorを使用します。しかし、Milvus Liteを使えば、Jupyter NotebookやPythonスクリプトから直接Milvusインスタンスを起動することができます。Milvusと同じように動作し、すべてのデータをローカルに保存します。
Jupyter Notebookでベクターデータベースを使う方法
Milvus Lite](https://milvus.io/docs/milvus_lite.md)のようなベクターデータベースを pip を使って直接ノートブックにインストールすることができます。Jupyter Notebookの最初の行で ! pip install pymilvus milvus を実行してください。pymilvusとmilvus` をインストールしたら、ベクターデータベースを起動し、iPythonノートブック内で接続することができます。
milvusモジュールは Milvus Lite を提供し、pymilvusモジュールは Milvus に接続するための Python インタフェースを提供する。まず、3つのモジュールをインポートする。まず、milvusからdefault_serverをインポートする。二つ目はpymilvusのconnectionで、三つ目はpymilvusのutilityである。サーバの起動にはdefault_serverのstart()関数を使用する。サーバが起動したら、connectionsのconnectを使用して接続し、デフォルトのサーバから取得したlocalhostまたは127.0.0.1` のホストとポートを渡す。
python from milvus import default_server from pymilvus import connections, utility
default_server.start() connections.connect(host="127.0.0.1", port=default_server.listen_port)
Milvusに接続したら、`utility`を使用してデータベースをチェックすることができる。例えば、`get_server_version()` を呼び出して最新バージョンであることを確認し、[Milvus Blog](https://milvus.io/blog) で確認することができる。また、 `utility` を使用すると、Milvus の別テーブルである `collections` をチェックすることができます。新たにコレクションを作成したい場合は、使用したい名前のコレクションが既に使用されているかどうかを確認し、`drop_collection`でコレクションを削除するか、新しい名前を選択します。
python
utility.get_server_version()
if utility.has_collection(COLLECTION_NAME):
utility.drop_collection(COLLECTION_NAME)
さらに進んで、ベクターデータベースをプロダクションや大規模プロジェクトで使いたいですか?Zilliz Cloud](https://zilliz.com/cloud)やMilvus Standaloneをご検討ください。
Jupyter Notebookでベクターデータベースを使う方法のまとめ
この投稿では、ベクトルデータベースが類似性検索を必要とするときに役立つことを学びました。ベクトルデータベースは、画像、ビデオ、テキストなどの非構造化データのベクトル埋め込み表現の索引付け、保存、問い合わせを支援します。次に、Milvus Liteを使ってJupyter Notebookでベクトルデータベースを使う例を見てみましょう。
最後に、Milvusの分散システムバックエンドを覗いてみましょう。また、CoLabノートブックの例を通して、ベクターデータベースの使い方を理解するためのリソースも提供します。スタンドアロンのベクターデータベースインスタンスを使用したい方のために、Milvus Standaloneのセットアップ方法の例も提供しています。
読み続けて

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.
