AI Personal Learning
und praktische Anleitung
Ali - bemalter Frosch

Native RAG-Anwendungen mit DeepSeek R1 und Ollama

kurz

Dieses Dokument beschreibt die Verwendung des DeepSeek R1 und Ollama die Erstellung lokalisierter RAG-Anwendungen (Retrieval Augmented Generation). Es ist auch eine gute Möglichkeit, das Beste aus dem Aufbau einer lokalen RAG-Anwendung mit LangChain Der Nachtrag.

Wir werden den gesamten Implementierungsprozess anhand von Beispielen demonstrieren, einschließlich Dokumentenverarbeitung, Vektorspeicherung, Modellaufrufe und andere wichtige Schritte. Dieses Tutorium verwendet DeepSeek-R1 1.5B als Basissprachmodell. In Anbetracht der Tatsache, dass verschiedene Modelle ihre eigenen Merkmale und ihre eigene Leistung haben, können die Leser andere geeignete Modelle wählen, um sie je nach den tatsächlichen Bedürfnissen des Projekts zu implementieren. RAG System.

Hinweis: Dieses Dokument enthält wichtige Codeschnipsel und ausführliche Erläuterungen. Der vollständige Code ist zu finden unter Notizbuch .

 

vorläufige Vorbereitung

Zunächst müssen wir Ollama herunterladen und die Umgebung konfigurieren.


Das GitHub-Repository von Ollama enthält eine detaillierte Beschreibung, die im Folgenden kurz zusammengefasst wird.

Schritt1: Ollama herunterladen.

Herunterladen von und doppelklicken Sie darauf, um die Ollama-Anwendung auszuführen.

-1

Schritt 2: Überprüfen Sie die Installation.

Geben Sie in die Befehlszeile ein ollamaWenn die folgende Meldung erscheint, wurde Ollama erfolgreich installiert.

-2

Schritt 3: Ziehen Sie das Modell.

  • In der Befehlszeile finden Sie unter Ollama Modell Liste im Gesang antworten Liste der Modelle zur Texteinbettung Ziehen des Modells. In diesem Lernprogramm nehmen wir die deepseek-r1:1.5b im Gesang antworten nomic-embed-text Beispiel.
    • Kommandozeileneingabe ollama pull deepseek-r1:1.5bGenerische Open-Source-Modelle für große Sprachen abrufen deepseek-r1:1.5b(Beim Ziehen von Modellen kann es langsam sein. Wenn es einen Fehler beim Ziehen gibt, können Sie den Befehl zum Ziehen erneut eingeben)
    • Kommandozeileneingabe ollama pull nomic-embed-text ziehen Modell der Texteinbettung nomic-embed-text.
  • Wenn die Anwendung läuft, befinden sich alle Modelle automatisch in der localhost:11434 Zum Start.
  • Beachten Sie, dass Sie bei der Auswahl des Modells Ihre lokalen Hardware-Fähigkeiten, die Referenz-Videospeichergröße für dieses Tutorial CPU-Speicher > 8 GB.

Schritt 4: Einsatz des Modells.

Im Befehlszeilenfenster wird der folgende Befehl zur Bereitstellung des Modells ausgeführt.

ollama run deepseek-r1:1.5b

-3

Es ist auch möglich, das Verteilungsmodell direkt von der Befehlszeile aus zu starten, zum Beispiel ollama run deepseek-r1:1.5b.

-4

Beachten Sie, dass die folgenden Schritte nicht erforderlich sind, wenn Sie nur DeepSeek R1-Modelle mit Ollama bereitstellen möchten.

Schritt 5: Installieren Sie die Abhängigkeiten.

# langchain_Gemeinschaft
pip install langchain langchain_community

# Chroma
pip install langchain_chroma

# Ollama
pip install langchain_ollama

Nachdem das geklärt ist, beginnen wir mit dem schrittweisen Aufbau einer Lösung, die auf LangChain, Ollama und DeepSeek R1 Es folgt eine detaillierte Beschreibung der Implementierungsschritte. Die Implementierungsschritte werden im Folgenden detailliert beschrieben.

 

1. das Laden von Dokumenten

Laden Sie PDF-Dokumente und schneiden Sie sie in Textblöcke geeigneter Größe.

from langchain_community.document_loaders import PDFPlumberLoader
Datei = "DeepSeek_R1.pdf"
# Laden der PDF-Datei
loader = PDFPlumberLoader(datei)
docs = loader.load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RekursiverZeichenTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(docs)

 

