LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह · पाठ

पाठ विभाजक और एम्बेडिंग

बड़े दस्तावेज़ों को प्रबंधनीय खंडों में विभाजित करने और अर्थ-आधारित खोज के लिए संख्यात्मक एम्बेडिंग बनाने की तकनीकों में दक्षता हासिल करें।

पाठ 2, कुल 4 में से12 चरण

पाठ विभाजक और एम्बेडिंग, CoddyKit पर LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

टेक्स्ट को विभाजित और एम्बेड क्यों करें

बड़े दस्तावेज़ों के साथ काम करते समय, उन्हें सीधे किसी Large Language Model (LLM) को देना अक्सर समस्याएँ उत्पन्न करता है। LLM की इनपुट सीमाएँ सख्त होती हैं, जिन्हें संदर्भ विंडो कहा जाता है।

यह पाठ आपको दो प्रमुख तकनीकों का उपयोग करके LLM के लिए बड़े टेक्स्ट तैयार करना सिखाता है: टेक्स्ट विभाजन और एम्बेडिंग। उन्नत AI एजेंट बनाने के लिए ये आवश्यक हैं।

समस्या: लंबे दस्तावेज़

मान लीजिए कि आपके पास 100 पृष्ठों का एक PDF दस्तावेज़ है। यदि आप LLM से उसके बारे में कोई प्रश्न पूछना चाहें, तो आप पूरा दस्तावेज़ सीधे नहीं भेज सकते।

  • संदर्भ विंडो की सीमाएँ: LLM एक बार में केवल निश्चित मात्रा में टेक्स्ट संसाधित कर सकते हैं (जैसे, 4,000 से 128,000 टोकन तक)।
  • लागत: लंबे इनपुट का अर्थ है अधिक API लागत।
  • प्रासंगिकता: संदर्भ विंडो को अप्रासंगिक जानकारी से भरने पर LLM महत्वपूर्ण हिस्सों को 'भूल' सकता है।

टेक्स्ट विभाजन दस्तावेज़ों को छोटे, आसानी से संभाले जा सकने वाले खंडों में बाँटकर इस समस्या का समाधान करता है।

टेक्स्ट विभाजकों का परिचय

LangChain दस्तावेज़ों को प्रभावी ढंग से बाँटने के लिए विभिन्न टेक्स्ट विभाजक उपलब्ध कराता है। इनका उद्देश्य आकार की सीमाओं का पालन करते हुए अर्थ की दृष्टि से संबंधित टेक्स्ट अंशों को साथ रखना है।

मनमाने अक्षर-गणना बिंदुओं पर काटने के बजाय, स्मार्ट विभाजक टेक्स्ट को अनुच्छेदों या वाक्यों जैसे तार्किक बिंदुओं पर बाँटने का प्रयास करते हैं।

एक सामान्य और बहुउपयोगी विभाजक RecursiveCharacterTextSplitter है।

पुनरावर्ती अक्षर टेक्स्ट विभाजक

RecursiveCharacterTextSplitter एक शक्तिशाली उपकरण है। यह अक्षरों की एक सूची का उपयोग करके टेक्स्ट को बाँटने का प्रयास करता है और तब तक सूची में दिए गए अक्षरों को क्रम से आज़माता है, जब तक कि खंड पर्याप्त छोटे न हो जाएँ।

  • सबसे पहले यह \n\n (अनुच्छेदों के लिए दोहरी नई पंक्ति) पर बाँटने का प्रयास करता है।
  • यदि खंड अभी भी बहुत बड़े हों, तो यह \n (पंक्तियों के लिए एकल नई पंक्ति) आज़माता है।
  • इसके बाद रिक्त स्थान और अंत में अलग-अलग अक्षर आज़माए जाते हैं।

यह पुनरावर्ती तरीका अर्थगत सुसंगति बनाए रखने में मदद करता है।

कोड: मूल विभाजन प्रदर्शन

आइए देखें कि RecursiveCharacterTextSplitter कैसे काम करता है। हम एक छोटी कहानी को खंडों में बाँटेंगे।

