Gemini
Milvus s'intègre aux modèles de Gemini via la classe GeminiEmbeddingFunction. Cette classe fournit des méthodes pour encoder les documents et les requêtes à l'aide des modèles Gemini pré-entraînés et pour renvoyer les embeddings sous forme de vecteurs denses compatibles avec l'indexation Milvus. Pour utiliser cette fonctionnalité, obtenez une clé API de Gemini en créant un compte sur leur plateforme.
Pour utiliser cette fonctionnalité, installez les dépendances nécessaires :
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Ensuite, instanciez la fonction 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
)
Paramètres:
nom_modèle(chaîne)
Le nom du modèle Gemini à utiliser pour l'encodage. Les options valides sont gemini-embedding-exp-03-07(par défaut), models/embedding-001, et models/text-embedding-004.
api_key(chaîne)
La clé API pour accéder à l'API Gemini.
config(types.EmbedContentConfig) Configuration optionnelle pour le modèle d'intégration.
- Le paramètre output_dimensionality peut être spécifié pour le nombre d'embeddings résultants.
- Le type de tâche (task_type) peut être spécifié pour générer des enchâssements optimisés pour des tâches spécifiques, ce qui permet de gagner du temps et de l'argent et d'améliorer les performances. Pris en charge uniquement dans le modèle gemini-embedding-exp-03-07.
| Nom du modèle | Dimensions |
|---|---|
| gemini-embedding-exp-03-07 | 3072(default),1536,768 |
| modèles/embedding-001 | 768 |
| models/text-embedding-004 | 768 |
| Type de tâche | Description de la tâche |
|---|---|
| SIMILARITÉ_SÉMANTIQUE | Utilisé pour générer des embeddings optimisés pour évaluer la similarité des textes. |
| CLASSIFICATION | Permet de générer des embeddings optimisés pour classer les textes en fonction d'étiquettes prédéfinies. |
| CLUSTERING | Permet de générer des embeddings optimisés pour regrouper des textes en fonction de leurs similarités. |
| RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING et FACT_VERIFICATION | Utilisés pour générer des embeddings optimisés pour la recherche de documents ou d'informations. |
| CODE_RETRIEVAL_QUERY | Utilisé pour récupérer un bloc de code basé sur une requête en langage naturel, telle que trier un tableau ou inverser une liste chaînée. Les embeddings des blocs de code sont calculés à l'aide de RETRIEVAL_DOCUMENT. |
Pour créer des embeddings pour les documents, utilisez la méthode 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)
Le résultat attendu est similaire à ce qui suit :
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,)
Pour créer des embeddings pour les requêtes, utilisez la méthode 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)
Le résultat attendu est similaire à ce qui suit :
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,)