Rumah > hujung hadapan web > tutorial js > Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch

Membina Aplikasi Generasi Rag (Retrieval-Augmented Generation) Menggunakan Deep Seek RROM Scratch

Linda Hamilton
Lepaskan: 2025-01-29 04:29:09
asal
470 orang telah melayarinya

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

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.


1. Memahami seni bina Rag

Aplikasi RAG dibina sekitar tiga komponen utama:

  1. retriever : Cari dokumen yang relevan dari pangkalan pengetahuan.
  2. Generator : Menggunakan dokumen yang diambil sebagai konteks untuk menghasilkan jawapan.
  3. Pangkalan Pengetahuan : Menyimpan semua dokumen atau maklumat dalam format yang mudah diperolehi.

2. Menyiapkan Alam Sekitar

Langkah 1: Pasang ketergantungan yang diperlukan

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
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Inisialisasi Projek

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
Salin selepas log masuk
Salin selepas log masuk

3. Membina Pangkalan Pengetahuan

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.

Langkah 1: Sediakan data

mengatur dokumen anda dalam folder bernama data.

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Benamkan dokumen

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
Salin selepas log masuk
Salin selepas log masuk

4. Membina saluran paip pengambilan dan generasi

Sekarang, kami akan menubuhkan saluran paip untuk mendapatkan dokumen yang relevan dan menghasilkan respons.

Langkah 1: Muatkan Retriever

retriever = DeepSeekRetriever.load('knowledge_base.ds')
Salin selepas log masuk

Langkah 2: Mengintegrasikan penjana

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)
Salin selepas log masuk

5. Menanyakan sistem

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
Salin selepas log masuk

Contoh pertanyaan

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

6. Menggunakan aplikasi

Untuk menjadikan sistem RAG boleh diakses, anda boleh menggunakannya menggunakan Flask atau Fastapi.

Langkah 1: Sediakan Flask

Pasang Flask:

pip install deep-seek-r1 langchain transformers sentence-transformers faiss-cpu
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk

Jalankan pelayan:

rag-deepseek-app/
└── data/
    ├── doc1.txt
    ├── doc2.txt
    └── doc3.txt
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Uji API

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
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan