Weaviateとは
スキーマ定義とハイブリッド検索(ベクトル+キーワード)を備えたオープンソースのベクトルデータベース
ひとことで言うと
ベクトル検索とキーワード検索を組み合わせて使える、オープンソースのデータベース。
概要
Weaviateは、オープンソースで提供されるベクトルデータベース。 ベクトル同士の類似検索に加え、キーワードベースの検索を組み合わせたハイブリッド検索や、オブジェクト間の関連を扱うスキーマ定義の仕組みを備える。セルフホストとマネージドクラウドの両方の形態で利用できる。
背景
ベクトル検索とキーワード検索を併用したいニーズや、オブジェクト間の関係を扱いたいニーズに応えるため、Weaviateはスキーマ定義とハイブリッド検索機能を備えたオープンソースのベクトルデータベースとして開発された。
歴史
2019年: SeMI Technologies(後のWeaviate)が、オープンソースのベクトルデータベース「Weaviate」を公開。
コード例
Weaviate Python Clientによるベクトル検索(概念例)
import weaviate
client = weaviate.connect_to_local()
collection = client.collections.get("Article")
collection.data.insert({"title": "Example", "body": "example body"})
response = collection.query.near_text(query="example query", limit=3)
print(response.objects)
client.close()利点
- ベクトル検索とキーワード検索を組み合わせたハイブリッド検索に対応する
- セルフホストとマネージドサービスの両方を選択できる
- GraphQL/REST APIを通じてオブジェクト間の関連(クロスリファレンス)を扱える
欠点
- スキーマ設計等、導入時に検討すべき設定項目が比較的多い
- 大規模運用時にはクラスタ構成の設計・運用知識が求められる
- モジュール(ベクトル化手法等)の選択肢が多く、初期構成の検討に時間を要することがある
比較
- ベクトルデータベース — Weaviateはハイブリッド検索やスキーマ定義を備えるオープンソースのベクトルデータベースの1つ
- Pinecone — Weaviateがセルフホストとマネージドの両方を選べるのに対し、Pineconeはフルマネージドのみで提供される
- Milvus — いずれも大規模なベクトルデータを扱えるオープンソース製品だが、Weaviateはハイブリッド検索とスキーマ定義を、Milvusは分散処理によるスケールを重視する
関連用語
よくある質問
ハイブリッド検索とは何か?
ベクトルによる意味的な類似検索と、キーワードによる全文検索(BM25等)を組み合わせて検索結果を算出する方式のことで、Weaviateはこれを標準機能として提供している。
Weaviateはセルフホストとマネージドのどちらを選べる?
どちらも選択できる。オープンソース版を自社インフラで運用する形と、マネージドクラウドサービスを利用する形の両方が用意されている。
参考文献
- Official WebsiteWeaviate
- GitHubweaviate/weaviate