Hacker News

SQLite හි දෙමුහුන් සෙවීම සඳහා Hamming දුර

SQLite හි දෙමුහුන් සෙවීම සඳහා Hamming දුර මෙම ගවේෂණය එහි වැදගත්කම සහ විභව බලපෑම විමර්ශනය කරමින් මිටියාවත ගැන සොයා බලයි. මූලික සංකල්ප ආවරණය කර ඇත මෙම අන්තර්ගතය ගවේෂණය කරයි: මූලික මූලධර්ම සහ න්යායන් පුරුදු කරන්න...

2 min read Via notnotp.com

Mewayz Team

Editorial Team

Hacker News

හැමිං දුර යනු ද්විමය තන්තු දෙකක් අතර වෙනස් බිටු ගණන් කරන පදනම් සමානතා මෙට්‍රික් එකක් වන අතර එය දත්ත සමුදායන් තුළ ආසන්නතම අසල්වැසි සෙවීම සඳහා වේගවත්ම සහ කාර්යක්ෂම ක්‍රමවලින් එකක් බවට පත් කරයි. දෙමුහුන් සෙවුම් ගෘහනිර්මාණ හරහා SQLite වෙත යොදන විට, Hamming දුර විසින් කැපවූ දෛශික දත්ත සමුදායන්හි පොදු කාර්ය නොමැතිව ව්‍යවසාය-ශ්‍රේණියේ අර්ථකථන සෙවුම් හැකියාවන් විවෘත කරයි.

Hamming Distance යනු කුමක්ද සහ දත්ත සමුදා සෙවීම සඳහා එය වැදගත් වන්නේ ඇයි?

හැමිං දුර මගින් සමාන දිග ද්විමය නූල් දෙකක් වෙනස් වන ස්ථාන ගණන මනිනු ලැබේ. උදාහරණයක් ලෙස, binary strings 10101100 සහ 10001101 2ක Hamming දුරක් ඇත, මන්ද ඒවා හරියටම බිට් ස්ථාන දෙකකින් වෙනස් වේ. දත්ත සමුදා සෙවුම් සන්දර්භය තුළ, පෙනෙන පරිදි සරල ලෙස පෙනෙන මෙම ගණනය අසාමාන්‍ය ලෙස බලවත් වේ.

සාම්ප්‍රදායික SQL සෙවුම හරියටම ගැළපීම හෝ සම්පූර්ණ-පෙළ සුචිගත කිරීම මත රඳා පවතී, එය අර්ථකථන සමානතාව සමඟ පොරබදයි - සමාන මූල පද බෙදා ගැනීමට වඩා එකම දේ අර්ථය කරන ප්‍රතිඵල සොයා ගැනීම. Hamming දුරස්ථභාවය මෙම පරතරය පියවන්නේ අන්තර්ගත කාවැද්දීම් වලින් ව්‍යුත්පන්න වූ ද්විමය හැෂ් කේත මත ක්‍රියා කිරීමෙනි, SQLite වැනි දත්ත සමුදායන්ට bitwise XOR මෙහෙයුම් භාවිතයෙන් මිලි තත්පර වලින් වාර්තා මිලියන ගණනක් සංසන්දනය කිරීමට ඉඩ සලසයි.

මෙට්‍රික් එක 1950 දී Richard Hamming විසින් දෝෂ නිවැරදි කිරීමේ කේත සන්දර්භය තුළ හඳුන්වා දෙන ලදී. දශක ගණනාවකට පසු, එය තොරතුරු ලබා ගැනීම සඳහා කේන්ද්‍රීය විය, විශේෂයෙන් පරිපූර්ණ නිරවද්‍යතාවයට වඩා වේගය වැදගත් වන පද්ධතිවල. එහි O(1) computation per comparison (CPU popcount උපදෙස් භාවිතා කරමින්) එය කාවැද්දූ සහ සැහැල්ලු දත්ත සමුදා එන්ජින් සඳහා අනන්‍යව ගැලපේ.

Hybrid Search සම්ප්‍රදායික SQLite විමසුම් සමඟ Hamming දුර ඒකාබද්ධ කරන්නේ කෙසේද?

