पाठ 8 / 27
Embeddings और Semantic Search
सटीक शब्दों की जगह अर्थ मिलाने को vectors उपयोग करें।
निकटता का अर्थ समान अर्थ
Embedding model पाठ को सैकड़ों या हज़ारों संख्याओं के vector में बदलता है ताकि समान अर्थ वाले पाठ पास-पास आएँ। खोज के लिए हर chunk को एक बार (ऑफ़लाइन) embed करें, query समय पर सवाल embed करें और वे chunks लौटाएँ जिनके vectors का उससे सबसे ऊँचा cosine similarity (या dot product) हो। इससे "carry over unused leave" मिल जाता है, भले दस्तावेज़ में "leftover days can roll into next year" लिखा हो। Chunks और सवालों के लिए वही embedding model उपयोग करें, मॉडल बदलें तो सब दोबारा embed करें, और ऐसा चुनें जो आपकी भाषाओं का समर्थन करे, क्योंकि हिंदी, अंग्रेज़ी और मिश्रित पाठ अलग व्यवहार कर सकते हैं।
सही अंश खोजें
Keyword scores शब्द मिलाते हैं; embeddings अर्थ; hybrid search दोनों जोड़ता है।
खिलौना embedding, चलाकर
मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। यह प्रशिक्षित मॉडल नहीं है: यह हर शब्द को 16 buckets में से एक में hash करता है, इसलिए सिर्फ़ साझा शब्द दर्शाता है, पर embedding और cosine scoring की प्रक्रिया दिखाता है। Unused leave वाला सवाल leave वाक्य से 0.722 और hotel वाक्य से 0.183 पाता है। असली embedding models पर्यायवाची भी मिलाते हैं।
import hashlib, math
def embed(text, dim=16):
v = [0.0] * dim
for w in text.lower().split():
h = int(hashlib.md5(w.encode()).hexdigest(), 16)
v[h % dim] += 1 if (h >> 8) % 2 else -1
n = math.sqrt(sum(x * x for x in v)) or 1
return [x / n for x in v]
def cos(a, b): return sum(x * y for x, y in zip(a, b))
q = embed("carry over unused leave")
for t in ("unused leave can be carried over", "hotel cost cap per night"):
print(round(cos(q, embed(t)), 3), t)
Output:
0.722 unused leave can be carried over 0.183 hotel cost cap per night
अपनी भाषाएँ जाँचें
आपके दस्तावेज़ों में हिंदी और अंग्रेज़ी मिश्रित हों तो embedding model को असली मिश्रित queries पर परखें; बहुभाषी मॉडलों की गुणवत्ता में बहुत अंतर होता है।
त्वरित जाँच: Chunks और सवालों के लिए एक ही embedding model क्यों?
- यह क़ानूनी नियम है
- यह पाठ छोटा करता है
- अलग मॉडलों के vectors तुलनीय नहीं होते
- यह metadata हटाता है
Answer
अलग मॉडलों के vectors तुलनीय नहीं होते — हर मॉडल अपना vector space तय करता है।