Heim > Web-Frontend > js-Tutorial > Bauen eines Lappen (retrieval-augmented Generation) Anwendung mit Deep Seek RROM Scratch

Bauen eines Lappen (retrieval-augmented Generation) Anwendung mit Deep Seek RROM Scratch

Linda Hamilton
Freigeben: 2025-01-29 04:29:09
Original
470 Leute haben es durchsucht

Building a RAG (Retrieval-Augmented Generation) Application Using Deep Seek Rrom Scratch

Abruf-aus-generaler Generation (RAG) kombiniert Abrufsysteme mit generativen Modellen, um genauere, kontextreiche Antworten zu liefern. Deep Seek R1 ist ein leistungsstarkes Tool, das uns hilft, solche Systeme effizient zu erstellen, indem wir Abruffunktionen in fortschrittliche Sprachmodelle integrieren. In diesem Blog werden wir mit Deep Seek R1 durch den Prozess der Erstellung einer Lappenanwendung von Grund auf gehen.


1. Verständnis der Architektur von Rag

RAG -Anwendungen sind um drei Hauptkomponenten aufgebaut:

  1. retriever : Findet relevante Dokumente aus einer Wissensbasis.
  2. Generator : Verwendet abgerufene Dokumente als Kontext, um Antworten zu generieren.
  3. Wissensbasis : Speichert alle Dokumente oder Informationen in einem leicht abrufbaren Format.

2. Einrichten der Umgebung

Schritt 1: Installieren Sie die erforderlichen Abhängigkeiten

Um loszulegen, stellen Sie sicher, dass Sie Python installiert haben. Richten Sie dann die erforderlichen Bibliotheken ein, einschließlich Deep Search R1. Installieren Sie die Abhängigkeiten mit den folgenden Befehlen:

pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 2: Initialisieren Sie das Projekt

Erstellen Sie ein neues Projektverzeichnis und richten Sie eine virtuelle Umgebung für die Isolation ein.

mkdir rag-deepseek-app
cd rag-deepseek-app
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate for Windows
Nach dem Login kopieren
Nach dem Login kopieren

3. Aufbau der Wissensbasis

Die Wissensbasis ist das Herz eines Lappensystems. In diesem Beispiel verwenden wir Textdokumente, können es jedoch auf PDFs, Datenbanken oder andere Formate erweitern.

Schritt 1: Bereiten Sie die Daten vor

organisieren Sie Ihre Dokumente in einem Ordner mit dem Namen Daten.

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 2: Betten Sie die Dokumente ein.

Verwenden Sie Deep R1, um die Dokumente zum effizienten Abrufen einzubetten.

from deep_seek_r1 import DeepSeekRetriever
from sentence_transformers import SentenceTransformer
import os

# Load the embedding model
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')

# Prepare data
data_dir = './data'
documents = []
for file_name in os.listdir(data_dir):
    with open(os.path.join(data_dir, file_name), 'r') as file:
        documents.append(file.read())

# Embed the documents
embeddings = embedding_model.encode(documents, convert_to_tensor=True)

# Initialize the retriever
retriever = DeepSeekRetriever()
retriever.add_documents(documents, embeddings)
retriever.save('knowledge_base.ds')  # Save the retriever state
Nach dem Login kopieren
Nach dem Login kopieren

4. Aufbau des Abrufs und der Generation Pipeline

Jetzt richten wir die Pipeline ein, um relevante Dokumente abzurufen und Antworten zu generieren.

Schritt 1: Laden Sie den Retriever

retriever = DeepSeekRetriever.load('knowledge_base.ds')
Nach dem Login kopieren

Schritt 2: Integrieren Sie den Generator

Wir werden die GPT-basierten Modelle von OpenAI oder umarme Gesichtstransformatoren für die Generation verwenden.

from transformers import AutoModelForCausalLM, AutoTokenizer

# Load the generator model
generator_model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")

def generate_response(query, retrieved_docs):
    # Combine the query and retrieved documents
    input_text = query + "\n\n" + "\n".join(retrieved_docs)

    # Tokenize and generate a response
    inputs = tokenizer.encode(input_text, return_tensors='pt', max_length=512, truncation=True)
    outputs = generator_model.generate(inputs, max_length=150, num_return_sequences=1)

    return tokenizer.decode(outputs[0], skip_special_tokens=True)
Nach dem Login kopieren

5. Abfrage des Systems

So setzen wir alles zusammen, um Benutzeranfragen zu behandeln.

def rag_query(query):
    # Retrieve relevant documents
    retrieved_docs = retriever.search(query, top_k=3)

    # Generate a response
    response = generate_response(query, retrieved_docs)

    return response
Nach dem Login kopieren

Beispielabfrage

query = "What is the impact of climate change on agriculture?"
response = rag_query(query)
print(response)
Nach dem Login kopieren

6. Bereitstellung der Anwendung

Um das Lappensystem zugänglich zu machen, können Sie es mit einem Flaschen oder Fastapi bereitstellen.

Schritt 1: Einrichten von Kolben

Kolben installieren:

pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie eine App.py -Datei:

mkdir rag-deepseek-app
cd rag-deepseek-app
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate for Windows
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie den Server aus:

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 2: Testen Sie die API

Verwenden Sie Postman oder Locken, um eine Abfrage zu senden:

from deep_seek_r1 import DeepSeekRetriever
from sentence_transformers import SentenceTransformer
import os

# Load the embedding model
embedding_model = SentenceTransformer('all-MiniLM-L6-v2')

# Prepare data
data_dir = './data'
documents = []
for file_name in os.listdir(data_dir):
    with open(os.path.join(data_dir, file_name), 'r') as file:
        documents.append(file.read())

# Embed the documents
embeddings = embedding_model.encode(documents, convert_to_tensor=True)

# Initialize the retriever
retriever = DeepSeekRetriever()
retriever.add_documents(documents, embeddings)
retriever.save('knowledge_base.ds')  # Save the retriever state
Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBauen eines Lappen (retrieval-augmented Generation) Anwendung mit Deep Seek RROM Scratch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage