Gemini
Milvus si integra con i modelli Gemini attraverso la classe GeminiEmbeddingFunction. Questa classe fornisce metodi per codificare documenti e query utilizzando i modelli Gemini preaddestrati e restituendo le incorporazioni come vettori densi compatibili con l'indicizzazione di Milvus. Per utilizzare questa funzionalità, è necessario ottenere una chiave API da Gemini creando un account sulla sua piattaforma.
Per utilizzare questa funzione, installare le dipendenze necessarie:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Quindi, istanziare la 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
)
Parametri:
nome_modello(stringa)
Il nome del modello Gemini da usare per la codifica. Le opzioni valide sono gemini-embedding-exp-03-07(predefinito), models/embedding-001 e models/text-embedding-004.
api_key(stringa)
La chiave API per accedere all'API Gemini.
config(types.EmbedContentConfig) Configurazione opzionale per il modello di incorporamento.
- L'output_dimensionality può essere specificato per il numero di embeddings di output risultanti.
- Il task_type può essere specificato per generare embeddings ottimizzati per compiti specifici, risparmiando tempo e costi e migliorando le prestazioni. Supportato solo nel modello gemini-embedding-exp-03-07.
| Nome del modello | Dimensioni |
|---|---|
| gemini-embedding-exp-03-07 | 3072(default),1536,768 |
| modelli/embedding-001 | 768 |
| modelli/incorporazione testo-004 | 768 |
| Tipo di attività | Descrizione |
|---|---|
| SOMIGLIANZA_SEMANTICA | Utilizzato per generare incorporazioni ottimizzate per valutare la somiglianza del testo. |
| CLASSIFICAZIONE | Serve a generare incorporazioni ottimizzate per classificare i testi in base a etichette predefinite. |
| CLUSTERING | Serve a generare embeddings ottimizzati per clusterizzare i testi in base alle loro somiglianze. |
| RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING e FACT_VERIFICATION | Utilizzati per generare embeddings ottimizzati per la ricerca di documenti o il recupero di informazioni. |
| DOMANDA_DI_RECUPERO_DI_CODICE | Si usa per recuperare un blocco di codice in base a una query in linguaggio naturale, come ordinare un array o invertire un elenco collegato. Gli embeddings dei blocchi di codice vengono calcolati con RETRIEVAL_DOCUMENT. |
Per creare embeddings per i documenti, utilizzare il metodo 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)
Il risultato atteso è simile al seguente:
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,)
Per creare embeddings per le query, utilizzare il metodo 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)
Il risultato atteso è simile al seguente:
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,)