पाठ 8 / 28

पाठ तैयार करना: Chunking, Truncation, Query बनाम Document

Embedding से पहले चुपचाप गुणवत्ता हानि से बचें।

Garbage अंदर, धुँधले vectors बाहर

Embedding गुणवत्ता इस पर बहुत निर्भर है कि आप क्या डालते हैं। लंबे दस्तावेज़ों को सुसंगत टुकड़ों में chunk करें (कुछ सौ tokens, headings या अनुच्छेदों पर बाँटकर, थोड़े overlap के साथ): विशाल दस्तावेज़ के लिए एक vector कई विषय धुँधले करता है। मॉडल की अधिकतम इनपुट लंबाई मानें, क्योंकि लंबा पाठ आम तौर पर चुपचाप कट जाता है। Boilerplate, navigation पाठ और encoding त्रुटियाँ साफ़ करें। Chunks के आगे शीर्षक या अनुभाग नाम जोड़ें ताकि वे अकेले अर्थपूर्ण हों। कुछ मॉडल असममित हैं और queries व documents के लिए अलग prefixes या निर्देश माँगते हैं (जैसे "query: ..." और "passage: ..."): model card मानें वरना retrieval गुणवत्ता गिरती है। Throughput के लिए requests batch करें, ज़रूरी हो तो vectors normalise करें, और embeddings cache करें ताकि अपरिवर्तित पाठ दो बार embed न हो।

Query और passage prefixes (उदाहरण)

कुछ retrieval मॉडल भूमिका-चिह्न माँगते हैं; सटीक strings मॉडल-विशिष्ट हैं, इसलिए model card वाली उपयोग करें। यहाँ चलाया नहीं गया।

docs = ["passage: Employees get 24 days of annual leave."]          # document side
query = "query: how many vacation days do I get?"                 # query side

# doc_vectors = model.encode(docs, normalize_embeddings=True, batch_size=64)
# q_vector    = model.encode([query], normalize_embeddings=True)
# scores      = doc_vectors @ q_vector.T          # normalised -> dot == cosine

त्वरित जाँच: मॉडल की अधिकतम इनपुट लंबाई से लंबे पाठ का अक्सर क्या होता है?

  • उसका अनुवाद होता है
  • वह पूरी तरह embed होता है
  • वह चुपचाप कट जाता है, अंत खो जाता है
  • मॉडल उस पर प्रशिक्षित होता है
Answer

वह चुपचाप कट जाता है, अंत खो जाता है — सीमा से नीचे chunk करें ताकि कुछ ज़रूरी न कटे।