SPLADE
SPLADE Embedding ist ein Modell, das hochgradig spärliche Repräsentationen für Dokumente und Abfragen bietet und wünschenswerte Eigenschaften von Bag-of-Words (BOW)-Modellen erbt, wie z.B. exakte Termübereinstimmung und Effizienz.
Milvus ist mit dem SPLADE-Modell über die Klasse SpladeEmbeddingFunction integriert. Diese Klasse bietet Methoden zur Kodierung von Dokumenten und Abfragen und zur Rückgabe der Einbettungen als spärliche Vektoren, die mit der Milvus-Indizierung kompatibel sind.
Um diese Funktion zu nutzen, installieren Sie die notwendigen Abhängigkeiten:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Um die SpladeEmbeddingFunction zu instanziieren, verwenden Sie den Befehl:
from pymilvus import model
splade_ef = model.sparse.SpladeEmbeddingFunction(
model_name="naver/splade-cocondenser-selfdistil",
device="cpu"
)
Parameter:
model_name(Zeichenkette)
Der Name des SPLADE-Modells, das für die Kodierung verwendet werden soll. Gültige Optionen sind naver/splade-cocondenser-ensembledistil (Standard), naver/splade_v2_max, naver/splade_v2_distil, und naver/splade-cocondenser-selfdistil. Weitere Informationen finden Sie unter Mit Modellen spielen.
Gerät(Zeichenkette)
Das zu verwendende Gerät, mit cpu für die CPU und cuda:n für das n-te GPU-Gerät.
Um Einbettungen für Dokumente zu erstellen, verwenden Sie die Methode 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)
Die erwartete Ausgabe ist ähnlich wie die folgende:
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)
Um Einbettungen für Abfragen zu erstellen, verwenden Sie die Methode 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)
Die erwartete Ausgabe ist ähnlich wie die folgende:
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)