Instrutor
O Instructor é um modelo de incorporação de texto ajustado por instruções que pode gerar incorporação de texto adaptada a qualquer tarefa (por exemplo, classificação, recuperação, agrupamento, avaliação de texto, etc.) e domínios (por exemplo, ciência, finanças, etc.) fornecendo simplesmente as instruções da tarefa, sem qualquer ajuste fino.
O Milvus integra-se com os modelos de incorporação do Instructor através da classe InstructorEmbeddingFunction. Esta classe fornece métodos para codificar documentos e consultas utilizando os modelos de incorporação do Instructor e devolver as incorporações como vectores densos compatíveis com a indexação do Milvus.
Para utilizar esta funcionalidade, instale as dependências necessárias:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Em seguida, instancie a 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:"
)
Parâmetros:
model_name
(string)O nome do modelo de incorporação Mistral AI a ser usado para codificação. O valor padrão é
hkunlp/instructor-xl
. Para obter mais informações, consulte Lista de modelos.query_instruction
(string)Instrução específica da tarefa que orienta o modelo sobre como gerar uma incorporação para uma consulta ou pergunta.
doc_instruction
(string)Instrução específica da tarefa que orienta o modelo para gerar uma incorporação para um documento.
Para criar embeddings para documentos, utilize o método 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)
O resultado esperado é semelhante ao seguinte:
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,)
Para criar embeddings para consultas, utilize o método 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)
O resultado esperado é semelhante ao seguinte:
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,)