インストラクタ
Instructorは、タスクの指示を与えるだけで、どんなタスク(分類、検索、クラスタリング、テキスト評価など)やドメイン(科学、金融など)にも合わせたテキスト埋め込みを生成することができる指示調整型テキスト埋め込みモデルです。
MilvusはInstructorEmbeddingFunctionクラスを介してInstructorの埋め込みモデルと統合します。このクラスはInstructorの埋め込みモデルを用いて文書やクエリをエンコードし、Milvusのインデックス作成と互換性のある密なベクトルとして埋め込みを返すメソッドを提供します。
この機能を使用するには、必要な依存関係をインストールしてください:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
そして、InstructorEmbeddingFunctionをインスタンス化してください:
from pymilvus.model.dense import InstructorEmbeddingFunction
ef = InstructorEmbeddingFunction(
model_name="hkunlp/instructor-xl", # Defaults to `hkunlp/instructor-xl`
query_instruction="Represent the question for retrieval:",
doc_instruction="Represent the document for retrieval:"
)
パラメータ
model_name
(文字列)エンコーディングに使用するMistral AIエンベッディングモデルの名前。デフォルトは
hkunlp/instructor-xl
です。詳細については、モデルリストを参照してください。query_instruction
(文字列)クエリや質問に対する埋め込みを生成する方法をモデルにガイドする、タスク固有の命令。
doc_instruction
(文字列)ドキュメントに対する埋め込みを生成するようにモデルを導く、タスク固有の命令。
ドキュメントの埋め込みを生成するには、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 = ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", ef.dim, docs_embeddings[0].shape)
期待される出力は以下のようなものです:
Embeddings: [array([ 1.08575663e-02, 3.87877878e-03, 3.18090729e-02, -8.12458917e-02,
-4.68971021e-02, -5.85585833e-02, -5.95418774e-02, -8.55880603e-03,
-5.54775111e-02, -6.08020350e-02, 1.76202394e-02, 1.06648318e-02,
-5.89960292e-02, -7.46861771e-02, 6.60329172e-03, -4.25189249e-02,
...
-1.26921125e-02, 3.01475357e-02, 8.25323071e-03, -1.88470203e-02,
6.04814291e-03, -2.81618331e-02, 5.91602828e-03, 7.13866428e-02],
dtype=float32)]
Dim: 768 (768,)
クエリの埋め込みを生成するには、encode_queries()
:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = ef.encode_queries(queries)
print("Embeddings:", query_embeddings)
print("Dim", ef.dim, query_embeddings[0].shape)
期待される出力は以下のようなものです:
Embeddings: [array([ 1.21721877e-02, 1.88485277e-03, 3.01732980e-02, -8.10302645e-02,
-6.13401756e-02, -3.98149453e-02, -5.18723316e-02, -6.76784338e-03,
-6.59285188e-02, -5.38365729e-02, -5.13435388e-03, -2.49210224e-02,
-5.74403182e-02, -7.03031123e-02, 6.63730130e-03, -3.42259370e-02,
...
7.36595877e-03, 2.85532661e-02, -1.55952033e-02, 2.13342719e-02,
1.51187545e-02, -2.82798670e-02, 2.69396193e-02, 6.16136603e-02],
dtype=float32)]
Dim 768 (768,)