from langchain_text_splitters import RecursiveCharacterTextSplitter

story = (
    "Alice was beginning to get very tired of sitting by her sister on the bank, "
    "and of having nothing to do: once or twice she had peeped into the book her "
    "sister was reading, but it had no pictures or conversations in it, 'and what "
    "is the use of a book,' thought Alice 'without pictures or conversation?'"
    "So she was considering in her own mind (as well as she could, for the hot "
    "day made her feel very sleepy and stupid), whether the pleasure of making "
    "a daisy-chain would be worth the trouble of getting up and picking the "
    "daisies, when suddenly a White Rabbit with pink eyes ran close by her."
)

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=100,
    chunk_overlap=0
)

chunks = text_splitter.split_text(story)

for i, chunk in enumerate(chunks):
    print(f"Chunk {i+1}: {chunk}\n")

खंड आकार और ओवरलैप की व्याख्या

टेक्स्ट विभाजन के लिए दो महत्वपूर्ण पैरामीटर chunk_size और chunk_overlap हैं:

  • खंड आकार: यह प्रत्येक खंड में अक्षरों (या टोकन, विभाजक के आधार पर) की अधिकतम संख्या होती है। ऐसा आकार चुनें जो आपके LLM की संदर्भ विंडो में समा जाए।
  • खंड ओवरलैप: यह बताता है कि क्रमिक खंडों के बीच कितने अक्षर (या टोकन) दोहराए जाने चाहिए। ओवरलैप विभाजनों के बीच संदर्भ बनाए रखने में मदद करता है और सुनिश्चित करता है कि खंडों की सीमाओं पर महत्वपूर्ण जानकारी न खोए।

प्रभावी पुनर्प्राप्ति के लिए इन पैरामीटरों का सही संतुलन खोजना महत्वपूर्ण है।

कोड: ओवरलैप के साथ विभाजन

आइए अपने पिछले उदाहरण में chunk_overlap का उपयोग करें। ध्यान दें कि टेक्स्ट के कुछ हिस्से आस-पास के खंडों में दोहराए गए हैं, जिससे निरंतरता बनी रहती है।

from langchain_text_splitters import RecursiveCharacterTextSplitter

story = (
    "Alice was beginning to get very tired of sitting by her sister on the bank, "
    "and of having nothing to do: once or twice she had peeped into the book her "
    "sister was reading, but it had no pictures or conversations in it, 'and what "
    "is the use of a book,' thought Alice 'without pictures or conversation?'"
    "So she was considering in her own mind (as well as she could, for the hot "
    "day made her feel very sleepy and stupid), whether the pleasure of making "
    "a daisy-chain would be worth the trouble of getting up and picking the "
    "daisies, when suddenly a White Rabbit with pink eyes ran close by her."
)

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=100,
    chunk_overlap=20 # Added overlap
)

chunks = text_splitter.split_text(story)

for i, chunk in enumerate(chunks):
    print(f"Chunk {i+1}: {chunk}\n")

टेक्स्ट एम्बेडिंग क्या हैं

दस्तावेज़ों को विभाजित करने के बाद, आप उपयोगकर्ता की क्वेरी के लिए सबसे प्रासंगिक खंड कैसे खोजेंगे? यहीं टेक्स्ट एम्बेडिंग काम आती हैं।

  • एम्बेडिंग टेक्स्ट का एक संख्यात्मक निरूपण (एक वेक्टर) होती है।
  • समान अर्थ वाले टेक्स्ट की एम्बेडिंग उच्च-आयामी स्थान में एक-दूसरे के 'करीब' होती हैं।
  • इससे हम अर्थगत खोज कर सकते हैं: केवल कीवर्ड के मेल नहीं, बल्कि किसी क्वेरी से वैचारिक रूप से मिलते-जुलते खंड खोज सकते हैं।

एम्बेडिंग, Retrieval Augmented Generation (RAG) की आधारशिला हैं।

LangChain के साथ एम्बेडिंग बनाना

