Belgeleri ve vektör veritabanını hazırlama
Sıradaki birkaç egzersizde, Balaguer ve diğerlerinin (2024) RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture başlıklı makalesini içeren bir PDF ile sohbet edebilmek için tam bir RAG iş akışı kuracaksın. Bu, belgeleri parçalara ayırmak, bir vektör veritabanında saklamak, alınan belgeler ile kullanıcı girdisini bağlayacak bir istem tanımlamak ve LLM'in bu harici verilere erişebilmesi için bir alma zinciri kurmakla çalışır.
Bu egzersizde, belgeyi depolamaya hazırlayacak ve bir Chroma vektör veritabanına aktaracaksın. PDF'i parçalamak için RecursiveCharacterTextSplitter kullanacak ve OpenAI gömleştirme fonksiyonunu kullanarak bunları bir Chroma vektör veritabanına alacaksın. Kursun geri kalanında olduğu gibi, kendi OpenAI API anahtarını sağlamana gerek yok.
Aşağıdaki sınıflar senin için zaten içe aktarıldı: RecursiveCharacterTextSplitter, Chroma ve OpenAIEmbeddings.
Bu egzersiz, kursun bir parçasıdır
LangChain ile LLM Uygulamaları Geliştirme
Egzersiz talimatları
dataiçindeki belgeleri,chunk_sizedeğeri300vechunk_overlapdeğeri50olan birRecursiveCharacterTextSplitterkullanarak böl.- Sağlanan OpenAI gömleştirme fonksiyonuyla belgeleri gömleştirip bir Chroma vektör veritabanına almak için
.from_documents()metodunu kullan. vectorstore'u, nihai RAG zincirinde kullanılmak üzere en iyi 3 belgeyi döndüren bir alıcı (retriever) nesnesine dönüştür.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
loader = PyPDFLoader('rag_vs_fine_tuning.pdf')
data = loader.load()
# Split the document using RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=____,
chunk_overlap=____)
docs = splitter.split_documents(data)
# Embed the documents in a persistent Chroma vector database
embedding_function = OpenAIEmbeddings(api_key='', model='text-embedding-3-small')
vectorstore = Chroma.____(
docs,
embedding=embedding_function,
persist_directory=os.getcwd()
)
# Configure the vector store as a retriever
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": ____}
)