SQLite හි දෙමුහුන් සෙවුම අනුපූරක ප්‍රතිසාධන උපාය මාර්ග දෙකක් ඒකාබද්ධ කරයි: විරල මූල පද සෙවීම (SQLite හි ඇති FTS5 සම්පූර්ණ-පෙළ සෙවුම් දිගුව භාවිතයෙන්) සහ ඝන සමානතා සෙවීම (ද්විමය ප්‍රමාණාත්මක කාවැද්දීම මත Hamming දුර භාවිතා කිරීම). නවීන සෙවුම් අවශ්‍යතා සඳහා ප්‍රවේශයක් පමණක් ප්‍රමාණවත් නොවේ.

සාමාන්‍ය දෙමුහුන් සෙවුම් නල මාර්ගයක් පහත පරිදි ක්‍රියා කරයි:

  1. Embedding Generation: සෑම ලේඛනයක්ම හෝ වාර්තාවක්ම භාෂා ආකෘතියක් හෝ කේතීකරණ ශ්‍රිතයක් භාවිතයෙන් ඉහළ මාන පාවෙන ලක්ෂ්‍ය දෛශිකයක් බවට පරිවර්තනය කෙරේ.
  2. ද්විමය ප්‍රමාණකරණය: float දෛශිකය SimHash හෝ සසම්භාවී ප්‍රක්ෂේපණය වැනි තාක්ෂණික ක්‍රම භාවිතා කරමින් සංයුක්ත ද්විමය හැෂ් (උදා: 64 හෝ 128 බිටු) බවට සම්පීඩනය කර ගබඩා අවශ්‍යතා විශාල ලෙස අඩු කරයි.
  3. Hamming දර්ශක ආචයනය: ද්විමය හැෂ් SQLite හි INTEGER හෝ BLOB තීරුවක් ලෙස ගබඩා කර ඇත, විමසුම් අවස්ථාවේදී වේගවත් bitwise මෙහෙයුම් සබල කරයි.
  4. විමසුම්-කාල ලකුණු කිරීම: පරිශීලකයෙකු විමසුමක් ඉදිරිපත් කරන විට, SQLite විසින් අභිරුචි අදිශ ශ්‍රිතයක් හරහා XOR සහ popcount භාවිතයෙන් Hamming දුර ගණනය කරයි, අපේක්ෂකයින් බිට් සමානතාවයෙන් වර්ග කර ආපසු ලබා දෙයි.
  5. ලකුණු විලයනය: Hamming මත පදනම් වූ අර්ථකථන සෙවීමේ ප්‍රතිඵල සහ FTS5 මූල පද සෙවුමේ ප්‍රතිඵල අවසාන ශ්‍රේණිගත ලැයිස්තුවක් නිෂ්පාදනය කිරීම සඳහා Reciprocal Rank Fusion (RRF) හෝ බර කළ ලකුණු කිරීම භාවිතයෙන් ඒකාබද්ධ කෙරේ.

පූරණය කළ හැකි දිගු හෝ සම්පාදනය කරන ලද ශ්‍රිත හරහා SQLite හි විස්තීරණය බර දත්ත සමුදා පද්ධතියකට සංක්‍රමණය නොවී මෙම ගෘහ නිර්මාණ ශිල්පය සාක්ෂාත් කර ගත හැක. එහි ප්‍රතිඵලය වන්නේ කාවැද්දූ උපාංග, ජංගම යෙදුම් සහ දාර යෙදවීම් ඇතුළුව - SQLite ධාවනය වන ඕනෑම තැනක ධාවනය වන ස්වයං අන්තර්ගත සෙවුම් යන්ත්‍රයකි.

