문장 트랜스포머
Milvus는 SentenceTransformerEmbeddingFunction 클래스를 통해 Sentence Transformer 사전 훈련된 모델과 통합됩니다. 이 클래스는 사전 학습된 Sentence Transformer 모델을 사용하여 문서와 쿼리를 인코딩하고 임베딩을 Milvus 인덱싱과 호환되는 고밀도 벡터로 반환하는 메서드를 제공합니다.
이 기능을 사용하려면 필요한 종속성을 설치하세요:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
그런 다음 SentenceTransformerEmbeddingFunction을 인스턴스화합니다:
from pymilvus import model
sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(
model_name='all-MiniLM-L6-v2', # Specify the model name
device='cpu' # Specify the device to use, e.g., 'cpu' or 'cuda:0'
)
매개변수를 인스턴스화합니다:
model_name(문자열)
인코딩에 사용할 문장 트랜스포머 모델의 이름입니다. 기본값은 all-MiniLM-L6-v2입니다. 센텐스 트랜스포머의 사전 학습된 모델 중 하나를 사용할 수 있습니다. 사용 가능한 모델 목록은 사전 학습된 모델을 참조하세요.
장치(문자열)
사용할 디바이스로, CPU의 경우 cpu, n번째 GPU 디바이스의 경우 cuda:n입니다.
문서에 대한 임베딩을 만들려면 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 = sentence_transformer_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", sentence_transformer_ef.dim, docs_embeddings[0].shape)
예상 출력은 다음과 비슷합니다:
Embeddings: [array([-3.09392996e-02, -1.80662833e-02, 1.34775648e-02, 2.77156215e-02,
-4.86349640e-03, -3.12581174e-02, -3.55921760e-02, 5.76934684e-03,
2.80773244e-03, 1.35783911e-01, 3.59678417e-02, 6.17732145e-02,
...
-4.61330153e-02, -4.85207550e-02, 3.13997865e-02, 7.82178566e-02,
-4.75336798e-02, 5.21207601e-02, 9.04406682e-02, -5.36676683e-02],
dtype=float32)]
Dim: 384 (384,)
쿼리용 임베딩을 만들려면 encode_queries() 메서드를 사용합니다:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = sentence_transformer_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim:", sentence_transformer_ef.dim, query_embeddings[0].shape)
예상 출력은 다음과 유사합니다:
Embeddings: [array([-2.52114702e-02, -5.29330298e-02, 1.14570223e-02, 1.95571519e-02,
-2.46500354e-02, -2.66519729e-02, -8.48201662e-03, 2.82961670e-02,
-3.65092754e-02, 7.50745758e-02, 4.28900979e-02, 7.18822703e-02,
...
-6.76431581e-02, -6.45996556e-02, -4.67132553e-02, 4.78532910e-02,
-2.31596199e-03, 4.13446948e-02, 1.06935494e-01, -1.08258888e-01],
dtype=float32)]
Dim: 384 (384,)