milvus-logo
LFAI
Casa
  • Modelli

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)

Tradotto daDeepLogo

Tabella dei contenuti

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?