Voyage AI Embeddings und Reranker für Suche und RAG
Einführung
In der Vergangenheit wurde KI hauptsächlich genutzt, um Informationen zu analysieren und vorzuschlagen; mit dem Aufkommen generativer KI können wir jedoch nun neue und einzigartige Inhalte erzeugen. Das klingt cool, aber manchmal können die Inhalte irreführend sein.
Hier kommt RAG (Retrieval Augmented Generation) ins Spiel, das die Ausgabe eines großen Sprachmodells im Kontext der Anfrage optimiert. Zilliz und Voyage AI haben sich zusammengeschlossen, um den Aufbau einer RAG-Pipeline zu erleichtern, wie wir später im Artikel sehen werden. Voyage AI bietet domänenspezifische, angepasste Embedding-Modelle und Reranker für die Suche. Einige davon werden wir in diesem Artikel besprechen.
RAG mit Zilliz Cloud Pipelines und Voyage Ai erstellen.png
Embedding-Modelle und Voyage AI
Computer können Informationen aus Daten wie Text oder Bildern nicht verstehen. Wir verwenden Embedding-Modelle, um Computer in die Lage zu versetzen, die Semantik hinter unstrukturierten Daten zu verstehen. Dieser Abschnitt behandelt die Grundlagen von Embedding-Modellen, ihren Nutzen in generativer KI und warum RAG der vorherrschende Ansatz für generative KI in Unternehmen ist.
Ein kurzer Überblick über Embedding-Modelle
Embedding-Modelle sind Deep-Learning-Modelle, die Vektor-Embeddings für gegebene Daten erstellen. Diese Modelle wandeln den bereitgestellten Text, das Bild, die Stimme oder jede Form von nicht-numerischen oder sogar numerischen Daten in eine kompakte Vektordarstellung um. Diese Darstellung, auch bekannt als Vektor-Embedding, ordnet die Informationen einem numerischen Vektorraum zu.
Kodierung unstrukturierter Daten in Vektor-Embeddings
Schwächen generativer KI
Der Einsatz generativer KI auf Unternehmensebene nimmt rasant zu, da sie die faszinierende Fähigkeit besitzt, mühsame Aufgaben zu automatisieren und Ergebnisse mit minimalem Aufwand zu erzeugen. Auch wenn Gen AI uns bei verschiedenen Szenarien in lobenswerter Weise unterstützt, hat sie auch Schwächen. GenAI-Modelle wie ChatGPT sind generische Modelle, die anhand von Millionen oder Billionen von Dateneinträgen aus mehreren Domänen trainiert wurden. Diese Tatsache kann manchmal problematisch sein. Modelle sind probabilistisch und erzeugen das nächste Wort auf Grundlage des bereitgestellten Kontexts. Wenn der Kontext begrenzt oder für das Modell neuer ist, beginnen sie zu halluzinieren. Genau hier glänzt RAG.
RAG und wie es Halluzinationen reduziert
Die RAG-Technik erfordert die Verwendung domänenspezifischer Embedding-Modelle, um die bereitgestellte Anfrage einzubetten. Diese Anfrage wird dann an eine Vektordatenbank übergeben, in der die semantische Suche angewendet wird, um ähnliche kontextuelle Vektor-Embeddings abzurufen. Alle relevanten Dokumente aus der Vektordatenbank und die bereitgestellte Anfrage werden dann an das Modell übergeben. Das Modell nutzt die zusätzlichen Informationen und den Kontext aus der Anfrage, um relevante, aktuelle und genaue Ergebnisse zu formulieren. Auf diese Weise reduziert die RAG-Architektur jegliche Halluzinationen des Modells und ermöglicht ein robusteres und zuverlässigeres LLM.
Die RAG-Architektur
Nachdem wir Embedding-Modelle und ihre Rolle in RAG besprochen haben, sprechen wir nun über einige Embedding-Modelle von Voyage AI. Voyage AI bietet verschiedene angepasste Embedding-Modelle für viele Domänen, um effektive und effiziente RAG-Techniken umzusetzen. Diese Modelle sind mit Vektordatenbanken wie Milvus von Zilliz verbunden, um Vektor-Embeddings im Zusammenhang mit der generierten Anfrage zu speichern und abzurufen.
Voyage AI Embedding-Modelle
Voyage AI bietet viele verschiedene effiziente und effektive domänenspezifische und Allzweck-Embedding-Modelle. Diese Modelle tragen erheblich zu Suche und RAG bei. Sie bieten eine höhere Retrieval-Qualität als die meisten Embedding-Modelle.
Unter mehreren Embedding-Modellen gehören voyage-code-2, voyage-law-2 und voyage-large-2-instruct zu den besten. Voyage AI hat diese Modelle für spezifische Code-, Rechts-, Finanz- und mehrsprachige Domänen entwickelt. Darüber hinaus können wir diese Modelle entsprechend unseren spezifischen Anwendungsfällen anpassen. Werfen wir einen Blick auf ihre neuesten Modelle:
- voyage-code-2: Ein Modell, das versiert darin ist, Code im Zusammenhang mit einer Anfrage mit punktgenauer Genauigkeit bereitzustellen. Die folgende Abbildung zeigt die Leistung von voyage-code-2 für die Code-Retrieval-Aufgabe:
Leistungsanalyse von voyage-code-2.png
- voyage-law-2: Ein Modell, das darauf trainiert wurde, Kontext und Embeddings für juristische Dokumente zu erhalten. Dieses Modell liefert die besten Ergebnisse in Bezug auf juristische Dokumente mit langem Kontext über Domänen hinweg und schneidet bei allgemeinen Korpora über Domänen hinweg besser ab. Die folgenden Abbildungen heben die Leistung von voyage-law-2 hervor:
Leistungsanalyse von voyage-law-2
Die obige Abbildung zeigt die Leistungsfähigkeit der Embedding-Modelle von Voyage AI, die vom Massive Text Embedding Benchmark (MTEB) an die Spitze gesetzt werden.
Reranker und Voyage AI
Wir haben besprochen, wie RAG die Qualität der GenAI-Ausgabe verbessert, indem die Halluzinationen solcher Modelle reduziert werden. Ein kleines Problem hängt jedoch weiterhin mit dem Kontextfenster der GenAI-Modelle zusammen. Das Kontextfenster bezeichnet die maximale Menge an Informationen, die das KI-Modell zu einem bestimmten Zeitpunkt zur Verarbeitung aufnehmen kann. Ein kleineres Fenster bedeutet, dass das Modell weniger Informationen erhält; ein größeres bedeutet höhere Verarbeitungskosten und längere Verarbeitungszeit.
Ein Reranker ordnet die aus Vektordatenbanken abgerufenen Dokumente für optimale Ergebnisse, indem er ihren Relevanzwert mit der bereitgestellten Anfrage berechnet. Das Ranking hilft dabei, die relevantesten (informativen) Dokumente zu filtern, sodass sie in das Kontextfenster passen und die genauesten Ergebnisse generieren.
Während RAG-Techniken Vektor-Embeddings abrufen, um Kontextinformationen bereitzustellen und bei Suchen zu unterstützen, ordnen diese Modelle all diese abgerufenen Embeddings mithilfe eines Relevanzwerts neu, um den LLMs die relevantesten Daten bereitzustellen.
Einfache Reranker-Architektur
Voyage AI Reranker
Voyage AI hat ein Reranker-Modell namens rerank-lite-1 entwickelt. Dieses Voyage-Modell ist ein generalistischer Reranker, der auf Latenz und Qualität optimiert ist. Es hat ein Kontextfenster von 4000 Tokens. Die folgende Abbildung zeigt die Leistung dieses Modells.
Leistungsanalyse von voyage:ranke-lite-1
Voyage Embeddings auf Zilliz Cloud Pipelines verwenden
Zilliz und Voyage AI haben sich zusammengeschlossen, um die Umwandlung unstrukturierter Daten in durchsuchbare Vektor-Embeddings auf Zilliz Cloud zu optimieren.
In diesem Abschnitt wird gezeigt, wie die Zilliz Cloud und die Embedding-Modelle von Voyage AI für eine optimierte Embedding-Erzeugung und -Abfrage integriert werden. Wir zeigen Ihnen außerdem, wie Sie diese Integration und Cohere (das LLM) verwenden, um eine RAG-Anwendung zu erstellen. Legen wir los.
Zilliz Cloud einrichten
Der erste Schritt besteht darin, die Zilliz Cloud einzurichten. Wenn Sie noch kein Zilliz-Cloud-Konto haben, registrieren Sie sich kostenlos.
Nach der ersten Anmeldung wird die folgende Konsole auf dem Bildschirm angezeigt.
Zilliz-Cloud-Konsole zum Erstellen eines Clusters
- Wir werden bei Bedarf einen Cluster erstellen. Zilliz bietet eine kostenlose Stufe zum Lernen, Experimentieren und Prototyping, die später auf verschiedene Produktionspläne migriert werden kann.
Creating a new Cluster in Zilliz.png
- Nach dem Erstellen des neuen Clusters werden alle für die Verbindung erforderlichen Informationen angezeigt.
Connection to the cluster
Die project ID kann über Projects in der oberen Menüleiste abgerufen werden. Suchen Sie das Zielprojekt und kopieren Sie dessen ID in die Spalte Project ID.
Projects Dashboard for Project ID
- Jetzt haben wir alle erforderlichen Bestandteile für unsere Verbindung zum Cluster. Es ist an der Zeit, unsere Pipelines zu erstellen. Wir werden Cohere als LLM für die RAG-Anwendung verwenden. Dafür installieren wir
cohere.
%pip install cohere
Hier sind die Importe, die wir für dieses Notebook benötigen.
import os
import requests
Im folgenden Code haben wir unsere CLOUD_REGION, CLUSTER_ID, API_KEY und PROJECT_ID eingerichtet:
CLOUD_REGION = 'gcp-us-west1'
CLUSTER_ID = 'your CLUSTER_ID'
API_KEY = 'your API_KEY'
PROJECT_ID = 'your PROJECT_ID'
Zilliz Cloud Pipelines
Zilliz Cloud Pipelines wandeln unstrukturierte Daten in eine durchsuchbare Vektorsammlung um und übernehmen dabei Einbettung, Aufnahme, Suche und Löschprozesse. Zilliz Cloud bietet drei Arten von Pipelines:
- Ingestion Pipeline: Wandelt unstrukturierte Daten in durchsuchbare Vektoreinbettungen um und speichert sie in Zilliz Cloud Vector Databases. Sie umfasst verschiedene Funktionen zur Transformation von Eingabefeldern und zur Bewahrung zusätzlicher Informationen für den Abruf.
Search Pipeline: Diese Pipeline ermöglicht semantische Suche, indem sie eine Abfragezeichenfolge in eine Vektoreinbettung umwandelt und die Top-K-ähnlichen Vektoren zusammen mit ihrem entsprechenden Text und ihren Metadaten abruft. Sie erlaubt nur einen Funktionstyp.
Deletion Pipeline: Entfernt angegebene Entitäten aus einer Sammlung und erlaubt nur einen Funktionstyp.
Ingestion Pipeline
In der Ingestion Pipeline können Sie Funktionen angeben, um ihr Verhalten basierend auf den Eingabedaten anzupassen. Derzeit unterstützt sie vier Funktionen:
INDEX_DOC: Nimmt ein Dokument als Eingabe, teilt es in Chunks auf und erzeugt für jeden Chunk eine Vektoreinbettung. Es ordnet ein Eingabefeld vier Ausgabefeldern (doc_name, chunk_id, chunk_text und embedding) in der Sammlung zu.PRESERVE: Speichert benutzerdefinierte Eingaben als zusätzliches skalares Feld in der Sammlung, typischerweise verwendet für Metainformationen wie Publisher-Informationen und Tags.INDEX_TEXT: Verarbeitet Texte, indem jeder Text in eine Vektoreinbettung umgewandelt wird, und ordnet ein Eingabefeld (text_list) zwei Ausgabefeldern (text und embedding) zu.INDEX_IMAGE: Verarbeitet Bilder, indem eine Bildeinbettung generiert wird, und ordnet zwei Eingabefelder (image_url und image_id) zwei Ausgabefeldern (image_id und embedding) zu.
Im folgenden Codeausschnitt verwenden wir die requests-Bibliothek, um die Anfrage an die Zilliz Cloud zu senden. Eine Post-Anfrage umfasst URL, Header und zu sendende Daten. Erstellen wir unseren Header:
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
Wir definieren im folgenden Code unseren collection_name und embedding_service. Der Embedding-Service wird Voyage AI-Modelle verwenden, insbesondere voyage-2, die in Retrieval-Aufgaben, technischer Dokumentation und allgemeinen Anwendungen eine außergewöhnliche Leistung gezeigt haben.
create_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines"
collection_name = 'Documents'
embedding_service = "voyageai/voyage-large-2"
Im folgenden Codeausschnitt definieren wir die Indexfunktion für unsere ingestion_pipeline:
data = {
"name": "ingestion_pipeline",
"description": "Eine Pipeline, die Text-Embeddings generiert und Titelinformationen speichert.",
"type": "INGESTION",
"projectId": PROJECT_ID,
"clusterId": CLUSTER_ID,
"collectionName": collection_name,
"functions": [
{
"name": "index_doc",
"action": "INDEX_DOC",
"language": "ENGLISH",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
print(response.json())
Die pipelineId wird später verwendet, um die Daten in die Datenbank aufzunehmen. Nach diesem Schritt können wir unsere im Cluster erstellte Collection sowie unsere Ingestion-Pipeline sehen:
ingestion_pipe_id = response.json()["data"]["pipelineId"]
print(ingestion_pipe_id)
>> pipe-cf…
Hier ist die in der Cloud erstellte Collection:
In der Cloud erstellte Collection
Und unsere Ingestion-Pipeline sieht so aus:
Ingestion Pipeline in Zilliz Cloud
Such-Pipeline
Such-Pipelines erleichtern die semantische Suche, indem sie eine Abfragezeichenfolge in ein Vektor-Embedding umwandeln und die Top-K-Vektoren der nächsten Nachbarn abrufen. Die Such-Pipeline verfügt über die Funktion SEARCH_DOC_CHUNK, die die Angabe des Clusters und der Collection erfordert, aus der gesucht werden soll.
Zilliz unterstützt viele Funktionen. Hier verwenden wir SEARCH_DOC_CHUNK, das eine Benutzerabfrage entgegennimmt und relevante Dokument-Chunks aus der Wissensdatenbank zurückgibt.
data = {
"projectId": PROJECT_ID,
"name": "search_pipeline",
"description": "Eine Pipeline, die Text empfängt und nach semantisch ähnlichen Dokument-Chunks sucht",
"type": "SEARCH",
"functions": [
{
"name": "search_chunk_text",
"action": "SEARCH_DOC_CHUNK",
"inputField": "query_text",
"clusterId": f"{CLUSTER_ID}",
"collectionName": f"{collection_name}",
"embedding": embedding_service
}
]
}
response = requests.post(create_pipeline_url, headers=headers, json=data)
search_pipe_id = response.json()["data"]["pipelineId"]
Wir haben unsere Ingestion- und Such-Pipelines erstellt. Es ist an der Zeit, diesen Artikel in unsere Ingestion-Pipeline einzufügen und unsere Such-Pipeline auszuführen.
Die Ingestion-Pipeline ausführen
Die Ingestion-Pipeline kann Dateien aus Object Storage Services wie AWS S3 oder Google Cloud Storage (GCS) aufnehmen. Akzeptierte Dateiformate umfassen .txt, .pdf, .md, .html usw. Wir können die Ingestion-Pipeline über die Zilliz-Konsole ausführen. Gehen wir dabei Schritt für Schritt vor.
1. Gehen Sie links zu Pipelines und navigieren Sie zu ingestion_pipeline, wie unten gezeigt:
In der Cloud erstellte Ingestion-Pipeline
2. Nach dem Klicken auf Run werden wir zu folgender Seite weitergeleitet:
Datei in der Ingestion-Pipeline anhängen
Hängen Sie die Textdatei an und führen Sie die Pipeline aus. Nach erfolgreichem Abschluss wird die Textdatei in die Collection geladen. Hier ist die Datenvorschau:
Datenvorschau der Collection
Die Such-Pipeline ausführen
RAG (retrieval augmented generation) hat zwei Hauptkomponenten: den Retriever und das LLM. Einen Retriever zu erstellen ist so einfach wie das Ausführen der Such-Pipeline. Die Such-Pipeline nimmt die Abfrage entgegen und ruft den relevantesten Chunk aus der Datenbank ab. Im folgenden Code nimmt die Funktion retriever die query und topk (die Anzahl der auszuwählenden Dokumente) entgegen und führt die Such-Pipeline aus.
def retriver(question, topk):
run_pipeline_url = f"https://controller.api.{CLOUD_REGION}.zillizcloud.com/v1/pipelines/{search_pipe_id}/run"
data = {
"data": {
"query_text": question
},
"params": {
"limit": topk,
"offset": 0,
"outputFields": [
"chunk_text",
"id",
"doc_name"
],
}
}
response = requests.post(run_pipeline_url, headers=headers, json=data)
return [result['chunk_text'] for result in response.json()['data']['result']]
RAG-Anwendung mit Cohere als LLM
Nach dem Abrufen der Dokumente verwenden wir Cohere als unser LLM. Wir stellen die abgerufenen Dokumente der Cohere-Chat-API in einen Prompt eingebettet bereit und stellen Fragen dazu.
import cohere
co = cohere.Client(api_key="your_api_key")
def chatbot(query, topk):
chunks = retriver(query, topk)
response = co.chat(
model="command-r-plus",
message= f"Given this information: '{[chunk for chunk in chunks]}', generate a response for the following {query}"
)
return response.text
question = "I'm looking for a good model for legal retrieving tasks?"
print(chatbot(question, 2))
Hier ist die Antwort des Chatbots:
Based on the provided information, it seems you are specifically interested in a proficient model in legal retrieving tasks. In that case, the model best suits your needs is "voyage-law-2."
Fazit
Voyage AI bietet domänenspezifisch angepasste Embedding-Modelle und Reranker für die erweiterte Suche. Zilliz Cloud Pipelines integriert Voyage-AI-Modelle nahtlos in Zilliz Cloud und macht die Entwicklung von RAG deutlich effizienter.
In diesem Artikel wurden die beliebten Embedding-Modelle und Reranker von Voyage AI sowie ihre Integration mit Zilliz Cloud besprochen. Außerdem haben wir gezeigt, wie man ein RAG mit Voyage AI, Zilliz Cloud Pipeline und Cohere erstellt.
Weitere Details finden Sie in der Aufzeichnung von Tengyu Mas Vortrag beim Unstructured Data Meetup by Zilliz.
Weiterlesen

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.

Why AI Databases Don't Need SQL
Whether you like it or not, here's the truth: SQL is destined for decline in the era of AI.



