डॉक्युमेंट्स और वेक्टर डेटाबेस तैयार करना
अगले कुछ अभ्यासों में, आप एक पूरा RAG वर्कफ्लो बनाएँगे ताकि आप एक PDF डॉक्युमेंट के साथ बातचीत कर सकें, जिसमें Balaguer व अन्य (2024) का पेपर RAG VS Fine-Tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture शामिल है. यह प्रक्रिया डॉक्युमेंट्स को छोटे हिस्सों में बाँटकर, उन्हें एक वेक्टर डेटाबेस में स्टोर करके, एक ऐसा प्रॉम्प्ट तय करके जो retrieved डॉक्युमेंट्स को यूज़र इनपुट से जोड़ता है, और LLM के लिए इस external डेटा तक पहुँच बनाने हेतु एक retrieval chain बनाकर काम करती है.
इस अभ्यास में, आप डॉक्युमेंट को स्टोरेज के लिए तैयार करेंगे और उन्हें Chroma वेक्टर डेटाबेस में ingest करेंगे. आप RecursiveCharacterTextSplitter का उपयोग करके PDF को chunks में बाँटेंगे, और OpenAI embeddings फंक्शन की मदद से उन्हें Chroma वेक्टर डेटाबेस में ingest करेंगे. कोर्स के बाकी भाग की तरह, आपको अपना OpenAI API key प्रदान करने की ज़रूरत नहीं है.
निम्नलिखित क्लासेज़ आपके लिए पहले से import की गई हैं: RecursiveCharacterTextSplitter, Chroma, और OpenAIEmbeddings.
यह अभ्यास पाठ्यक्रम का हिस्सा है
LangChain के साथ LLM एप्लिकेशन विकसित करना
अभ्यास निर्देश
dataमें मौजूद डॉक्युमेंट्स कोRecursiveCharacterTextSplitterका उपयोग करके split करें, जिसमेंchunk_size300औरchunk_overlap50हो.- दिए गए OpenAI embeddings फंक्शन के साथ
.from_documents()मेथड का उपयोग करके डॉक्युमेंट्स को embed करें और उन्हें Chroma वेक्टर डेटाबेस में ingest करें. vectorstoreको ऐसे retriever ऑब्जेक्ट में कॉन्फ़िगर करें जो अंतिम RAG chain में उपयोग के लिए शीर्ष 3 डॉक्युमेंट्स लौटाए.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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": ____}
)