Generasi pengambilan semula (RAG) menggabungkan sistem pengambilan semula dengan model generatif untuk memberikan jawapan yang lebih tepat dan kaya konteks. Deep Seek R1 adalah alat yang berkuasa yang membantu kami membina sistem sedemikian dengan cekap dengan mengintegrasikan keupayaan pengambilan semula dengan model bahasa canggih. Dalam blog ini, kami akan berjalan melalui proses membuat aplikasi rag dari awal menggunakan Deep Seek R1.
Aplikasi RAG dibina sekitar tiga komponen utama:
Untuk memulakan, pastikan anda memasang Python. Kemudian, sediakan perpustakaan yang diperlukan, termasuk Deep Seek R1. Pasang kebergantungan menggunakan arahan berikut:
pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
Buat direktori projek baru dan sediakan persekitaran maya untuk pengasingan.
mkdir rag-deepseek-app cd rag-deepseek-app python -m venv venv source venv/bin/activate # or venv\Scripts\activate for Windows
Pangkalan pengetahuan adalah jantung sistem kain. Untuk contoh ini, kami akan menggunakan dokumen teks, tetapi anda boleh melanjutkannya ke PDF, pangkalan data, atau format lain.
mengatur dokumen anda dalam folder bernama data.
rag-deepseek-app/ └── data/ ├── doc1.txt ├── doc2.txt └── doc3.txt
Gunakan Deep Seek R1 untuk membenamkan dokumen untuk mendapatkan semula yang cekap.
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
Sekarang, kami akan menubuhkan saluran paip untuk mendapatkan dokumen yang relevan dan menghasilkan respons.
retriever = DeepSeekRetriever.load('knowledge_base.ds')
kami akan menggunakan model berasaskan GPT OpenAI atau memeluk transformer muka untuk generasi.
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)
Inilah cara kami meletakkan semuanya bersama -sama untuk mengendalikan pertanyaan pengguna.
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)
Untuk menjadikan sistem RAG boleh diakses, anda boleh menggunakannya menggunakan Flask atau Fastapi.
Pasang Flask:
pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
Buat fail app.py:
mkdir rag-deepseek-app cd rag-deepseek-app python -m venv venv source venv/bin/activate # or venv\Scripts\activate for Windows
Jalankan pelayan:
rag-deepseek-app/ └── data/ ├── doc1.txt ├── doc2.txt └── doc3.txt
Gunakan Postman atau Curl untuk menghantar pertanyaan:
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
Atas ialah kandungan terperinci Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!