Microsoft

Microsoft / e5-large-v2

Ideal für gute Leistung bei gleichzeitiger Einhaltung von Open Source und minimalen Hardwareanforderungen. Funktioniert gut bei unübersichtlichen Daten. Gut geeignet für kurze Abfragen, die mittelgroße Textpassagen (1-2 Absätze) zurückgeben sollen.

Einführung in das e5-large-v2-Einbettungsmodell

e5-large-v2" ist eine verbesserte Version des "e5-base-v2"-Modells, das bei verschiedenen Aufgaben der Verarbeitung natürlicher Sprache (NLP), einschließlich der semantischen Suche, der retrieval augmented generation (RAG) und des Clustering, eine bessere Leistung bietet. Es basiert auch auf schwach überwachtem kontrastivem Vortraining und ist besonders effektiv bei der Verarbeitung unübersichtlicher Daten und kurzer Abfragen, die Textpassagen mittlerer Länge liefern.

Das Modell erfordert, dass die Eingabetexte mit dem Präfix "query: " für Abfragen und "passage: " für Passagen. Es kann mit Hilfe von Bibliotheken wie Hugging Face's Transformers und Sentence Transformers verwendet werden, was eine einfache Integration in Anwendungen ermöglicht.

Vergleich zwischen e5-large-v2 und e5-base-v2:

Merkmal/Fähigkeite5-base-v2e5-large-v2
Schichten1224
Einbettungsgröße7681024
Max Token512512
LeistungGut für allgemeine TexteinbettungsaufgabenStarke Leistung bei Benchmarks wie BEIR und MTEB, oft bessere Leistung als kleinere Modelle
Eingabe-Präfix-Anforderung"query: " für Abfragen, "passage: " für Passagen"query: " für Abfragen, "passage: " für Passagen

So erstellen Sie Vektoreinbettungen mit dem e5-large-v2-Modell

Es gibt zwei primäre Möglichkeiten, Vektoreinbettungen zu erstellen:

  1. PyMilvus: das Python-SDK für Milvus, das das Modell "e5-large-v2" nahtlos integriert.
  2. SentenceTransformer-Bibliothek: die Python-Bibliothek sentence-transformer.

Sobald die Vektoreinbettungen generiert sind, können sie in der Zilliz Cloud (einem vollständig verwalteten Vektordatenbankdienst, der von Milvus betrieben wird) gespeichert und für die semantische Ähnlichkeitssuche verwendet werden. Dies sind die vier wichtigsten Schritte:

  1. Anmelden für ein kostenloses Zilliz Cloud-Konto.
  2. Richten Sie einen serverlosen Cluster ein und erhalten Sie den Public Endpoint and API Key.
  3. Erstellen Sie eine Vektorsammlung und fügen Sie Ihre Vektoreinbettungen ein.
  4. Lassen Sie eine semantische Suche auf den gespeicherten Einbettungen laufen.

Vektoreinbettungen über PyMilvus generieren und in die Zilliz Cloud für die semantische Suche einfügen.

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction
von pymilvus importieren MilvusClient

ef = SentenceTransformerEmbeddingFunction("intfloat/e5-large-v2")
docs = [
   "Künstliche Intelligenz wurde 1956 als akademische Disziplin gegründet.",
   "Alan Turing war die erste Person, die substantielle Forschungen im Bereich der KI durchführte.",
   "Geboren in Maida Vale, London, wuchs Turing in Südengland auf."
]
# Einbettungen für Dokumente generieren
docs_embeddings = ef(docs)

queries = ["Wann wurde die künstliche Intelligenz erfunden",
          "Wo wurde Alan Turing geboren?"]
# Einbettungen für Abfragen generieren
abfrage_einbettungen = ef(abfragen)

# Verbindung zur Zilliz-Cloud mit öffentlichem Endpunkt und API-Schlüssel
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "Dokumente"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Weitere Informationen finden Sie in unserer PyMilvus Embedding Model Dokumentation.

Vektoreinbettungen über die SentenceTransformer-Bibliothek generieren und in die Zilliz Cloud für die semantische Suche einfügen

from sentence_transformers import SentenceTransformer
von pymilvus importieren MilvusClient

model = SentenceTransformer("intfloat/e5-large-v2")

docs = [
   "Künstliche Intelligenz wurde 1956 als akademische Disziplin gegründet.",
   "Alan Turing war die erste Person, die umfangreiche Forschungen im Bereich der künstlichen Intelligenz durchführte.",
   "Geboren in Maida Vale, London, wuchs Turing in Südengland auf."
]
# Einbettungen für Dokumente generieren
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["Wann wurde die künstliche Intelligenz begründet",
          "Wo wurde Alan Turing geboren?"]
# Einbettungen für Abfragen generieren
abfrage_einbettungen = model.encode(abfragen, normalize_einbettungen=True)

# Verbindung zur Zilliz Cloud mit öffentlichem Endpunkt und API-Schlüssel
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "Dokumente"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=1024,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Weitere Informationen finden Sie in der SentenceTransformer-Dokumentation.