milvus-logo
LFAI
Home
  • Modelos

SPLADE

O SPLADE embedding é um modelo que oferece representações altamente esparsas para documentos e consultas, herdando propriedades desejáveis dos modelos bag-of-words (BOW), tais como correspondência exacta de termos e eficiência.

Milvus integra-se com o modelo SPLADE através da classe SpladeEmbeddingFunction. Esta classe fornece métodos para codificar documentos e consultas e devolver os embeddings como vectores esparsos compatíveis com a indexação Milvus.

Para utilizar esta funcionalidade, instale as dependências necessárias:

pip install --upgrade pymilvus
pip install "pymilvus[model]"

Para instanciar a SpladeEmbeddingFunction, use o comando:

from pymilvus import model

splade_ef = model.sparse.SpladeEmbeddingFunction(
    model_name="naver/splade-cocondenser-selfdistil", 
    device="cpu"
)

Parâmetros:

  • nome_do_modelo(string)

    O nome do modelo SPLADE a utilizar para a codificação. As opções válidas são naver/splade-cocondenser-ensembledistil (predefinição), naver/splade_v2_max, naver/splade_v2_distil e naver/splade-cocondenser-selfdistil. Para mais informações, consulte Reproduzir com modelos.

  • dispositivo(string)

    O dispositivo a ser usado, com cpu para a CPU e cuda:n para o enésimo dispositivo GPU.

Para criar embeddings para documentos, use o método 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)

O resultado esperado é semelhante ao seguinte:

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)

Para criar embeddings para consultas, utilize o método 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)

O resultado esperado é semelhante ao seguinte:

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)

Traduzido porDeepL

Tabela de conteúdos

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?