SPLADE
L'intégrationSPLADE est un modèle qui offre des représentations très éparses pour les documents et les requêtes, héritant des propriétés souhaitables des modèles de sacs de mots (BOW), telles que la correspondance exacte des termes et l'efficacité.
Milvus s'intègre au modèle SPLADE via la classe SpladeEmbeddingFunction. Cette classe fournit des méthodes permettant d'encoder les documents et les requêtes et de renvoyer les embeddings sous forme de vecteurs épars compatibles avec l'indexation Milvus.
Pour utiliser cette fonctionnalité, installez les dépendances nécessaires :
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Pour instancier la SpladeEmbeddingFunction, utilisez la commande :
from pymilvus import model
splade_ef = model.sparse.SpladeEmbeddingFunction(
model_name="naver/splade-cocondenser-selfdistil",
device="cpu"
)
Paramètres:
nom_modèle(chaîne)
Le nom du modèle SPLADE à utiliser pour l'encodage. Les options valides sont naver/splade-cocondenseur-ensembledistil (par défaut), naver/splade_v2_max, naver/splade_v2_distil et naver/splade-cocondenseur-selfdistil. Pour plus d'informations, reportez-vous à la section Jouer avec les modèles.
dispositif(chaîne)
Le périphérique à utiliser, avec cpu pour le CPU et cuda:n pour le nième périphérique GPU.
Pour créer des embeddings pour des documents, utilisez la méthode 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)
Le résultat attendu est similaire à ce qui suit :
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)
Pour créer des embeddings pour les requêtes, utilisez la méthode 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)
Le résultat attendu est similaire à ce qui suit :
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)