2. die Initialisierung des Vektorspeichers

Verwenden Sie die Chroma-Datenbank, um die Dokumentvektoren zu speichern, und konfigurieren Sie das von Ollama bereitgestellte Einbettungsmodell.

von langchain_chroma importieren Chroma
from langchain_ollama import OllamaEmbeddings
local_embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)

 

3. die Konstruktion von Kettenausdrücken

Richten Sie Modell- und Cue-Vorlagen ein, um Verarbeitungsketten zu erstellen.

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts importieren ChatPromptTemplate
von langchain_ollama importieren ChatOllama
model = ChatOllama(
model="deepseek-r1:1.5b",
)
prompt = ChatPromptTemplate.from_template(
"Fassen Sie die wichtigsten Themen in diesen abgerufenen Dokumenten zusammen: {docs}"
)
# Umwandlung der eingehenden Dokumente in eine Zeichenkette
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = {"docs": format_docs} | prompt | model | StrOutputParser()
question = "Was ist der Zweck des DeepSeek-Projekts?"
docs = vectorstore.similarity_search(Frage)
chain.invoke(docs)

 

4) QA mit Suche

Integrieren Sie Such- und Q&A-Funktionen.

from langchain_core.runnables import RunnablePassthrough
RAG_TEMPLATE = """
Sie sind ein Assistent für Frage-Antwort-Aufgaben. Verwenden Sie folgendes Stücke Wenn Sie die Antwort nicht wissen, sagen Sie einfach, dass Sie es nicht wissen. Verwenden Sie maximal drei Sätze und fassen Sie die Antwort kurz. Verwenden Sie maximal drei Sätze und fassen Sie die Antwort kurz.
<Kontext
{Kontext}
 {Kontext}
Beantworten Sie die folgende Frage.
{question}""
rag_prompt = ChatPromptTemplate.from_template(RAG_TEMPLATE)
retriever = vectorstore.as_retriever()
qa_chain = (
{"Kontext": retriever | format_docs, "Frage": RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
question = "Was ist der Zweck des DeepSeek-Projekts?"
# Ausführen
qa_chain.invoke(Frage)

 

Zusammenfassungen

Dieses Tutorial zeigt, wie man eine lokalisierte RAG-Anwendung mit DeepSeek R1 und Ollama erstellt. Wir erreichen die volle Funktionalität in vier Hauptschritten:

  1. Dateiverarbeitung PDFPlumberLoader zum Laden von PDF-Dokumenten und RecursiveCharacterTextSplitter zum Aufteilen des Textes in Stücke geeigneter Größe verwenden.
  2. Vektorspeicher Ein Vektorspeichersystem, das die Chroma-Datenbank und das Einbettungsmodell von Ollama verwendet, um eine Grundlage für die anschließende Ähnlichkeitssuche zu schaffen.
  3. Kette bauen Entwurf und Implementierung einer Verarbeitungskette, die die Verarbeitung von Dokumenten, Cue-Templates und Modellantworten in einen Flow-Through-Prozess integriert.
  4. RAG-Umsetzung Durch die Integration von Such- und Frage- und Antwortfunktionen wird ein komplettes suchgestütztes Generierungssystem implementiert, das in der Lage ist, Benutzeranfragen auf der Grundlage des Dokumenteninhalts zu beantworten.

Mit Hilfe dieses Tutorials können Sie schnell Ihr eigenes lokales RAG-System aufbauen und es an Ihre tatsächlichen Bedürfnisse anpassen. Es wird empfohlen, verschiedene Modelle und Parameterkonfigurationen in der Praxis auszuprobieren, um das Beste daraus zu machen.

Hinweis: Mit Hilfe von Tools wie streamlit oder FastAPI ist es möglich, eine lokale RAG-Anwendung als Webservice bereitzustellen, was eine größere Bandbreite von Anwendungsszenarien ermöglicht.

Das Repository bietet außerdem app.py Datei können Sie die Datei direkt ausführen, um den Webdienst zu starten. Dokumentation Aufbau eines RAG-Systems mit DeepSeek R1 & Ollama. Hinweis: Führen Sie den Ollama-Dienst im Voraus aus, bevor Sie diesen Code ausführen.

Die Dialogseite sieht wie folgt aus:

-5

CDN1
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Native RAG-Anwendungen mit DeepSeek R1 und Ollama

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)