ප්‍රධාන තීක්ෂ්ණ බුද්ධිය: 64-bit හෑෂ් මත Binary Hamming සෙවීම සමාන මානයක සම්පූර්ණ float32 දෛශික මත cosine සමානතාවයට වඩා දළ වශයෙන් 30-50x වේගවත් වේ. විශේෂිත දෘඩාංග නොමැතිව මිලියන ගණනක් වාර්තා හරහා උප-10ms සෙවුම් ප්‍රමාදය අවශ්‍ය යෙදුම් සඳහා, SQLite හි Hamming දුර බොහෝ විට නිරවද්‍යතාවය සහ කාර්ය සාධනය අතර ප්‍රශස්ත ඉංජිනේරු වෙළඳාම වේ.

SQLite හි Hamming සෙවීමේ කාර්ය සාධන ලක්ෂණ මොනවාද?

SQLite යනු තනි-ගොනු, සේවාදායක රහිත දත්ත සමුදායක් වන අතර, එය Hamming දුර සෙවීම ක්‍රියාවට නැංවීම සඳහා අද්විතීය බාධාවන් සහ අවස්ථා නිර්මාණය කරයි. HNSW හෝ IVF වැනි ස්වදේශීය දෛශික සුචිගත කිරීමේ ව්‍යුහයන් නොමැතිව (කැප වූ දෛශික ගබඩාවල දක්නට ලැබේ), SQLite Hamming සෙවීම සඳහා රේඛීය පරිලෝකනය මත රඳා පවතී - නමුත් මෙය ශබ්දයට වඩා අඩු සීමාකාරී වේ.

64-bit Hamming දුර ගණනය කිරීමකට අවශ්‍ය වන්නේ XOR පමණක් පසුව popcount (ජනගහන ගණන, කට්ටල බිටු ගණන් කිරීම) පමණි. නවීන CPUs මෙය තනි උපදෙසකින් ක්‍රියාත්මක කරයි. 64-bit හෑෂ් මිලියන 1 ක සම්පූර්ණ රේඛීය ස්කෑන් කිරීම භාණ්ඩ දෘඩාංග මත දළ වශයෙන් මිලි තත්පර 5-20 කින් සම්පූර්ණ කරයි, අමතර සුචිගත කිරීමේ උපක්‍රම නොමැතිව වාර්තා මිලියන කිහිපයක් දක්වා දත්ත කට්ටල සඳහා SQLite ප්‍රායෝගික කරයි.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

විශාල දත්ත කට්ටල සඳහා, කාර්ය සාධනය වැඩි දියුණු කිරීම් පැමිණෙන්නේ අපේක්ෂක පෙර-පෙරහන මගිනි: Hamming දුර යෙදීමට පෙර පාර-දත්ත (දින පරාසයන්, ප්‍රවර්ග, පරිශීලක කොටස්) අනුව පේළි ඉවත් කිරීමට SQLite හි WHERE වගන්ති භාවිතා කිරීම, විශාලත්වයේ ඇණවුම් අනුව ඵලදායී ස්කෑන් ප්‍රමාණය අඩු කිරීම. දෙමුහුන් සෙවුම් ගෘහ නිර්මාණ ශිල්පය සැබවින්ම බැබළෙන්නේ මෙහිදීය - විරල මූල පද පෙරහන වේගවත් පෙර පෙරහනක් ලෙස ක්‍රියා කරයි, සහ Hamming දුර ඉතිරිව සිටින අපේක්ෂකයින් නැවත ශ්‍රේණිගත කරයි.

SQLite හි ඔබ Hamming Distance Function එකක් ක්‍රියාත්මක කරන්නේ කෙසේද?

SQLite හි ස්වදේශික Hamming දුරස්ථ ශ්‍රිතයක් ඇතුළත් නොවේ, නමුත් එහි C extension API අභිරුචි පරිමාණ ශ්‍රිත ලියාපදිංචි කිරීමට සරල කරයි. sqlite3 මොඩියුලය භාවිතා කරමින් Python හි, ඔබට පූර්ණ සංඛ්‍යා දෙකක් අතර Hamming දුර ගණනය කරන ශ්‍රිතයක් ලියාපදිංචි කළ හැක:

