Pressemitteilungen
Modelle
API
keyboard_arrow_down
Leser
Lesen Sie URLs und suchen Sie im Internet nach fundierteren LLMs.
Einbettungen
Multimodale und mehrsprachige Einbettungen von Weltklasse.
Reranker
Neural Retriever der Weltklasse zur Maximierung der Suchrelevanz.
MCP terminalCLIarticlellms.txtsmart_toyAgentendata_objectSchemamenu_bookDokumente



Einloggen
login
RAG im Kontext
Anatomie eines RAG-Systems
Installation der Voraussetzungen
Verbindung zu Mistral-Instruct über die Hugging Face Inference API
Informationsabruf mit Qdrant und Jina Embeddings
Jina AI und Qdrant
Kontaktieren Sie uns
Tech-Blog
März 04, 2024

Ein RAG-System mit Jina Embeddings und Qdrant aufbauen

Ein RAG-System mit Jina Embeddings v2, Qdrant-Vektordatenbank, LlamaIndex und Mistral LLM erstellen.
Promotional graphic with "EMBEDDINGS 2" and Drant logo separated by a red cross, symbolizing a partnership.
Scott Martens
Scott Martens • 13 Minuten gelesen

Retrieval-augmented Generation ist eine schnell wachsende Gruppe von Techniken, die ursprünglich als Erweiterung für Large Language Models (LLMs) konzipiert wurden, aber zunehmend als alternatives Paradigma gesehen werden, das die Rolle von KI-Modellen völlig neu denkt.

Wir zeigen Ihnen, wie Sie eine grundlegende RAG-Engine mit dem LlamaIndex Framework, einem Open-Source Mistral LLM, Jina Embeddings v2 und der KI-bereiten Vektordatenbank von Qdrant erstellen können.

tagRAG im Kontext

In einem RAG-System ist die Rolle des KI-Modells zwar weiterhin zentral, aber deutlich eingeschränkter. Anstatt Prompts aus seinem internen Wissen zu beantworten, das aus seinen Trainingsdaten stammt, werden ihm die relevanten Informationen in seinem Prompt präsentiert. Die Aufgabe des Modells besteht dann darin, Informationen zu verstehen und in eine Ausgabe zu synthetisieren.

Dies nutzt die Stärken von KI-Modellen und minimiert ihre Schwächen.

Zum Beispiel könnten wir dem Mistral-Instruct Model folgenden Prompt geben:

Answer the query. Please be brief, concise, and complete.
Query: Why is Taylor Swift planning to attend the Superbowl?
Answer:

Als ich das tat, antwortete das Modell:

I don't have real-time information. However, as of my last update, 
Taylor Swift is not officially confirmed to attend or perform at 
the Superbowl. If there are any updates, I recommend checking the 
latest news sources.

Large Language Models sind teuer in der Aktualisierung und im Neutraining, sodass ihre internen Informationen nie vollständig aktuell sein können.

Darüber hinaus sind Large Language Models dafür bekannt zu "halluzinieren", d.h. plausible Antworten zu erfinden, die teilweise oder vollständig falsch sein können und überprüft werden müssen.

Answer the query. Please be brief, concise, and complete.
Query: What was Weird Al Yankovic's first Taylor Swift parody?
Answer:

Weird Al Yankovic's first Taylor Swift parody was "TMZ," a spoof 
of Swift's song "Blank Space." The parody was released in 2014 
as part of Yankovic's album "Mandatory Fun." The song humorously 
addresses the obsession with celebrity gossip and scandals, as 
reported by the tabloid news website TMZ.

Weird Al Yankovics TMZ wurde 2011 auf dem Album Alpocalypse veröffentlicht und ist eine Parodie von Swifts You Belong with Me.

Die Natur der neuronalen Netze macht Halluzinationen schwierig, wenn nicht unmöglich, vollständig zu verhindern und untergräbt stark jeden Plan, KI-Modelle als Informationsquellen zu nutzen.

In den Worten von Sam Altman, CEO von OpenAI:

"Ich denke, die Leute machen einen großen Fehler, wenn sie diese Modelle [LLMs] als Datenbank betrachten. [...] Es wird irgendwie funktionieren. Aber es ist die teuerste, langsamste und ungenaueste Datenbank der Welt."

RAG minimiert die Abhängigkeit vom internen Faktenwissen eines KI-Modells und nutzt seine größten Stärken: Verständnis natürlicher Sprache und flüssige Sprachgenerierung.

Nehmen wir ein weiteres Beispiel für eine Frage, die Mistral-Instruct nicht beantworten kann:

Answer the query. Please be brief, concise, and complete.

