Gemini
Milvus는 GeminiEmbeddingFunction 클래스를 통해 Gemini의 모델과 통합됩니다. 이 클래스는 사전 학습된 Gemini 모델을 사용하여 문서와 쿼리를 인코딩하고 임베딩을 Milvus 인덱싱과 호환되는 고밀도 벡터로 반환하는 메서드를 제공합니다. 이 기능을 사용하려면 플랫폼에서 계정을 생성하여 Gemini로부터 API 키를 받습니다.
이 기능을 사용하려면 필요한 종속성을 설치하세요:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
그런 다음 GeminiEmbeddingFunction을 인스턴스화합니다:
from pymilvus import model
gemini_ef = model.dense.GeminiEmbeddingFunction(
model_name='gemini-embedding-exp-03-07', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
)
매개변수를 인스턴스화합니다:
model_name(문자열)
인코딩에 사용할 Gemini 모델의 이름입니다. 유효한 옵션은 gemini-embedding-exp-03-07(기본값), models/embedding-001, models/text-embedding-004입니다.
api_key(문자열)
Gemini API에 액세스하기 위한 API 키입니다.
config(types.EmbedContentConfig) 임베딩 모델에 대한 선택적 구성.
- 출력_차원성은 결과 출력 임베딩의 수로 지정할 수 있습니다.
- task_type을 지정하면 특정 작업에 최적화된 임베딩을 생성하여 시간과 비용을 절약하고 성능을 향상시킬 수 있습니다. gemini-embedding-exp-03-07 모델에서만 지원됩니다.
| 모델 이름 | 치수 |
|---|---|
| gemini-embedding-exp-03-07 | 3072(default),1536,768 |
| models/embedding-001 | 768 |
| models/text-embedding-004 | 768 |
| 작업 유형 | 설명 |
|---|---|
| 시맨틱_유사성 | 텍스트 유사성을 평가하기 위해 최적화된 임베딩을 생성하는 데 사용됩니다. |
| 분류 | 사전 설정된 레이블에 따라 텍스트를 분류하는 데 최적화된 임베딩을 생성하는 데 사용됩니다. |
| 클러스터링 | 유사도에 따라 텍스트를 클러스터링하도록 최적화된 임베딩을 생성하는 데 사용됩니다. |
| 재검토_문서, 재검토_질의, 질문_응답, 사실_확인 | 문서 검색 또는 정보 검색에 최적화된 임베딩을 생성하는 데 사용됩니다. |
| 코드 검색 쿼리 | 배열 정렬 또는 링크된 목록 반전 등 자연어 쿼리를 기반으로 코드 블록을 검색하는 데 사용됩니다. 코드 블록의 임베딩은 RETRIEVAL_DOCUMENT를 사용하여 계산됩니다. |
문서에 대한 임베딩을 만들려면 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 = gemini_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", gemini_ef.dim, docs_embeddings[0].shape)
예상 출력은 다음과 비슷합니다:
Embeddings: [array([-0.00894029, 0.00573813, 0.013351 , ..., -0.00042766,
-0.00603091, -0.00341043], shape=(3072,)), array([ 0.00222347, 0.03725113, 0.01152256, ..., 0.01047272,
-0.01701597, 0.00565377], shape=(3072,)), array([ 0.00661134, 0.00232328, -0.01342973, ..., -0.00514429,
-0.02374139, -0.00701721], shape=(3072,))]
Dim: 3072 (3072,)
쿼리용 임베딩을 만들려면 encode_queries() 메서드를 사용합니다:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = gemini_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", gemini_ef.dim, query_embeddings[0].shape)
예상 출력은 다음과 유사합니다:
Embeddings: [array([-0.02066572, 0.02459551, 0.00707774, ..., 0.00259341,
-0.01797572, -0.00626168], shape=(3072,)), array([ 0.00674969, 0.03023903, 0.01230692, ..., 0.00160009,
-0.01710967, 0.00972728], shape=(3072,))]
Dim 3072 (3072,)