LangChain विभिन्न मॉडलों का उपयोग करके एम्बेडिंग बनाना आसान बनाता है। आप एक Embeddings ऑब्जेक्ट के साथ काम करते हैं, जो अंतर्निहित मॉडल के विवरणों को छिपा देता है।

लोकप्रिय एम्बेडिंग मॉडलों में OpenAI, Hugging Face, Cohere के मॉडल और `all-MiniLM-L6-v2` जैसे कई ओपन-सोर्स विकल्प शामिल हैं।

आमतौर पर आप पहले एक एम्बेडिंग मॉडल शुरू करते हैं, फिर एक टेक्स्ट के लिए उसके embed_query() या खंडों की सूची के लिए embed_documents() को कॉल करते हैं।

कोड: एम्बेडिंग बनाना

OpenAI के एम्बेडिंग मॉडल का उपयोग करके सरल टेक्स्ट के लिए एम्बेडिंग बनाने का तरीका यहाँ दिया गया है। याद रखें, इसे सफलतापूर्वक चलाने के लिए आपको OpenAI API कुंजी की आवश्यकता होगी।

import os
# Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"

from langchain_openai import OpenAIEmbeddings

# Initialize the embedding model
# Requires OPENAI_API_KEY env var or direct pass
embeddings_model = OpenAIEmbeddings()

text_to_embed = "The quick brown fox jumps over the lazy dog."

# Generate the embedding vector
embedding_vector = embeddings_model.embed_query(text_to_embed)

print(f"Original Text: '{text_to_embed}'")
print(f"Embedding Vector (first 5 values): {embedding_vector[:5]}...")
print(f"Vector Dimension: {len(embedding_vector)}")

त्वरित जाँच: विभाजन और एम्बेडिंग

टेक्स्ट विभाजन और एम्बेडिंग के बारे में निम्नलिखित कथनों पर विचार करें:

पुनरावलोकन: RAG के लिए विभाजन और एम्बेडिंग

आपने AI एजेंट में बड़े दस्तावेज़ों को संभालने की दो मूलभूत तकनीकें सीखी हैं:

  • टेक्स्ट विभाजन: RecursiveCharacterTextSplitter जैसे उपकरणों का उपयोग करके बड़े टेक्स्ट को छोटे, आसानी से संभाले जा सकने वाले खंडों में बाँटना; इसे chunk_size और chunk_overlap नियंत्रित करते हैं।
  • एम्बेडिंग: अर्थगत समानता खोज को सक्षम करने के लिए एम्बेडिंग मॉडलों (जैसे, OpenAIEmbeddings) का उपयोग करके टेक्स्ट खंडों को संख्यात्मक वेक्टर में बदलना।

प्रभावी Retrieval Augmented Generation (RAG) प्रणालियाँ बनाने के लिए ये तकनीकें अत्यंत महत्वपूर्ण हैं। इनके माध्यम से आपके एजेंट विशाल ज्ञान-आधारों से प्रासंगिक जानकारी को बुद्धिमानी से खोज और उपयोग कर सकते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
50

अक्सर पूछे जाने वाले प्रश्न

क्या “पाठ विभाजक और एम्बेडिंग” पाठ निःशुल्क है?

हाँ—“पाठ विभाजक और एम्बेडिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“पाठ विभाजक और एम्बेडिंग” में मैं क्या सीखूँगा?

बड़े दस्तावेज़ों को प्रबंधनीय खंडों में विभाजित करने और अर्थ-आधारित खोज के लिए संख्यात्मक एम्बेडिंग बनाने की तकनीकों में दक्षता हासिल करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“पाठ विभाजक और एम्बेडिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. दस्तावेज़ लोडर की व्याख्या
  2. पाठ विभाजक और एम्बेडिंग
  3. पुनर्प्राप्ति के लिए वेक्टर स्टोर
  4. रिट्रीवर और संदर्भ-संपीड़न
← LangChain के साथ AI एजेंट और स्वायत्त कार्यप्रवाह पर वापस जाएँ