このトピックでは、オープンソースの埋め込みモデルを ModelScope から使用して、テキストをベクトルに変換し、ベクトルを DashVector に格納してベクトル検索を実行する方法について説明します。
ModelScope は、次世代のオープンソースのモデル・アズ・ア・サービス(MaaS)プラットフォームを構築し、汎 AI 開発者に柔軟で使いやすく、費用対効果の高いワンストップモデルを提供することを目指しています。
ModelScope は、業界をリードする事前トレーニング済みモデルをまとめて、反復的な研究開発コストを削減し、より環境に優しく、よりオープンな AI 開発環境とモデルサービスを提供することを目指しています。このようにして、ModelScope はデジタル経済の発展に貢献できます。 ModelScope は、試用および無料でダウンロードできる、さまざまな高品質のオープンソースモデルを提供しています。
ModelScope では、次のことができます。
事前トレーニング済みモデルを無料で使用およびダウンロードする。
コマンドラインベースのモデル予測を実行して、モデルの効果を簡単かつ迅速に検証する。
独自のデータを使用してモデルを微調整してカスタマイズする。
理論と実践のトレーニングに参加して、研究開発能力を効果的に向上させる。
コミュニティ全体とアイデアを共有する。
前提条件
DashVector:
クラスタが作成されています。詳細については、「クラスタの作成」をご参照ください。
API キーが取得されています。詳細については、「API キーの管理」をご参照ください。
最新バージョンの SDK がインストールされています。詳細については、「DashVector SDK のインストール」をご参照ください。
ModelScope:
最新バージョンの SDK は、
pip install -U modelscopeコマンドを実行することでインストールされます。
CoROM 単語埋め込みモデル
概要
モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
damo/nlp_corom_sentence-embedding_chinese-base | 768 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_english-base | 768 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_chinese-base-ecom | 768 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_chinese-base-medical | 768 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_chinese-tiny | 256 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_english-tiny | 256 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_chinese-tiny-ecom | 256 | コサイン | Float32 |
|
damo/nlp_corom_sentence-embedding_chinese-tiny-medical | 256 | コサイン | Float32 |
|
CoROM モデルの詳細については、CoROM モデルページをご覧ください。
例
コードを正しく実行するには、次の置換を行ってください。
サンプルコードの {your-dashvector-api-key} を DashVector API キーに置き換えます。
サンプルコードの {your-dashvector-cluster-endpoint} を DashVector クラスタのエンドポイントに置き換えます。
サンプルコードの {model_id} を上記の表のモデル ID に置き換えます。
タイニーモデルのベクトル次元数は 256 であることに注意してください。
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from typing import List
from dashvector import Client
pipeline_se = pipeline(Tasks.sentence_embedding, model='{model_id}')
def generate_embeddings(texts: List[str]):
inputs = {'source_sentence': texts}
result = pipeline_se(input=inputs)
return result['text_embedding']
########### DashVector にベクトルを格納し、ベクトル検索を実行するための汎用サンプルコード ###########
# DashVector クライアントを作成します。
client = Client(
api_key='{your-dashvector-api-key}',
endpoint='{your-dashvector-cluster-endpoint}'
)
# DashVector コレクションを作成します。
# 注:dimension パラメータは、モデルで指定された次元数に設定する必要があります。
rsp = client.create('CoROM-text-embedding', dimension=768)
assert rsp
collection = client.get('CoROM-text-embedding')
assert collection
# テキストをベクトルに変換し、DashVector に格納します。
collection.insert(
('ID1', generate_embeddings(['Alibaba Cloud DashVector is one of the best vector databases in performance and cost-effectiveness.'])[0])
)
# ベクトル検索を実行します。
docs = collection.query(
generate_embeddings(['The best vector database'])[0]
)
print(docs)
GTE 単語埋め込みモデル
概要
モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
damo/nlp_gte_sentence-embedding_chinese-base | 768 | コサイン | Float32 |
|
damo/nlp_gte_sentence-embedding_chinese-large | 768 | コサイン | Float32 |
|
damo/nlp_gte_sentence-embedding_chinese-small | 512 | コサイン | Float32 |
|
damo/nlp_gte_sentence-embedding_english-base | 768 | コサイン | Float32 |
|
damo/nlp_gte_sentence-embedding_english-large | 768 | コサイン | Float32 |
|
damo/nlp_gte_sentence-embedding_english-small | 384 | コサイン | Float32 |
|
GTE モデルの詳細については、GTE モデルページをご覧ください。
例
サンプルコードは、CoROM 単語埋め込みモデルのサンプルコードと同じです。対応するコードをモデル ID とベクトル次元に置き換えてください。
Udever 多言語ユニバーサル単語埋め込みモデル
概要
モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
damo/udever-bloom-560m | 1,024 | コサイン | Float32 |
|
damo/udever-bloom-1b1 | 1,536 | コサイン | Float32 |
|
damo/udever-bloom-3b | 2,048 | コサイン | Float32 |
|
damo/udever-bloom-7b1 | 4,096 | コサイン | Float32 |
|
Udever モデルの詳細については、Udever モデルページをご覧ください。
例
サンプルコードは、CoROM 単語埋め込みモデルのサンプルコードと同じです。対応するコードをモデル ID とベクトル次元に置き換えてください。
StructBERT FAQ モデル
概要
モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
damo/nlp_structbert_faq-question-answering_chinese-base | 768 | コサイン | Float32 |
|
damo/nlp_structbert_faq-question-answering_chinese-finance-base | 768 | コサイン | Float32 |
|
damo/nlp_structbert_faq-question-answering_chinese-gov-base | 768 | コサイン | Float32 |
|
StructBERT FAQ モデルの詳細については、StructBERT モデルページをご覧ください。
例
コードを正しく実行するには、次の置換を行ってください。
サンプルコードの {model_id} を上記の表のモデル ID に置き換えます。
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from typing import List
pipeline = pipeline(Tasks.faq_question_answering, model='{model_id}')
def generate_embeddings(texts: List[str], max_len=30):
return pipeline.get_sentence_embedding(texts)
DashVector にベクトルを格納し、ベクトル検索を実行するためのコードの詳細については、CoROM 単語埋め込みモデルの「例」セクションのサンプルコードをご参照ください。
その他の単語埋め込みモデル
モデル名 | モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
Bert エンティティ埋め込みモデル - 中国語 - 一般ドメイン - ベース | damo/nlp_bert_entity-embedding_chinese-base | 768 | コサイン | Float32 |
|
MiniLM 単語埋め込みモデル - 英語 - TextRetrieval | damo/nlp_minilm_ibkd_sentence-embedding_english-msmarco | 384 | コサイン | Float32 |
|
MiniLM 単語埋め込みモデル - 英語 - IBKD-STS | damo/nlp_minilm_ibkd_sentence-embedding_english-sts | 384 | コサイン | Float32 |
|
text2vec-base-chinese | thomas/text2vec-base-chinese | 768 | コサイン | Float32 |
|
text2vec-large-chinese | thomas/text2vec-large-chinese | 1,024 | コサイン | Float32 |
|
サンプルコードは、CoROM 単語埋め込みモデルのサンプルコードと同じです。対応するコードをモデル ID とベクトル次元に置き換えてください。
ModelScope のその他のオープンソース単語埋め込みモデルの詳細については、このページをご覧ください。