Ausbilder
Instructor ist ein anweisungsgesteuertes Texteinbettungsmodell, das Texteinbettungen für beliebige Aufgaben (z. B. Klassifizierung, Retrieval, Clustering, Textbewertung usw.) und Domänen (z. B. Wissenschaft, Finanzen usw.) generieren kann, indem es einfach die Aufgabenanweisung bereitstellt, ohne jegliche Feinabstimmung.
Milvus lässt sich über die Klasse InstructorEmbeddingFunction mit den Einbettungsmodellen von Instructor integrieren. Diese Klasse bietet Methoden zur Kodierung von Dokumenten und Abfragen unter Verwendung der Instructor-Einbettungsmodelle und gibt die Einbettungen als dichte Vektoren zurück, die mit der Milvus-Indizierung kompatibel sind.
Um diese Funktion zu nutzen, installieren Sie die notwendigen Abhängigkeiten:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Dann instanziieren Sie die 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:"
)
Parameter:
model_name
(string)Der Name des Mistral AI Einbettungsmodells, das für die Kodierung verwendet werden soll. Der Wert ist standardmäßig
hkunlp/instructor-xl
. Weitere Informationen finden Sie unter Model List.query_instruction
(Zeichenkette)Aufgabenspezifische Anweisung, die das Modell anleitet, wie es eine Einbettung für eine Abfrage oder eine Frage generieren soll.
doc_instruction
(Zeichenkette)Aufgabenspezifische Anweisung, die das Modell anleitet, eine Einbettung für ein Dokument zu erzeugen.
Um Einbettungen für Dokumente zu erstellen, verwenden Sie die Methode 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)
Die erwartete Ausgabe ist ähnlich wie die folgende:
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,)
Um Einbettungen für Abfragen zu erstellen, verwenden Sie die Methode 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)
Die erwartete Ausgabe ist ähnlich wie die folgende:
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,)