ශ්‍රිතය ද්විමය හෑෂ් නියෝජනය කරන පූර්ණ සංඛ්‍යා තර්ක දෙකක් පිළිගනී, ඒවායේ XOR ගණනය කරයි, පසුව Python හි bin().count('1') හෝ වේගවත් බිටු හැසිරවීමේ ප්‍රවේශයක් භාවිතයෙන් කට්ටල බිටු ගණන් කරයි. ලියාපදිංචි වූ පසු, මෙම ශ්‍රිතය ඕනෑම බිල්ට්-ඉන් ශ්‍රිතයක් මෙන් SQL විමසුම් තුළ ලබා ගත හැකි වනු ඇත, විමසුම් හෑෂ් එකකට Hamming දුර සීමාවකට පහළින් වැටෙන පේළි තේරීම වැනි විමසුම් සක්‍රීය කරයි, ආසන්නතම ගැළපීම් ප්‍රථමයෙන් ලබා ගැනීමට දුර ආරෝහණ අනුව ඇණවුම් කෙරේ.

නිෂ්පාදන යෙදවීම් සඳහා, SQLite හි sqlite3_create_function API භාවිතයෙන් C දිගුවක් ලෙස popcount තර්කය සම්පාදනය කිරීම, අර්ථකථනය කරන ලද Python ට වඩා 10-100x වඩා හොඳ කාර්ය සාධනයක් ලබා දෙයි, SQLite හි Hamming සෙවුම බොහෝ ප්‍රායෝගික vector දත්ත සමුදායන් සඳහා ළඟා විය හැකිය.

ව්‍යාපාර විසින් කැපවූ දෛශික දත්ත සමුදායන් හරහා SQLite Hamming සෙවීම තෝරාගත යුත්තේ කවදාද?

SQLite මත පදනම් වූ Hamming සෙවීම සහ Pinecone, Weaviate, හෝ pgvector වැනි කැපවූ දෛශික දත්ත සමුදායන් අතර තේරීම පරිමාණය, මෙහෙයුම් සංකීර්ණත්වය සහ යෙදවීමේ සීමාවන් මත රඳා පවතී. SQLite Hamming සෙවීම යනු සරල බව, අතේ ගෙන යා හැකි බව සහ පිරිවැය වඩාත්ම වැදගත් වන විට නිවැරදි තේරීම වේ - එය ව්‍යාපාරික යෙදුම්වලින් අතිමහත් බහුතරයකට අදාළ වේ.

කැප වූ දෛශික දත්ත සමුදායන් සැලකිය යුතු මෙහෙයුම් පොදු කාර්යක් හඳුන්වා දෙයි: වෙනම යටිතල පහසුකම්, ජාල ප්‍රමාදය, සමමුහුර්තකරණ සංකීර්ණත්වය සහ පරිමාණයෙන් සැලකිය යුතු පිරිවැයක්. දස දහස් ගනනක් සිට අඩු මිලියන ගණනක් වාර්තා සඳහා සේවය කරන යෙදුම් සඳහා, SQLite Hamming සෙවීම ශුන්‍ය අමතර යටිතල පහසුකම් සමඟ සැසඳිය හැකි පරිශීලක-මුහුණු අදාළත්වය ලබා දෙයි. එය ඔබේ යෙදුම් දත්ත සමඟ ඔබේ සෙවුම් දර්ශකය සම-ස්ථානගත කරයි, බෙදා හරින ලද පද්ධති අසාර්ථක මාදිලියේ සම්පූර්ණ කාණ්ඩයක් ඉවත් කරයි.

නිතර අසන ප්‍රශ්න

නිෂ්පාදන සෙවුම් යෙදුම් සඳහා Hamming දුර සෙවීම ප්‍රමාණවත්ද?

