Instructor
Instructor는 세부 조정 없이 작업 지침을 제공하기만 하면 모든 작업(예: 분류, 검색, 클러스터링, 텍스트 평가 등) 및 도메인(예: 과학, 금융 등)에 맞는 텍스트 임베딩을 생성할 수 있는 지침 미세 조정형 텍스트 임베딩 모델입니다.
Milvus는 InstructorEmbeddingFunction 클래스를 통해 교수자의 임베딩 모델과 통합됩니다. 이 클래스는 Instructor 임베딩 모델을 사용하여 문서와 쿼리를 인코딩하고 임베딩을 Milvus 인덱싱과 호환되는 고밀도 벡터로 반환하는 메서드를 제공합니다.
이 기능을 사용하려면 필요한 종속성을 설치하세요:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
그런 다음, 강사 임베딩 함수를 인스턴스화합니다:
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
(문자열)인코딩에 사용할 미스트랄 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,)