Giriş
Gelişmiş akıl yürütme modelleri ve hafif çerçevelerin entegrasyonu, yapay zeka sistemlerinin bilgileri alma, işleme ve sunma biçimini dönüştürüyor. Bu kılavuzda, yüksek performanslı bir akıl yürütme modeli olan DeepSeek R1 ve Hugging Face'den minimalist bir aracı çerçevesi olan SmolAgents'ı kullanarak bir Retrieval-Augmented Generation (RAG) sistemi oluşturacağız. Bu sistem, verimli belge işleme, akıllı arama ve insan benzeri akıl yürütme sağlayacak ve araştırma, müşteri desteği ve bilgi yönetimi uygulamaları için idealdir.
Kurulumu Çalıştırmak İçin Sistem Gereksinimleri
Yapay zeka aracısı dört temel görev gerçekleştirecektir:
- PDF'leri Yükle ve İşle: Belgeleri aranabilir metin parçalarına dönüştürün.
- Bir Vektör Veritabanı Oluştur: Hızlı anlamsal arama için gömülümleri saklayın.
- Al ve Akıl Yürüt: Alınan verileri analiz etmek ve cevaplar üretmek için DeepSeek R1'i kullanın.
- Kullanıcılarla Etkileşim Kur: Kesintisiz etkileşim için bir konuşma arayüzü sağlayın.
Adım 1: PDF Belgelerini Yükleme ve İşleme
Araçlar ve Kütüphaneler
- LangChain: Belge yükleme ve metin bölme için.
- ChromaDB: Gömülümleri depolamak için hafif bir vektör veritabanı.
- Hugging Face Embeddings: Metni vektör temsillerine dönüştürmek için.
Uygulama
1.1 PDF Dosyalarını Yükle
Bir dizindeki tüm PDF'leri yüklemek için LangChain'in DirectoryLoader
'ını kullanın. Her PDF, işleme için sayfalara ayrılır.
from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
def load_and_process_pdfs(data_dir: str):
loader = DirectoryLoader(
data_dir,
glob="**/*.pdf",
loader_cls=PyPDFLoader
)
documents = loader.load()
# Split documents into chunks
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
length_function=len,
)
return text_splitter.split_documents(documents)
1.2 Bir Vektör Deposu Oluştur
Metin parçalarını gömülümlere dönüştürün ve verimli alma için bunları ChromaDB'de saklayın.
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
import os
import shutil
def create_vector_store(chunks, persist_directory: str):
if os.path.exists(persist_directory):
shutil.rmtree(persist_directory)
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-mpnet-base-v2",
model_kwargs={'device': 'cpu'}
)
vectordb = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory=persist_directory
)
return vectordb
Temel Hususlar
- Parça Boyutu: 200 karakterlik örtüşme ile 1000 karakter, bağlam tutma ve arama verimliliğini dengeler.
- Gömülümlü Model:
all-mpnet-base-v2
yüksek kaliteli cümle gömülümleri sağlar.
Adım 2: DeepSeek R1 ile Akıl Yürütme Aracısını Uygulama
Neden DeepSeek R1?
DeepSeek R1, çok adımlı akıl yürütme konusunda uzmanlaşmıştır ve karmaşık sorguları parçalamasını, ilişkileri çıkarmasını ve yapılandırılmış cevaplar üretmesini sağlar.
Akıl Yürütme Modelini Başlat
Yerel çıkarım için DeepSeek R1'i Ollama aracılığıyla yapılandırın:
from smolagents import OpenAIServerModel, CodeAgent
reasoning_model_id = "deepseek-r1:7b"
def get_model(model_id):
return OpenAIServerModel(
model_id=model_id,
api_base="http://localhost:11434/v1",
api_key="ollama"
)
reasoning_model = get_model(reasoning_model_id)
reasoner = CodeAgent(
tools=[],
model=reasoning_model,
add_base_tools=False,
max_steps=2 # Limit reasoning iterations for efficiency
)
Adım 3: Retrieval-Augmented Generation (RAG) Boru Hattını Oluşturma
Araç Tasarımı
Belge alımını DeepSeek R1'in akıl yürütme yetenekleriyle birleştiren bir RAG aracı oluşturun.
from smolagents import tool
@tool
def rag_with_reasoner(user_query: str) -> str:
# Retrieve relevant documents
docs = vectordb.similarity_search(user_query, k=3)
context = "\n\n".join(doc.page_content for doc in docs)
# Generate a reasoning prompt
prompt = f"""
Based on the following context, answer the user's question concisely.
If the information is insufficient, suggest a refined query.
Context:
{context}
Question: {user_query}
Answer:
"""
return reasoner.run(prompt, reset=False)
Temel Özellikler
- Bağlamsal İstekler: Temellendirilmiş yanıtlar için alınan belgeleri isteme ekleyin.
- Geri Dönüş Mekanizması: Veriler yetersiz olduğunda model daha iyi sorgular önerir.
Adım 4: Birincil Yapay Zeka Aracısını Dağıtma
İş Akışını Düzenleme
Llama 3.2 tarafından desteklenen birincil aracı, kullanıcı etkileşimlerini yönetir ve gerektiğinde RAG aracını çağırır:
from smolagents import ToolCallingAgent, GradioUI
tool_model = get_model("llama3.2")
primary_agent = ToolCallingAgent(
tools=[rag_with_reasoner],
model=tool_model,
add_base_tools=False,
max_steps=3
)
def main():
GradioUI(primary_agent).launch()
if __name__ == "__main__":
main()

Kullanıcı Arayüzü
Kullanıcı arayüzü, gerçek zamanlı etkileşim için basit bir web arayüzü sağlar:
- Kullanıcılar sorgular girer.
- Aracı belgeleri alır, DeepSeek R1 ile akıl yürütür ve cevapları döndürür.
DeepSeek R1 ve SmolAgents'ın entegrasyonu, karmaşık sorguları incelemek için gelişmiş akıl yürütmeyi, ChromaDB'nin hızlı anlamsal araması aracılığıyla verimli alımı ve maliyetli bulut API'lerine olan bağımlılığı atlamak için uygun maliyetli yerel dağıtımı birleştiren güçlü bir yapay zeka çözümü sunar. Ölçeklenebilir mimarisi, yeni araçların sorunsuz entegrasyonuna olanak tanır ve bu da onu araştırma (teknik belgeleri analiz etme), müşteri desteği (SSS'leri çözme) ve bilgi yönetimi (statik kaynakları etkileşimli sistemlere dönüştürme) gibi uygulamalar için ideal hale getirir.
Gelecekteki geliştirmeler, belge desteğini Word, HTML ve markdown'u içerecek şekilde genişletebilir, daha geniş bir bağlam için gerçek zamanlı web aramasını entegre edebilir ve zaman içinde cevap doğruluğunu iyileştirmek için geri bildirim döngüleri uygulayabilir. Bu çerçeve, çeşitli ihtiyaçlara göre uyarlanmış akıllı, uyarlanabilir yapay zeka asistanları oluşturmak için çok yönlü bir temel sunar.