OpenAI
Milvus si integra con i modelli di OpenAI tramite la classe OpenAIEmbeddingFunction. Questa classe fornisce metodi per codificare documenti e query utilizzando i modelli OpenAI preaddestrati e restituendo le incorporazioni come vettori densi compatibili con l'indicizzazione di Milvus. Per utilizzare questa funzionalità, è necessario ottenere una chiave API da OpenAI 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 OpenAIEmbeddingFunction:
from pymilvus import model
openai_ef = model.dense.OpenAIEmbeddingFunction(
model_name='text-embedding-3-large', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
dimensions=512 # Set the embedding dimensionality
)
Parametri:
nome_modello(stringa)
Il nome del modello OpenAI da utilizzare per la codifica. Le opzioni valide sono text-embedding-3-small, text-embedding-3-large e text-embedding-ada-002 (predefinito).
api_key(stringa)
La chiave API per accedere all'API OpenAI.
dimensioni(int)
Il numero di dimensioni che deve avere l'embedding di output risultante. Supportato solo nei modelli text-embedding-3 e successivi.
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 = openai_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", openai_ef.dim, docs_embeddings[0].shape)
L'output previsto è simile al seguente:
Embeddings: [array([ 1.76741909e-02, -2.04964578e-02, -1.09788161e-02, -5.27223349e-02,
4.23139781e-02, -6.64533582e-03, 4.21088142e-03, 1.04644023e-01,
5.10009527e-02, 5.32827862e-02, -3.26061808e-02, -3.66494283e-02,
...
-8.93232748e-02, 6.68255147e-03, 3.55093405e-02, -5.09071983e-02,
3.74144339e-03, 4.72541340e-02, 2.11916920e-02, 1.00753829e-02,
-5.76633997e-02, 9.68257990e-03, 4.62721288e-02, -4.33261096e-02])]
Dim: 512 (512,)
Per creare embeddings per le query, utilizzare il metodo encode_queries():
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = openai_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", openai_ef.dim, query_embeddings[0].shape)
Il risultato atteso è simile al seguente:
Embeddings: [array([ 0.00530251, -0.01907905, -0.01672608, -0.05030033, 0.01635982,
-0.03169853, -0.0033602 , 0.09047844, 0.00030747, 0.11853652,
-0.02870182, -0.01526102, 0.05505067, 0.00993909, -0.07165466,
...
-9.78106782e-02, -2.22669560e-02, 1.21873049e-02, -4.83198799e-02,
5.32377362e-02, -1.90469325e-02, 5.62430918e-02, 1.02650477e-02,
-6.21757433e-02, 7.88027793e-02, 4.91846527e-04, -1.51633881e-02])]
Dim 512 (512,)