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.
RAG -Anwendungen sind um drei Hauptkomponenten aufgebaut:
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
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
Die Wissensbasis ist das Herz eines Lappensystems. In diesem Beispiel verwenden wir Textdokumente, können es jedoch auf PDFs, Datenbanken oder andere Formate erweitern.
organisieren Sie Ihre Dokumente in einem Ordner mit dem Namen Daten.
rag-deepseek-app/ └── data/ ├── doc1.txt ├── doc2.txt └── doc3.txt
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
Jetzt richten wir die Pipeline ein, um relevante Dokumente abzurufen und Antworten zu generieren.
retriever = DeepSeekRetriever.load('knowledge_base.ds')
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)
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
query = "What is the impact of climate change on agriculture?" response = rag_query(query) print(response)
Um das Lappensystem zugänglich zu machen, können Sie es mit einem Flaschen oder Fastapi bereitstellen.
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
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!