Query: What is the title of Taylor Swift's next album?
Answer:

As of the time I am providing this answer, Taylor Swift has 
not yet announced the title of her next album. She has released 
several re-recorded albums, but the title of her next original 
album remains unknown. I recommend checking her official social 
media channels or website for the latest updates.

Ein RAG-System könnte eine Datenbank mit aktuellen Nachrichten haben oder im Internet nach Texten zum Titel von Taylor Swifts nächstem Album suchen. Dann würde es die gefundenen Texte in den Prompt einfügen.

Nehmen wir an, es identifiziert diesen AP-Artikel als relevant für die Anfrage und erstellt den folgenden Prompt:

Context information is below.
---------------------
February 6, 2024
LOS ANGELES (AP) — Forget her "Reputation." Taylor Swift has a 
whole new album coming out.

Accepting the Grammy for best pop vocal album on Sunday night, 
Taylor said she'd been keeping a secret for two years.

"My brand-new album comes out April 19. It's called 'The Tortured 
Poets Department.' I'm going to go and post the cover right now 
backstage," she announced.

And so she did.

---------------------
Given the context information and not prior knowledge, answer the query. 
Please be brief, concise, and complete.
If the context information does not contain an answer to the query, 
respond with "No information".
Query: What is the title of Taylor Swift's next album?
Answer:

Mistral-Instruct antwortete:

The title of Taylor Swift's next album is 'The Tortured Poets Department'.

Diese Art des Prompting reduziert auch die Wahrscheinlichkeit von Halluzinationen dramatisch. Zum Beispiel:

Context information is below.
---------------------
Alpocalypse is the thirteenth studio album by American parody 
musician "Weird Al" Yankovic, released on June 21, 2011.

Track List

1. Perform This Way (Parody of "Born This Way" by Lady Gaga)
2. CNR
3. TMZ (Parody of "You Belong with Me" by Taylor Swift)
4. Skipper Dan
5. Polka Face (Polka medley including songs by artists such as 
   Lady Gaga, Justin Bieber, Britney Spears, Ke$ha, and others)
6. Craigslist
7. Party in the CIA (Parody of "Party in the U.S.A." by Miley 
   Cyrus)
8. Ringtone
9. Another Tattoo (Parody of "Nothin' on You" by B.o.B featuring 
   Bruno Mars)
10. If That Isn't Love
11. Whatever You Like (Parody of "Whatever You Like" by T.I.)
12. Stop Forwarding That Crap to Me

---------------------
Given the context information and not prior knowledge, answer the 
query. Please be brief, concise, and complete.
If the context information does not contain an answer to the query, 
respond with "No information".
Query: What was Weird Al Yankovic's first Taylor Swift parody, what 
year was it released, and what song was he parodying?
Answer:

Weird Al Yankovic's first Taylor Swift parody was "TMZ," and it was 
released in 2011. He was parodying "You Belong with Me" by Taylor 
Swift.

tagAnatomie eines RAG-Systems

Ein RAG-System hat mindestens zwei Komponenten:

  • Ein generatives KI-Modell
  • Ein Informationsabrufsystem

In diesem Artikel verwenden wir Mistral-Instruct als generatives KI-Modell und greifen darauf über die Hugging Face Inference API zu. Wir werden die Qdrant Vektordatenbank und Jina Embeddings gemeinsam für das Informationsabrufsystem verwenden.

Als Datenquelle verwenden wir den National Artificial Intelligence Research and Development Strategic Plan 2023 Update, der im Mai 2023 vom National Science and Technology Council veröffentlicht wurde, einem Gremium, das den US-Präsidenten in wissenschaftlichen und technischen Fragen berät. Dieses etwa 25.000 Wörter umfassende Dokument ist ein Politik- und Strategieplanungsdokument für die amerikanische KI-Politik und -Entwicklung.

Es ist auch ein klassisches "tl;dr" Regierungsdokument. Der Großteil ist sehr langweilig, und wenn Sie nicht direkt betroffen sind oder ein enges Interesse an diesem Bereich haben, werden Sie es wahrscheinlich nicht lesen. Aber Sie möchten vielleicht trotzdem wissen, was darin steht.

Dieser Artikel führt Sie durch die Schritte zur Erstellung eines RAG-Systems, das Fragen zum Text und seinen Inhalten beantworten kann.

tagInstallation der Voraussetzungen

Stellen Sie zunächst sicher, dass Sie alle relevanten Python-Bibliotheken installiert haben. Führen Sie in Ihrer Python-Umgebung Folgendes aus:

