milvus-logo
LFAI
Home
  • Modelos

SPLADE

La incrustaciónSPLADE es un modelo que ofrece representaciones altamente dispersas para documentos y consultas, heredando propiedades deseables de los modelos de bolsa de palabras (BOW) como la coincidencia exacta de términos y la eficiencia.

Milvus se integra con el modelo SPLADE a través de la clase SpladeEmbeddingFunction. Esta clase proporciona métodos para codificar documentos y consultas y devolver las incrustaciones como vectores dispersos compatibles con la indexación Milvus.

Para utilizar esta función, instale las dependencias necesarias:

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

Para instanciar la SpladeEmbeddingFunction, utilice el comando:

from pymilvus import model

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

Parámetros:

  • nombre_modelo(cadena)

    El nombre del modelo SPLADE a utilizar para la codificación. Las opciones válidas son naver/splade-cocondenser-ensembledistil(por defecto), naver/splade_v2_max, naver/splade_v2_distil y naver/splade-cocondenser-selfdistil. Para más información, consulte Jugar con modelos.

  • dispositivo(cadena)

    El dispositivo a utilizar, con cpu para la CPU y cuda:n para el enésimo dispositivo GPU.

Para crear incrustaciones para documentos, utilice el 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)

El resultado esperado es similar al siguiente:

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 crear incrustaciones de consultas, utiliza el 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)

El resultado esperado es similar al siguiente:

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)

Traducido porDeepL

Tabla de contenidos

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?