SPLADE
SPLADEエンベッディングは、文書やクエリに対して非常にスパースな表現を提供するモデルであり、厳密な用語マッチングや効率性など、BOW(Bag of Words)モデルから望ましい特性を受け継いでいます。
MilvusはSpladeEmbeddingFunctionクラスを通してSPLADEモデルと統合します。このクラスは文書やクエリをエンコードし、Milvusインデックスと互換性のあるスパースベクトルとしてエンベッディングを返すメソッドを提供します。
この機能を使用するには、必要な依存関係をインストールしてください:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
SpladeEmbeddingFunction をインスタンス化するには、次のコマンドを使用します:
from pymilvus import model
splade_ef = model.sparse.SpladeEmbeddingFunction(
model_name="naver/splade-cocondenser-selfdistil",
device="cpu"
)
パラメータ
model_name(string)
エンコーディングに使用する SPLADE モデルの名前。有効なオプションは、naver/splade-cocondenser-ensembledistil(デフォルト)、naver/splade_v2_max、naver/splade_v2_distil、naver/splade-cocondenser-selfdistil。詳細については、「モデルで遊ぶ」を参照。
device(文字列)
使用するデバイス。CPUはcpu、n番目のGPUデバイスはcuda:n。
ドキュメントの埋め込みを作成するには、encode_documents()メソッドを使用します:
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
docs_embeddings = splade_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(docs_embeddings)[0].shape)
期待される出力は以下のようなものです:
Embeddings: (0, 2001) 0.6392706036567688
(0, 2034) 0.024093208834528923
(0, 2082) 0.3230178654193878
...
(2, 23602) 0.5671860575675964
(2, 26757) 0.5770265460014343
(2, 28639) 3.1990697383880615
Sparse dim: 30522 (1, 30522)
クエリの埋め込みを作成するには、encode_queries()メソッドを使用します:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = splade_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(query_embeddings)[0].shape)
期待される出力は以下のようなものです:
Embeddings: (0, 2001) 0.6353746056556702
(0, 2194) 0.015553371049463749
(0, 2301) 0.2756537199020386
...
(1, 18522) 0.1282549500465393
(1, 23602) 0.13133203983306885
(1, 28639) 2.8150033950805664
Sparse dim: 30522 (1, 30522)