pip install llama-index qdrant-client 
pip install pdfminer.six llama-index-vector-stores-qdrant
pip install llama-index-llms-openai llama-index-embeddings-jinaai 
pip install llama-index-llms-huggingface "huggingface_hub[inference]"

Wir verwenden LlamaIndex, um ein RAG-System um das Mistral-Instruct Large Language Model herum aufzubauen und pdfminer.six zur Verarbeitung der PDF-Datei in einen Qdrant Vector Store.

tagVerbindung zu Mistral-Instruct über die Hugging Face Inference API

Zuerst richten wir das LLM ein. Sie benötigen Zugang zur Hugging Face Inference API, einschließlich eines Zugriffstokens. Wenn Sie ein Hugging Face-Konto haben, können Sie einen Token von Ihrer Kontoeinstellungsseite erhalten.

Wenn Sie kein Konto haben, erstellen Sie zunächst eines und dann einen Zugriffstoken.

Speichern Sie Ihren Token in einer Variable zur späteren Verwendung:

hf_inference_api_key = '<your HuggingFace Inference API token>'

Als Nächstes erstellen wir eine Prompt-Vorlage:

from llama_index.core import PromptTemplate

qa_prompt_tmpl = (
    "Context information is below.\n"
    "---------------------\n"
    "{context_str}\\n"
    "---------------------\n"
    "Given the context information and not prior knowledge, "
    "answer the query. Please be brief, concise, and complete.\n"
    "If the context information does not contain an answer to the query, "
    "respond with \"No information\".\n"
    "Query: {query_str}\n"
    "Answer: "
)
qa_prompt = PromptTemplate(qa_prompt_tmpl)

Diese Vorlage weist das LLM an, nur die im Prompt bereitgestellten Kontextinformationen zu verwenden, um Fragen zu beantworten. Dieser Prompt hat sich bei der Arbeit mit Mistral-Instruct für uns bewährt, aber Sie können mit anderen Formulierungen experimentieren, um zu sehen, was für Ihren Anwendungsfall funktioniert.

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

mixtral_llm = HuggingFaceInferenceAPI(
    model_name="mistralai/Mixtral-8x7B-Instruct-v0.1", 
    token=hf_inference_api_key
)

Zum Schluss erstellen und initialisieren wir ein Objekt für das LlamaIndex-Framework, das die Verbindung zu Mistral-Instruct enthält. Der folgende Code stammt aus dem vorherigen Beitrag über die Erstellung von RAG-Systemen mit LlamaIndex.

Dies speichert die Verbindung zum Mistral LLM in der Variable mistral_llm.

tagInformationsabruf mit Qdrant und Jina Embeddings

Um das Abrufsystem einzurichten, benötigen Sie einen Jina Embeddings API-Schlüssel. Sie können einen kostenlosen Schlüssel mit einem vorausbezahlten Budget von 1 Million Tokens auf der Jina Embeddings Website erhalten.

Embedding API
Start with 1M free tokens. Top-performing, 8192 context length bilingual embeddings for your search and RAG systems.

Speichern Sie Ihren Jina Embeddings-Schlüssel in einer Variable zur späteren Verwendung:

jina_emb_api_key = "<your Jina Embeddings API key>"

Erstellen Sie dann ein Connector-Objekt mit LlamaIndex für den Jina Embeddings-Server und wählen Sie speziell das englische monolinguale Modell:

from llama_index.embeddings.jinaai import JinaEmbedding

jina_embedding_model = JinaEmbedding(
    api_key=jina_emb_api_key,
    model="jina-embeddings-v2-base-en",
)

tagTextdaten laden

Als Nächstes laden wir das Dokument und teilen es in Absätze auf. Zuerst laden wir die PDF von der White House Website in die Variable pdf_data:

import urllib.request

uri = "https://www.whitehouse.gov/wp-content/uploads/2023/05/National-Artificial-Intelligence-Research-and-Development-Strategic-Plan-2023-Update.pdf"
pdf_data = urllib.request.urlopen(uri).read()

Als Nächstes verarbeiten wir die PDF Seite für Seite, extrahieren den Text und teilen ihn dann in Absätze auf, indem wir an doppelten Zeilenumbrüchen trennen. Diese werden in der Liste text_paras gespeichert:

import regex as re
from io import BytesIO, StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser

text_paras = []
parser = PDFParser(BytesIO(pdf_data))
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
for page in PDFPage.create_pages(doc):
    output_string = StringIO()
    device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    interpreter.process_page(page)
    page_text = output_string.getvalue()
    text_paras.extend(re.split(r'\n\s*\n', page_text))

Überprüfen Sie, ob alles geladen wurde:

assert len(text_paras) == 615

