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

ハグする顔 / all-MiniLM-L12-v2

意味検索やRAGに最適な文と短い段落のエンコーダ。事前に学習されたMicrosoft/MiniLM-L12-H384-uncasedモデルをベースに、10億以上の文ペアの大規模データセットで微調整された。

#全MiniLM-L12-v2埋め込みモデルの紹介

  • all-MiniLM-L12-v2`は文と短い段落のエンコーダで、入力テキストの意味情報をキャプチャしたベクトルを出力します。
  • このモデルは、事前に学習されたMicrosoft/MiniLM-L12-H384-uncasedモデルをベースにしており、10億以上の文のペアからなる大規模なデータセット上で対照的な学習目的を用いて微調整された。
  • このモデルは文と段落を384次元の密なベクトル空間にマッピングし、情報検索、クラスタリング、意味検索などのタスクに利用できる。

オールMiniLM-L12-v2モデルによるベクトル埋め込み作成方法

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

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

ベクトル埋め込みが生成されると、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

ef = SentenceTransformerEmbeddingFunction("sentence-transformers/all-MiniLM-L12-v2")

docs = [
   「人工知能は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、
    output_fields=["text"])

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

SentenceTransformer を使って埋め込みベクトルを生成し、意味検索のために Zilliz Cloud に挿入する。

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("sentence-transformers/all-MiniLM-L12-v2")

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

queries = ["クエリ:人工知能はいつ作られたのか?
           "query:アラン・チューリングはどこで生まれましたか?"]
# クエリの埋め込みを生成する
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、
    dimension=384、
    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を参照してください。