SPLADE
SPLADE embedding è un modello che offre rappresentazioni altamente rade per documenti e query, ereditando proprietà desiderabili dai modelli bag-of-words (BOW) come la corrispondenza esatta dei termini e l'efficienza.
Milvus si integra con il modello SPLADE attraverso la classe SpladeEmbeddingFunction. Questa classe fornisce metodi per codificare documenti e query e restituire le incorporazioni come vettori sparsi compatibili con l'indicizzazione di Milvus.
Per utilizzare questa funzione, installare le dipendenze necessarie:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Per istanziare la SpladeEmbeddingFunction, utilizzare il comando:
from pymilvus import model
splade_ef = model.sparse.SpladeEmbeddingFunction(
model_name="naver/splade-cocondenser-selfdistil",
device="cpu"
)
Parametri:
nome_modello(stringa)
Il nome del modello SPLADE da utilizzare per la codifica. Le opzioni valide sono naver/splade-cocondensatore-ensembledistil (predefinito), naver/splade_v2_max, naver/splade_v2_distil e naver/splade-cocondensatore-selfdistil. Per ulteriori informazioni, fare riferimento a Giocare con i modelli.
dispositivo(stringa)
Il dispositivo da usare, con cpu per la CPU e cuda:n per l'ennesimo dispositivo GPU.
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 = splade_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(docs_embeddings)[0].shape)
Il risultato atteso è simile al seguente:
Embeddings: (0, 2001) 0.6392706036567688
(0, 2034) 0.024093208834528923
(0, 2082) 0.3230178654193878
...
(2, 23602) 0.5671860575675964
(2, 26757) 0.5770265460014343
(2, 28639) 3.1990697383880615
Sparse dim: 30522 (1, 30522)
Per creare embeddings per le query, utilizzare il metodo encode_queries():
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = splade_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# since the output embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse dim:", splade_ef.dim, list(query_embeddings)[0].shape)
Il risultato atteso è simile al seguente:
Embeddings: (0, 2001) 0.6353746056556702
(0, 2194) 0.015553371049463749
(0, 2301) 0.2756537199020386
...
(1, 18522) 0.1282549500465393
(1, 23602) 0.13133203983306885
(1, 28639) 2.8150033950805664
Sparse dim: 30522 (1, 30522)