46.6kデモを予約するログイン無料で始める
ハグする顔

ハグする顔 / all-mpnet-base-v2

768次元のベクトルを生成する。

モデル概要

all-mpnet-base-v2」は、入力テキストを768次元のベクトルに変換する、文と短い段落のエンコーダである。microsoft/mpnet-baseモデルの改良版で、10億文対のデータセットを対照学習目的を使って微調整したものである。all-mpnet-base-v2`は、情報検索、クラスタリング、文の類似性などのタスクに最適である。

詳しくはこちらの投稿をご覧ください:All-MPnet-Base-V2:AIによる文の埋め込み強化

all-mpnet-base-v2を使った埋め込み作成方法

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

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

ベクトル埋め込みが作成されると、Zilliz Cloud (Milvusによるフルマネージドベクトルデータベース)のようなベクトルデータベースに保存され、意味的類似度検索に使用される。

以下は4つの重要なステップである:

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

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

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

ef = SentenceTransformerEmbeddingFunction("sentence-transformers/all-mpnet-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とall-mpnet-base-v2の統合](https://milvus.io/docs/embed-with-sentence-transform.md)の詳細については、このドキュメントをチェックしてください。

SentenceTransformer ライブラリで埋め込みを作成し、意味検索のために Zilliz Cloud に挿入する。

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("sentence-transformers/all-mpnet-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"])

参考文献

  • データに適した埋め込みモデルの選択](https://zilliz.com/blog/choosing-the-right-embedding-model-for-your-data)
  • 埋め込みモデルの評価](https://zilliz.com/learn/evaluating-your-embedding-model)
  • 独自のテキスト埋め込みモデルのトレーニング](https://zilliz.com/learn/training-your-own-text-embedding-model)
  • RAGアプリケーションのためのウェブサイトチャンキングと埋め込み初心者ガイド](https://zilliz.com/learn/beginner-guide-to-website-chunking-and-embedding-for-your-genai-applications)
  • RAGとは](https://zilliz.com/learn/Retrieval-Augmented-Generation)