46.5kデモを予約するログイン無料で始める
マイクロソフト

マイクロソフト / e5-base-v2

オープンソースと最小限のハードウェア要件を維持しながら、優れたパフォーマンスを発揮する理想的なシステム。乱雑なデータにも対応。中程度の長さのテキスト(1~2段落)を返す短いクエリに適している。

e5-base-v2エンベッディング入門

e5-base-v2`は、意味検索、検索拡張生成 (RAG)、クラスタリングなど、様々な自然言語処理(NLP)タスクに使用できるテキスト埋め込みを生成するために設計されたモデルである。このモデルは弱教師付き対照的事前学習に基づいており、乱雑なデータや、中程度の長さのテキストを返す短いクエリを扱うのに特に効果的である。

このモデルは入力テキストの先頭に "query:クエリには "query:"、パッセージには "passage:"が必要である。Hugging FaceのTransformersやSentence Transformersのようなライブラリを通して利用することができ、アプリケーションに簡単に組み込むことができる。

**e5-large-v2とe5-base-v2` の比較:

| レイヤー | 12 | 24 | エンベッディング・サイズ | 768 | 1024 | 最大トークン数** | 512 | 512 | 性能|一般的なテキスト埋め込みタスクに適している|BEIRやMTEBのようなベンチマークで強力な性能を発揮し、多くの場合、より小さなモデルを凌駕する|||。 | 入力プレフィックスの要件|"query:クエリには "query:"、パッセージには "passage:query:"(クエリー)、"passage:"(パッセージ)| "query:クエリーには "query: ", パッセージには "passage:パッセージは" | モデルリンク** | ハギング・フェイス E5-base-v2 | ハギング・フェイス E5-large-v2 |

e5-base-v2で埋め込みを作成する方法

ベクトル埋め込みを作成するには、主に2つの方法があります:

1.PyMilvus: MilvusのPython SDKで、e5-base-v2モデルをシームレスに統合しています。 2.SentenceTransformer ライブラリ: Python ライブラリ sentence-transformer.

ベクトル埋め込みが生成されると、Zilliz Cloud (Milvusが提供するフルマネージドベクトルデータベースサービス)に保存され、意味的類似度検索に利用することができる。以下は、4つの重要なステップである:

1.1.サインアップ Zilliz Cloudアカウントを無料で取得する。 2.サーバーレスクラスターのセットアップ](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster)とパブリックエンドポイントとAPIキーを取得する。 3.ベクター・コレクションを作成し、ベクター埋め込みを挿入する。 4.**セマンティック検索を実行する。

PyMilvusで埋め込みベクトルを生成し、Zilliz Cloudに挿入してセマンティック検索を行う。

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction
from pymilvus import MilvusClient

ef = SentenceTransformerEmbeddingFunction("intfloat/e5-base-v2")

ドキュメント = [
   「人工知能は1956年に学問分野として設立された"、
   "アラン・チューリングはAIの実質的な研究を行った最初の人物である"、
   「チューリングはロンドンのマイダベールで生まれ、イングランド南部で育った。
]

# ドキュメントの埋め込みを生成する
docs_embeddings = ef(docs)

queries = ["人工知能が創設されたのはいつですか?
          「アラン・チューリングはどこで生まれましたか?]

# クエリの埋め込みを生成する
query_embeddings = ef(queries)

# Public EndpointとAPI KeyでZilliz Cloudに接続する
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT、
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    コレクション名=COLLECTION、
    dimension=ef.dim、
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION、
    data=query_embeddings、
    consistency_level="Strong"、
    output_fields=["text"])

詳細はPyMilvus Embedding Model documentationを参照してください。

SentenceTransformer ライブラリを使ってベクトル埋め込みを生成し、Zilliz Cloud に挿入して意味検索を行う。

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("intfloat/e5-base-v2")

ドキュメント = [
   「人工知能は1956年に学問分野として設立された、
   "アラン・チューリングはAIの実質的な研究を行った最初の人物である"、
   「チューリングはロンドンのマイダベールで生まれ、イングランド南部で育った。
]

# ドキュメントの埋め込みを生成する
docs_embeddings = model.encode(docs, normalize_embeddings=True)


queries = ["人工知能が創設されたのはいつですか?
          「アラン・チューリングはどこで生まれましたか?]

# クエリの埋め込みを生成する
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Public EndpointとAPI KeyでZilliz Cloudに接続する
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT、
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION、
    dimension=768、
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION、
    data=query_embeddings、
    consistency_level="Strong"、
    output_fields=["text"])

詳細はSentenceTransformer documentationを参照してください。