சேமிப்பு உத்தி: வால்கீ vs JSON vs நம்பை
இந்த கட்டுரை SEO பைப்லைன் மற்றும் தேடல் சேவை ஆகியவற்றில் வெவ்வேறு வகையான தரவுகளுக்கு நாம் வெவ்வேறு சேமிப்பு தொழில்நுட்பங்களை ஏன் பயன்படுத்துகிறோம் என்பதை விளக்குகிறது.
சிக்கல்: ஒரே அளவு அனைவருக்கும் பொருந்தாது
வெவ்வேறு தரவுகளுக்கு வெவ்வேறு அணுகல் முறைகள் உள்ளன:
-
எம்பெடிங்ஸ் (5K x 384 மிதவை எண்கள்): வேகமான வெக்டர் செயல்பாடுகள் தேவை (கோசைன் ஒற்றுமை)
-
சொற்றொடர் மேப்பிங்ஸ் (2500+ சொற்றொடர்கள்): மனித திருத்தம், பதிப்பு கட்டுப்பாடு தேவை
-
வினவல் கேச் (நேரடி வினவல்கள்): வேகமான விசை-மதிப்பு தேடல்கள், TTL காலாவதி தேவை
-
தயாரிப்பு தரவு (64K தயாரிப்புகள்): கட்டமைக்கப்பட்ட அணுகல், பொருந்தக்கூடிய விதிகள் தேவை
அனைத்திற்கும் ஒரே சேமிப்பைப் பயன்படுத்துவது திறமையானதாக இருக்காது.
மூன்று சேமிப்பு தொழில்நுட்பங்கள்
1. நம்பை அணிகள்: வெக்டர் செயல்பாடுகள்
பயன்பாட்டு வழக்கு: எம்பெடிங்ஸ் (தயாரிப்புகள், வினவல்கள், சொற்றொடர்கள்)
ஏன் நம்பை:
-
வேகமான வெக்டர் கணிதம்: அணி செயல்பாடுகளுக்கான மேம்படுத்தப்பட்ட C/ஃபோர்ட்ரான் நூலகங்கள்
-
நினைவக-மேப்படுத்தப்பட்ட கோப்புகள்: RAM க்கு நகலெடுக்காமல் பெரிய அணிகளை ஏற்றவும்
-
தொகுதி செயல்பாடுகள்: மில்லி விநாடிகளில் ஆயிரக்கணக்கான வெக்டர்களை செயலாக்கவும்
-
நிலையான வடிவம்: ML நூலகங்களுடன் (scikit-learn, TensorFlow) பொருந்தக்கூடியது
கோப்பு வடிவம்: பைனரி .npy கோப்புகள்
ஏற்றுதல்:
import numpy as np
# நினைவக-மேப்படுத்தப்பட்ட (முழு கோப்பையும் RAM இல் ஏற்றாது)
embeddings = np.load('embeddings.npy', mmap_mode='r')
# கோசைன் ஒற்றுமையை கணக்கிடவும்
from sklearn.metrics.pairwise import cosine_similarity
similarities = cosine_similarity(query_embedding, embeddings)
செயல்திறன்: நிகழ்நேர அனுமானத்திற்கு ஏற்ற வேகத்தில் பாரிய ஒற்றுமை தேடல்கள்.
2. JSON கோப்புகள்: மனிதர்-திருத்தக்கூடிய தரவு
பயன்பாட்டு வழக்கு: கட்டமைப்பு, மேப்பிங்ஸ், மெட்டாடேட்டா
ஏன் JSON:
-
மனிதர்-படிக்கக்கூடியது: பார்வையிடவும் பிழைத்திருத்தம் செய்யவும் எளிதானது
-
பதிப்பு கட்டுப்பாடு: Git வேறுபாடுகள் சரியாக என்ன மாற்றம் என்பதை காட்டுகிறது
-
கைமுறை திருத்தம்: குறியீடு இல்லாமல் பிழைகளை சரிசெய்யலாம்
-
உலகளாவிய வடிவம்: ஒவ்வொரு மொழியும் JSON ஐ பாகுபடுத்த முடியும்
நாம் என்ன சேமிக்கிறோம்:
-
சொற்றொடர்-முதல்-வடிகட்டி மேப்பிங்ஸ்: சொற்றொடர்கள் → வடிகட்டி விதிகள்
-
தயாரிப்பு அம்சங்கள்: தயாரிப்புகள் → அம்ச அகராதிகள்
-
வினவல் மெட்டாடேட்டா: வினவல்கள் → கிளிக்குகள், பார்வைகள், ஆதாரங்கள்
-
பைப்லைன் கட்டமைப்பு: படி அளவுருக்கள், வாசல்கள்
கோப்பு வடிவம்: உரை .json கோப்புகள்
ஏற்றுதல்:
import json
with open('phrase_mappings.json') as f:
mappings = json.load(f)
# தரவை அணுகவும்
filters = mappings['mini pc'] # ['form_factor:mini', 'category:pc']
3. வால்கீ (ரெடிஸ்): வேகமான விசை-மதிப்பு கேச்
பயன்பாட்டு வழக்கு: நேரடி தேடல், தானியங்கி நிரப்புதல், பிரபலமான வினவல்கள்
ஏன் வால்கீ:
-
நினைவகத்தில்: தேடல்களுக்கு மைக்ரோ விநாடி தாமதம்
-
ரெடிசர்ச்: குறியீடுகளுடன் கூடிய வெக்டர் ஒற்றுமை தேடல்
-
TTL காலாவதி: தானியங்கி கேச் செல்லாததாக்குதல்
-
பப்/சப்: சர்வர்கள் முழுவதும் நிகழ்நேர புதுப்பிப்புகள்
-
நிலைத்தன்மை: நீடித்த தன்மைக்கு விருப்பத்தேர்வு வட்டு படிமங்கள்
நாம் என்ன சேமிக்கிறோம்:
-
வினவல் எம்பெடிங்ஸ் கேச்: சமீபத்திய வினவல்கள் → எம்பெடிங்ஸ்
-
பிரபலமான வினவல்கள்: போக்குவரத்து அடிப்படையில் முதல் 1000 வினவல்கள்
-
தானியங்கி நிரப்புதல் குறியீடு: முன்னொட்டு → வினவல் பரிந்துரைகள்
-
வடிகட்டி பிரித்தெடுத்தல் கேச்: வினவல் → பிரித்தெடுக்கப்பட்ட வடிகட்டிகள்
-
தொடர்புடைய தேடல்கள் கேச்: வினவல் → தொடர்புடைய வினவல்கள்
தரவு கட்டமைப்புகள்:
-
சரங்கள்: எளிய விசை-மதிப்பு (வினவல் → எம்பெடிங்)
-
வரிசைப்படுத்தப்பட்ட தொகுப்புகள்: தரவரிசைப்படுத்தப்பட்ட தரவு (மதிப்பெண் அடிப்படையில் பிரபலமான வினவல்கள்)
-
ரெடிசர்ச் குறியீடுகள்: வெக்டர் ஒற்றுமை தேடல்
-
ஹாஷ்கள்: கட்டமைக்கப்பட்ட தரவு (வினவல் மெட்டாடேட்டா)
ஏற்றுதல்:
from app.shared.valkey_cache import get_valkey
valkey = get_valkey()
# ... (செயல்படுத்தல் விவரங்கள் தவிர்க்கப்பட்டது)
முடிவெடுக்கும் அணி
எப்போது நம்பை பயன்படுத்த வேண்டும்
அளவுகோல்கள்:
-
தரவு எண்ணியல் (மிதவை எண்கள், முழு எண்கள்)
-
வேகமான வெக்டர் செயல்பாடுகள் தேவை (புள்ளிப் பெருக்கல், கோசைன் ஒற்றுமை)
-
தரவு படித்தல்-கனமானது (அரிதாக புதுப்பிக்கப்படுகிறது)
-
தரவு பெரியது (மில்லியன் கணக்கான எண்கள்)
-
தொகுதி செயலாக்கம் (ஒரே நேரத்தில் பல உருப்படிகளை செயலாக்கவும்)
எடுத்துக்காட்டுகள்:
-
எம்பெடிங்ஸ் (தயாரிப்புகள், வினவல்கள், சொற்றொடர்கள்)
-
அம்ச வெக்டர்கள்
-
ஒற்றுமை அணிகள்
எப்போது JSON பயன்படுத்த வேண்டும்
அளவுகோல்கள்:
-
தரவு கட்டமைக்கப்பட்டது (பொருள்கள், அணிகள்)
-
மனிதர்-படிக்கக்கூடிய தன்மை தேவை
-
பதிப்பு கட்டுப்பாடு தேவை (Git)
-
தரவு அரிதாக மாறுகிறது (கைமுறை திருத்தங்கள்)
-
தரவு சிறிய-நடுத்தர (<100 MB)
எடுத்துக்காட்டுகள்:
-
கட்டமைப்பு கோப்புகள்
-
சொற்றொடர் மேப்பிங்ஸ்
-
தயாரிப்பு மெட்டாடேட்டா
-
பைப்லைன் அளவுருக்கள்
எப்போது வால்கீ பயன்படுத்த வேண்டும்
அளவுகோல்கள்:
-
வேகமான தேடல்கள் தேவை (மைக்ரோ விநாடிகள்)
-
தரவு அடிக்கடி மாறுகிறது (நேரடி வினவல்கள்)
-
TTL காலாவதி தேவை (கேச் செல்லாததாக்குதல்)
-
பப்/சப் தேவை (நிகழ்நேர புதுப்பிப்புகள்)
-
வெக்டர் தேடல் தேவை (ரெடிசர்ச்)
எடுத்துக்காட்டுகள்:
-
வினவல் கேச்
-
தானியங்கி நிரப்புதல்
-
பிரபலமான வினவல்கள்
-
அமர்வு தரவு
-
விகித வரம்பிடல்
கலப்பு அணுகுமுறை
உகந்த செயல்திறனுக்காக மூன்றையும் இணைக்கிறோம்:
பைப்லைன் (ஆஃப்லைன் செயலாக்கம்)
நம்பை: எம்பெடிங்ஸ், ஒற்றுமை அணிகளை கணக்கிடவும்
JSON: மேப்பிங்ஸ், மெட்டாடேட்டா, கட்டமைப்பு ஆகியவற்றை சேமிக்கவும்
வால்கீ: பயன்படுத்தப்படாது (பைப்லைன் ஆஃப்லைனில் இயங்கும்)
தேடல் சேவை (நேரடி வினவல்கள்)
நம்பை: வட்டில் இருந்து எம்பெடிங்ஸை ஏற்றவும் (நினைவக-மேப்படுத்தப்பட்ட)
JSON: வட்டில் இருந்து மேப்பிங்ஸை ஏற்றவும் (நினைவகத்தில் கேச் செய்யப்பட்டது)
வால்கீ: நேரடி வினவல்கள், தானியங்கி நிரப்புதல், பிரபலமான வினவல்களை கேச் செய்யவும்
தரவு ஓட்டம்
graph LR
Pipeline[SEO பைப்லைன்
ஆஃப்லைன்]
subgraph Storage
NP[நம்பை கோப்புகள்
embeddings.npy]
JS[JSON கோப்புகள்
mappings.json]
end
Search[தேடல் சேவை
நேரடி]
VK[வால்கீ
கேச்]
Pipeline --> NP
Pipeline --> JS
NP --> Search
JS --> Search
Search --> VK
VK --> Searchசெயல்திறன் ஒப்பீடு
நம்பை (நினைவக-மேப்படுத்தப்பட்ட):
-
ஏற்ற நேரம்: உடனடி (மெய்நிகர் நினைவகத்திற்கு பூஜ்ஜிய-நகல் மேப்பிங்)
-
தேடல் நேரம்: பூஜ்ஜியத்திற்கு அருகில் (அணி குறியீட்டிற்கு நேரடி CPU சுட்டிக்காட்டி)
-
நினைவகம்: குறைந்தபட்சம் (OS-நிர்வகிக்கப்பட்ட பக்க கேச், செயல்முறை RAM இல் இல்லை)
JSON:
-
ஏற்ற நேரம்: அதிக தாமதம் (தொடர்ச்சியான பாகுபடுத்துதல் மற்றும் பொருள் உருவாக்கம்)
-
தேடல் நேரம்: திறமையானது (நிலையான ஹாஷ் மேப் மேல்நிலை)
-
நினைவகம்: கணிசமானது (முழு தொடர்வரிசைப்படுத்தப்பட்ட கட்டமைப்பு குவியலில் உள்ளது)
வால்கீ:
-
ஏற்ற நேரம்: நிலையானது (பின்னணி சேவையில் உள்ளது)
-
தேடல் நேரம்: மிதமானது (நெட்வொர்க் சுற்றுபயணம் மற்றும் நெறிமுறை தொடர்வரிசைப்படுத்தல் ஆகியவை அடங்கும்)
-
நினைவகம்: வெளிப்படுத்தப்பட்டது (தரவுத்தள செயல்முறைக்குள் தனிமைப்படுத்தப்பட்டது)
வெற்றியாளர்: அதிக-தொகுதி தொகுதி செயலாக்கத்திற்கு நம்பை, விநியோகிக்கப்பட்ட ஒற்றை-விசை அணுகலுக்கு வால்கீ
வெக்டர் ஒற்றுமை தேடல்
நம்பை (cosine_similarity):
-
தொகுதி செயல்பாடுகள்: வேகமானது (SIMD/வெக்டரைஸ்ட் நேரியல் இயற்கணிதம் மூலம் மேம்படுத்தப்பட்டது)
-
இணையாக்கக்கூடியது: அதிகம் (கிடைக்கக்கூடிய அனைத்து இயற்பியல் CPU கோர்கள் முழுவதும் அளவிடுகிறது)
-
நினைவகம்: நேரியல் (எம்பெடிங் பரிமாணங்களுடன் நேரடியாக அளவிடுகிறது)
வால்கீ (ரெடிசர்ச்):
-
தேடல் வேகம்: மேலானது (சிறப்பு HNSW/வெக்டர் குறியீட்டமைப்பை பயன்படுத்துகிறது)
-
இணையாக்கக்கூடியது: வரையறுக்கப்பட்டது (இயந்திரத்தின் நூல் மாதிரியால் கட்டுப்படுத்தப்படுகிறது)
-
நினைவகம்: தீவிரமானது (மூல எம்பெடிங்ஸ் மற்றும் குறியீட்ட