Istruttore
Instructor è un modello di incorporamento del testo ottimizzato per le istruzioni, in grado di generare incorporamenti di testo adatti a qualsiasi compito (ad esempio, classificazione, recupero, raggruppamento, valutazione del testo, ecc.
Milvus si integra con i modelli di incorporamento di Instructor tramite la classe InstructorEmbeddingFunction. Questa classe fornisce metodi per codificare documenti e query utilizzando i modelli di incorporamento di Instructor e restituendo gli incorporamenti come vettori densi compatibili con l'indicizzazione di Milvus.
Per utilizzare questa funzione, installare le dipendenze necessarie:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Quindi, istanziare la 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:"
)
Parametri:
model_name
(stringa)Il nome del modello di incorporazione Mistral AI da usare per la codifica. Il valore predefinito è
hkunlp/instructor-xl
. Per ulteriori informazioni, consultare l'Elenco dei modelli.query_instruction
(stringa)Istruzioni specifiche del compito che guidano il modello su come generare un embedding per una query o una domanda.
doc_instruction
(stringa)Istruzione specifica del compito che guida il modello a generare un'incorporamento per un documento.
Per creare le incorporazioni per i documenti, utilizzare il metodo 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)
L'output previsto è simile al seguente:
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,)
Per creare embeddings per le query, utilizzare il metodo 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)
L'output previsto è simile al seguente:
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,)