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
Linda HamiltonOriginal
2025-01-29 04:29:09558Durchsuche

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

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

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

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

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')

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)

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

Beispielabfrage

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

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

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

Führen Sie den Server aus:

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt

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

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!

Stellungnahme:
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