Als Nächstes wandeln wir diese Liste von kurzen Texten in LlamaIndex Document-Objekte um:

from llama_index.core.readers import StringIterableReader

rag_docs = StringIterableReader().load_data(text_paras)

Und Sie können den Text inspizieren:

print(rag_docs[0].text)

Ergebnis:

NATIONAL ARTIFICIAL INTELLIGENCE 
RESEARCH AND DEVELOPMENT 
STRATEGIC PLAN 
2023 UPDATE

tagEinrichten einer Qdrant Vector-Datenbank

In diesem Artikel verwenden wir die Qdrant Vector Search Cloud zur Implementierung der RAG-System-Datenbank. Die kostenlose Stufe von Qdrant enthält 1 GB Speicherplatz, was für dieses Tutorial mehr als ausreichend ist.

Sie müssen zunächst ein Konto auf der Qdrant Cloud-Website erstellen, bevor Sie fortfahren.

Vector Search Database | Qdrant Cloud
Managed cloud solution of the Qdrant vector search engine. Cloud-native vector database for high performant vector similarity search.
Qdrant Cloud

Sobald Sie ein Konto haben und eingeloggt sind, müssen Sie einen Cluster erstellen. Folgen Sie den "Quick Start"-Anweisungen auf der Qdrant Website, um einen kostenlosen Cluster einzurichten und eine API sowie den Namen des Qdrant-Hostservers zu erhalten.

Quickstart - Qdrant
Qdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.
Edit on GitHub

Speichern Sie den Schlüssel und Hostnamen in Variablen:

qdrant_api_key = "<your API key>"
qdrant_server = "https://<your server>"

Als Nächstes müssen wir die relevanten Komponenten aus den Paketen qdrant_client und llama_index importieren:

import qdrant_client
from llama_index.vector_stores.qdrant import QdrantVectorStore

client = qdrant_client.QdrantClient(qdrant_server, api_key=qdrant_api_key)
vector_store = QdrantVectorStore(client=client, collection_name="NTSC")

Dies erstellt eine Sammlung namens NTSC in Ihrem kostenlosen Cluster.

In der Qdrant-Dokumentation finden Sie Informationen zum Aufbau eines lokalen Datenspeichers im Speicher oder auf der Festplatte sowie zum Hosten Ihrer eigenen Qdrant-Server-Instanz in einem Docker-Container über eine Web-API.

tagDas RAG-System vervollständigen

Nun werden wir diese Komponenten mit Boilerplate-Code für LlamaIndex zu einem vollständigen RAG-System zusammenfügen:

from llama_index.core.query_engine import RetrieverQueryEngine
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.storage.storage_context import StorageContext
from llama_index.core import (
		VectorStoreIndex,
		ServiceContext,
		get_response_synthesizer,
)

# set up the service and storage contexts
service_context = ServiceContext.from_defaults(
    llm=mixtral_llm, embed_model=jina_embedding_model
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)

# create an index
index = VectorStoreIndex.from_documents(
    rag_docs, storage_context=storage_context, service_context=service_context
)

# configure retriever
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=2,
)

# configure response synthesizer
response_synthesizer = get_response_synthesizer(
    service_context=service_context,
    text_qa_template=qa_prompt,
    response_mode="compact",
)

# assemble query engine
query_engine = RetrieverQueryEngine(
    retriever=retriever,
    response_synthesizer=response_synthesizer,
)

Dieses System verwendet Jina Embeddings, um die Absätze aus unserer Textquelle zu indexieren und wird die zwei besten Übereinstimmungen in den Kontext jedes Prompts einfügen. Um beispielsweise auf die drei besten zu ändern, modifizieren Sie einfach die VectorIndexRetriever-Initialisierung oben mit einem anderen similarity_top_k-Parameter:

# configure retriever
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=3,
)

Jetzt ist das System einsatzbereit.

tagEin Dokument abfragen

Versuchen wir eine einfache Abfrage:

response = query_engine.query("""
What is the Biden Administration's policy with regard to AI? 
""")
print(response.response)

Das Ergebnis (Ihres könnte anders aussehen):

The Biden Administration prioritizes responsible AI systems that 
are ethical, trustworthy, and safe, and serve the public good. 
The Administration has committed to substantial funding for AI 
R&D, and has established the National AI Initiative Office to 
coordinate AI activities across the federal government. 

The Administration's AI policy focuses on developing evaluative
techniques for AI, workforce development, public-private
partnerships, and international collaboration in AI research.

Oder etwas Spezifischeres:

response = query_engine.query("""
What protections does the AI Bill of Rights propose to offer?
""")

print(response.response)
The AI Bill of Rights proposes five core protections: Safe and 
Effective Systems; Algorithmic Discrimination Protections; Data 
Privacy; Notice and Explanation; and Human Alternatives, 
Consideration, and Fallback.

Oder sogar sehr spezifisch:

response = query_engine.query("Who is Kei Koizumi?")
print(response.response)
Kei Koizumi is the Principal Deputy Director for Policy at the Office 
of Science and Technology Policy (OSTP).

Sie können auch fantasievollere Fragen stellen:

response = query_engine.query("""
What rights will AI's receive under President Biden's proposed 
AI Bill of Rights?
""")
print(response.response)
The proposed AI Bill of Rights does not grant rights to AI systems, but 
rather outlines principles to ensure that AI technologies are 
developed and used in a manner that respects human rights and values. 
The principles include safety, transparency, fairness, disclosure, 
data privacy, non-discrimination, and the ability for individuals to 
opt out of certain AI systems.
response = query_engine.query("""
Why is President Biden's proposing an AI Bill of Rights?
Does AI really need rights?
""")
print(response.response)
President Biden's proposed AI Bill of Rights aims to ensure that AI 
technologies are developed and used ethically, legally, and with 
societal considerations in mind. The Bill of Rights is not granting 
"rights" to AI, but rather setting guidelines for the responsible 
development and deployment of AI systems to protect individuals and 
communities from potential negative impacts.
response = query_engine.query("""
Has Donald Trump weighed in on AI?
Will he Make Humans Great Again?
""")
print(response.response)
No information. The context information does not mention Donald 
Trump's views on AI.

tagJina AI und Qdrant

Das 8k-Token-Kontextfenster von Jina Embeddings macht es besonders gut geeignet für Retrieval-Augmented Generation, da es mit viel größeren Textblöcken arbeiten kann. Während andere RAG-Anwendungen oft einzelne Sätze oder Satzpaare speichern müssen, konnten wir in diesem Tutorial ganze Absätze verwenden, ohne uns um deren Größe sorgen zu müssen.

Dies reduziert die Anzahl der Textelemente, die gespeichert werden müssen, um die gleiche Information zu übermitteln, senkt die Rechenkosten, spart Speicher und macht das Abrufen schneller.

Qdrants Vektordatenbank ist einfach zu konfigurieren, schnell und kosteneffektiv, und wie Sie gesehen haben, benötigt man nur wenige Zeilen Python-Code, um sie in ein RAG-System zu integrieren.

Mehr über Qdrants KI-bereite Datenbank und Cloud-Angebote erfahren Sie auf der Website.

Qdrant - Vector Database
Qdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.
Vector Database

tagKontaktieren Sie uns

Jina AI ist bestrebt, zuverlässige, erschwingliche KI-Technologien für Unternehmen jeder Größe und Art bereitzustellen. Wir würden gerne von Ihren Anwendungsfällen hören und Ihnen helfen, KI in Ihre Geschäftsprozesse zu integrieren. Weitere Informationen über die Angebote von Jina AI und Kontaktmöglichkeiten finden Sie auf der Jina AI Website oder treten Sie unserer Community auf Discord bei.

Jina AI - Best Embeddings and Perfect Prompts
Jina AI provides best-in-class embedding API and prompt optimizer, easing the development of multimodal AI applications.
Best Embeddings and Perfect Prompts
Join the Jina AI Discord Server!
Check out the Jina AI community on Discord - hang out with 4493 other members and enjoy free voice and text chat.
Discord
Kategorien:
Tech-Blog
rss_feed

Weiterlesen
März 11, 2026 • 7 Minuten gelesen
Bootstrapping von Audio-Embeddings aus multimodalen LLMs
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
März 06, 2026 • 6 Minuten gelesen
Identifizierung von Einbettungsmodellen anhand numerischer Rohwerte
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
September 09, 2025 • 11 Minuten gelesen
Multimodale Vektormodelle in Llama.cpp und GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
Büros
location_on
Sunnyvale, Kalifornien
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, USA
location_on
Berlin, Deutschland
Prinzessinnenstraße 19-20, 10969 Berlin, Deutschland
Stiftung durchsuchen
Leser
Einbettungen
Reranker
Jina API-Schlüssel abrufen
Ratenbegrenzung
API-Status
Unternehmen
Über uns
Kontaktieren Sie unseren Vertrieb
Pressemitteilungen
Praktikantenprogramm
Jina-Logo herunterladen
open_in_new
Elastic-Logo herunterladen
open_in_new
Bedingungen
Sicherheit
Terms & amp; Bedingungen
Privatsphäre
Cookie-Einstellungen
email
Jina AI von Elastic © 2020-2026.