ද්විමය ප්‍රමාණාත්මක කාවැද්දීම මත හමිං දුර දැවැන්ත වේග ප්‍රතිලාභ සඳහා නැවත කැඳවීමේ නිරවද්‍යතාවයේ කුඩා ප්‍රමාණයක් වෙළඳාම් කරයි. ප්‍රායෝගිකව, ද්විමය ප්‍රමාණකරණය සාමාන්‍යයෙන් සම්පූර්ණ float32 cosine සමානතා සෙවීමේ නැවත කැඳවීමේ ගුණාත්මක භාවයෙන් 90-95% රඳවා ගනී. බොහෝ ව්‍යාපාරික සෙවුම් යෙදුම් සඳහා - නිෂ්පාදන සොයා ගැනීම, ලේඛන ලබා ගැනීම, පාරිභෝගික සහාය දැනුම පදනම් - මෙම වෙළඳාම සම්පූර්ණයෙන්ම පිළිගත හැකි අතර, පරිශීලකයින්ට ප්‍රතිඵලයේ ගුණාත්මක වෙනස වටහා ගත නොහැක.

SQLite හට Hamming සෙවුම් විමසුම් අතරතුර සමගාමී කියවීම් සහ ලිවීම් හැසිරවිය හැකිද?

SQLite එහි WAL (Write-Ahead Logging) මාදිලිය හරහා සමගාමී කියවීම් සඳහා සහය දක්වයි, අවහිර කිරීමකින් තොරව බහු පාඨකයන්ට එකවර විමසීමට ඉඩ සලසයි. ලිවීමේ සමගාමීත්වය සීමිතයි - SQLite ලියන්නේ අනුක්‍රමිකයි - නමුත් කියවීමට සාපේක්ෂව ලිවීම් කලාතුරකින් සිදුවන සෙවුම් බර වැඩ බර සඳහා මෙය කලාතුරකින් බාධාවක් වේ. කියවීම-දැඩි දෙමුහුන් සෙවුම් යෙදුම් සඳහා, SQLite හි WAL මාදිලිය සම්පූර්ණයෙන්ම ප්‍රමාණවත් වේ.

පාවෙන දෛශික හා සසඳන විට ද්විමය ප්‍රමාණකරණය ගබඩා අවශ්‍යතා කෙරෙහි බලපාන්නේ කෙසේද?

ගබඩා ඉතුරුම් නාටකාකාර වේ. සාමාන්‍ය 768-මාන float32 කාවැද්දීමකට වාර්තාවකට බයිට් 3,072 (3 KB) අවශ්‍ය වේ. එකම කාවැද්දීමක 128-bit ද්විමය හැෂ් සඳහා අවශ්‍ය වන්නේ බයිට් 16ක් පමණි - 192x අඩු කිරීමක්. වාර්තා මිලියන 1 ක දත්ත කට්ටලයක් සඳහා, මෙයින් අදහස් කරන්නේ 3 GB සහ 16 MB කාවැද්දීමේ ආචයනය අතර වෙනසයි, සම්පූර්ණ පාවෙන ආචයනය ප්‍රායෝගික නොවන මතක සීමා සහිත පරිසරයක Hamming-පාදක සෙවීම ශක්‍ය කරයි.


බුද්ධිමත්, සෙවිය හැකි නිෂ්පාදන ගොඩනැගීම යනු වැඩෙන ව්‍යාපාර එකතැන පල්වෙන ව්‍යාපාරවලින් වෙන් කරන ආකාරයේ හැකියාවකි. Mewayz යනු 138,000 කට අධික පරිශීලකයින් විසින් විශ්වාස කරන සියලුම ව්‍යාපාරික මෙහෙයුම් පද්ධතිය වන අතර, CRM සහ විශ්ලේෂණවල සිට අන්තර්ගත කළමනාකරණය සහ ඉන් ඔබ්බට - 207 ඒකාබද්ධ මොඩියුල පිරිනමයි - යන්තම් $19/මසකට ආරම්භ වේ. විසන්ධි වූ මෙවලම් එකට මැසීම නවතා පරිමාණය සඳහා නිර්මාණය කර ඇති වේදිකාවක් මත ගොඩනැගීම ආරම්භ කරන්න.

අද app.mewayz.com හිදී ඔබේ Mewayz ගමන අරඹන්න සහ සැබෑ ඒකාබද්ධ ව්‍යාපාර මෙහෙයුම් පද්ධතියකට ඔබේ කණ්ඩායමට කළ හැකි දේ අත්විඳින්න.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime