Hacker News

SQLite дахь Hybrid хайлтын Хаммингийн зай

SQLite дахь Hybrid хайлтын Хаммингийн зай Энэхүү хайгуул нь хэмингийн талаар судалж, түүний ач холбогдол, болзошгүй нөлөөллийг судлах болно. Хамгаалагдсан үндсэн ойлголтууд Энэхүү агуулга нь: Үндсэн зарчим ба онолууд Дадлага...

1 min read Via notnotp.com

Mewayz Team

Editorial Team

Hacker News

Хэммингийн зай нь хоёр хоёртын мөр хоорондын ялгаатай битүүдийг тоолох үндсэн ижил төстэй хэмжигдэхүүн бөгөөд энэ нь мэдээллийн сангаас хамгийн ойрын хөршийг хайх хамгийн хурдан бөгөөд үр дүнтэй аргуудын нэг юм. Эрлийз хайлтын архитектураар дамжуулан SQLite-д хэрэглэгдэх үед Хамминг зай нь тусгай зориулалтын вектор өгөгдлийн сангийн нэмэлт зардалгүйгээр байгууллагын түвшний семантик хайлтын боломжийг нээж өгдөг.

Хэммингийн зай гэж юу вэ, энэ нь мэдээллийн сангаас хайхад яагаад чухал вэ?

Хэммингийн зай нь ижил урттай хоёр хоёртын мөр ялгаатай байх байрлалын тоог хэмждэг. Жишээлбэл, 10101100 болон 10001101 хоёртын мөрүүд нь яг хоёр бит байрлалаар ялгаатай тул Хэммингийн зай 2 байна. Өгөгдлийн сангийн хайлтын контекстэд энгийн мэт санагдах энэхүү тооцоо нь ер бусын хүчирхэг болдог.

Уламжлалт SQL хайлт нь яг тохирох эсвэл бүтэн текстийн индексжүүлэлтэд тулгуурладаг бөгөөд энэ нь семантик ижил төстэй байдалтай тулгардаг - ижил түлхүүр үгсийг хуваалцахын оронд ижил утгатай утгатай үр дүнг олдог. Хаммингийн зай нь агуулгын суулгацаас гаргаж авсан хоёртын хэш кодууд дээр ажиллаж, энэ зөрүүг нөхөж, SQLite зэрэг мэдээллийн санд битийн XOR үйлдлүүдийг ашиглан сая сая бичлэгийг миллисекундэд харьцуулах боломжийг олгодог.

Энэ хэмжигдэхүүнийг 1950 онд Ричард Хэмминг алдаа засах кодын хүрээнд нэвтрүүлсэн. Хэдэн арван жилийн дараа энэ нь мэдээлэл олж авах гол төв болсон, ялангуяа хурд нь төгс нарийвчлалаас илүү чухал байдаг системүүдэд. Харьцуулалт бүрийн O(1) тооцоолол (CPU popcount зааврыг ашиглан) нь үүнийг суулгагдсан болон хөнгөн өгөгдлийн сангийн хөдөлгүүрт онцгой тохиромжтой болгодог.

Эрлийз хайлт нь Хэмингийн зайг уламжлалт SQLite асуулгатай хэрхэн хослуулдаг вэ?

SQLite дахь эрлийз хайлт нь хоёр нэмэлт хайлтын стратегийг нэгтгэдэг: сийрэг түлхүүр үг хайх (SQLite-ийн суурилуулсан FTS5 бүрэн текст хайлтын өргөтгөлийг ашиглан) болон нягт ижил төстэй хайлт (хоёртын тоон байдлаар оруулсан Хаммингийн зайг ашиглах). Орчин үеийн хайлтын шаардлагад аль ч арга дангаараа хангалтгүй.

Ердийн эрлийз хайлтын шугам дараах байдлаар ажилладаг:

  1. Суулгах: Баримт бичиг эсвэл бичлэг бүрийг хэлний загвар эсвэл кодчиллын функц ашиглан өндөр хэмжээст хөвөгч цэгийн вектор болгон хувиргадаг.
  2. Хоёртын квантчилал: Хөвөгч векторыг SimHash эсвэл санамсаргүй төсөөлөл гэх мэт аргуудыг ашиглан авсаархан хоёртын хэш (жишээ нь, 64 эсвэл 128 бит) болгон шахаж, хадгалах хэрэгцээг эрс багасгадаг.
  3. Хэммингийн индекс хадгалах: Хоёртын хэш нь SQLite-д INTEGER эсвэл BLOB багана хэлбэрээр хадгалагдаж, асуулгын үед хурдан битийн үйлдлийг идэвхжүүлдэг.
  4. Асуулгын хугацааны оноо: Хэрэглэгч асуулга илгээх үед SQLite нь XOR болон popcount-ыг ашиглан захиалгат скаляр функцээр Хаммингийн зайг тооцоолж, нэр дэвшигчдийг бит төстэй байдлаар эрэмбэлдэг.
  5. Оноо нэгтгэх: Хамминг дээр суурилсан семантик хайлт болон FTS5 түлхүүр үг хайлтын үр дүнг Reciprocal Rank Fusion (RRF) эсвэл жигнэсэн оноог ашиглан нэгтгэж эцсийн эрэмбийн жагсаалтыг гаргадаг.

Ачаалах боломжтой өргөтгөлүүд эсвэл хөрвүүлсэн функцүүдээр дамжуулан SQLite-ийн өргөтгөл хийх чадвар нь энэ архитектурыг илүү хүнд мэдээллийн сан руу шилжүүлэхгүйгээр хийх боломжтой болгодог. Үр дүн нь суулгагдсан төхөөрөмж, мобайл апп, захын байршуулалт зэрэг SQLite-н хаана ч ажилладаг, бие даасан хайлтын систем юм.

Гол ойлголт: 64 битийн хэш дээрх хоёртын Хэммингийн хайлт нь тэнцүү хэмжээст бүрэн float32 вектор дээрх косинустай төстэй байдлаас ойролцоогоор 30-50 дахин хурдан байдаг. Мэргэшсэн техник хангамжгүйгээр сая сая бичлэгийн дунд 10 мс-ээс доошгүй хайлтын хоцролт шаардсан програмуудын хувьд SQLite дахь Хаммингийн зай нь ихэвчлэн нарийвчлал ба гүйцэтгэлийн хоорондох хамгийн оновчтой инженерийн солилцоо юм.

SQLite дахь Hamming хайлтын гүйцэтгэлийн шинж чанарууд юу вэ?

SQLite нь нэг файлтай, сервергүй мэдээллийн сан бөгөөд Хаммингийн зайн хайлтыг хэрэгжүүлэх өвөрмөц хязгаарлалт, боломжийг бий болгодог. HNSW эсвэл IVF (зориулсан вектор дэлгүүрүүдээс олддог) зэрэг уугуул векторын индексжүүлэлтийн бүтэцгүйгээр SQLite нь Хэмингийн хайлтыг шугаман хайлтад тулгуурладаг боловч энэ нь санагдахаас бага хязгаарлагдмал юм.

64 битийн Хаммингийн зайны тооцоололд зөвхөн XOR, дараа нь поп тоо (хүн амын тоо, тогтоосон битийг тоолох) шаардлагатай. Орчин үеийн CPU-үүд үүнийг нэг зааварт гүйцэтгэдэг. 1 сая 64 битийн хэшийг бүрэн шугаман сканнердах нь барааны техник хангамж дээр ойролцоогоор 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 →

Илүү том өгөгдлийн багцын хувьд гүйцэтгэлийг сайжруулах нь нэр дэвшигчийн урьдчилсан шүүлтээс ирдэг: SQLite-ийн WHERE заалтуудыг ашиглан Хэммингийн зайг хэрэглэхээс өмнө мета өгөгдлөөр (огнооны муж, ангилал, хэрэглэгчийн сегмент) мөрүүдийг хасч, үр дүнтэй сканнерын хэмжээг дарааллаар нь багасгадаг. Энд хайбрид хайлтын архитектурууд үнэхээр гялалзаж байна — сийрэг түлхүүр үгийн шүүлтүүр нь хурдан урьдчилсан шүүлтүүрийн үүрэг гүйцэтгэдэг бөгөөд Хамминг зай нь амьд үлдсэн нэр дэвшигчдийг дахин эрэмбэлдэг.

Та SQLite дээр Хэммингийн зайны функцийг хэрхэн хэрэгжүүлэх вэ?

SQLite нь төрөлх Хаммингийн зайны функцийг агуулаагүй ч C өргөтгөлийн API нь захиалгат скаляр функцуудыг бүртгүүлэхэд хялбар болгодог. Python дээр sqlite3 модулийг ашиглан та хоёр бүхэл тооны хоорондох Хаммингийн зайг тооцоолох функцийг бүртгэж болно:

Функц нь хоёртын хэшийг төлөөлсөн хоёр бүхэл аргументыг хүлээн авч, тэдгээрийн XOR-г тооцоолж, дараа нь Python-ын bin().count('1') эсвэл илүү хурдан бит удирдах аргыг ашиглан тогтоосон битүүдийг тоолдог. Бүртгүүлсний дараа энэ функц нь ямар ч суулгасан функцын нэгэн адил SQL асуулгад боломжтой болж, хамгийн ойрын тохирохыг эхлээд авахын тулд асуулгын хэш хүртэлх Хэммингийн зай нь босгоноос доогуур байгаа мөрүүдийг сонгох, өсөх замаар эрэмбэлэх зэрэг асуултуудыг идэвхжүүлнэ.

Үйлдвэрлэлийн хэрэглээнд зориулж popcount логикийг SQLite-н sqlite3_create_function API-г ашиглан C өргөтгөл болгон хөрвүүлэх нь тайлбарласан Python-оос 10-100 дахин илүү гүйцэтгэлийг өгч, SQLite-ийн Хаммингийн хайлтыг олон практик ажлын ачаалалд зориулсан тусгай вектор өгөгдлийн санг ашиглах боломжтой болгодог.

Бизнесүүд хэзээ зориулалтын вектор мэдээллийн сангаас илүү SQLite Hamming хайлтыг сонгох ёстой вэ?

SQLite-д суурилсан Хаммингийн хайлт болон Pinecone, Weaviate эсвэл pgvector зэрэг зориулалтын вектор өгөгдлийн сангийн хоорондох сонголт нь цар хүрээ, үйл ажиллагааны нарийн төвөгтэй байдал, байршуулалтын хязгаарлалтаас хамаарна. SQLite Hamming хайлт нь энгийн, зөөврийн байдал, зардал хамгийн чухал үед зөв сонголт бөгөөд энэ нь бизнесийн хэрэглээний дийлэнх хэсэгт тохиолддог.

Зориулалтын вектор өгөгдлийн сангууд нь тусдаа дэд бүтэц, сүлжээний хоцролт, синхрончлолын нарийн төвөгтэй байдал, томоохон хэмжээний зардал зэрэг үйл ажиллагааны томоохон зардлыг бий болгодог. Хэдэн арван мянгаас бага сая хүртэлх бүртгэлд үйлчилдэг програмуудын хувьд SQLite Hamming хайлт нь нэмэлт дэд бүтэц байхгүй хэрэглэгчдэд хамааралтай харьцуулах боломжийг олгодог. Энэ нь таны хайлтын индексийг програмын өгөгдөлтэй хамт байршуулж, тархсан системийн бүтэлгүйтлийн горимуудын бүхэл бүтэн ангиллыг арилгадаг.

Байнга асуудаг асуултууд

Хэммингийн зайн хайлт нь үйлдвэрлэлийн хайлтын програмуудад хангалттай үнэн зөв үү?

Хоёртын хэмжигдэхүүн дэх Хаммингийн зай нь хурдыг их хэмжээгээр нэмэгдүүлэхийн тулд бага зэрэг санах ойн нарийвчлалыг арилгадаг. Практикт хоёртын квантчлал нь бүрэн float32 косинустай ижил төстэй байдлын хайлтыг эргэн санах чанарын 90-95%-ийг хадгалдаг. Бизнесийн хайлтын ихэнх программуудын хувьд бүтээгдэхүүн илрүүлэх, баримт бичиг хайх, хэрэглэгчийн дэмжлэгийн мэдлэгийн суурь зэрэгт энэ нь бүрэн зөвшөөрөгдөх бөгөөд хэрэглэгчид үр дүнгийн чанарын ялгааг анзаарч чадахгүй.

SQLite нь Хаммингийн хайлтын асуулгын үед зэрэгцэн унших, бичих үйлдлийг зохицуулж чадах уу?

SQLite нь WAL (Write-Ahead Logging) горимоор дамжуулан нэгэн зэрэг уншихыг дэмждэг бөгөөд энэ нь олон уншигчдад блоклохгүйгээр нэгэн зэрэг асуух боломжийг олгодог. Зэрэгцээ бичих боломж хязгаарлагдмал — SQLite нь бичвэрүүдийг цуваа болгодог — гэхдээ энэ нь уншихтай харьцуулахад бичих нь ховор байдаг хайлт ихтэй ажлын ачаалалд саад учруулах нь ховор. Унших эрчимтэй хайбрид хайлтын програмуудын хувьд SQLite-ийн WAL горим хангалттай.

Хоёртын квантчлал нь хөвөгч векторуудтай харьцуулахад хадгалах хэрэгцээнд хэрхэн нөлөөлдөг вэ?

Хадгалах сангийн хэмнэлт нь гайхалтай. Ердийн 768 хэмжээст float32 шигтгээ нь бичлэг бүрт 3072 байт (3 KB) шаарддаг. Ижил суулгацын 128 битийн хоёртын хэш нь ердөө 16 байт буюу 192 дахин багасна. 1 сая бичлэг бүхий өгөгдлийн багцын хувьд энэ нь 3 ГБ-аас 16 МБ багтаамжтай санах ойн хоорондох ялгаа гэсэн үг бөгөөд энэ нь санах ой хязгаарлагдмал орчинд Хэмминг дээр суурилсан хайлтыг бүрэн хадгалах боломжгүй байдаг.


Ухаалаг, хайлт хийх боломжтой бүтээгдэхүүн бий болгох нь өсөн нэмэгдэж буй бизнесийг зогсонги бизнесээс ялгах чадвар юм. Mewayz нь 138,000 гаруй хэрэглэгчдийн итгэлийг хүлээсэн бизнесийн нэгдмэл үйлдлийн систем бөгөөд CRM, аналитикаас эхлээд агуулгын менежмент болон бусад зүйлс хүртэлх 207 нэгдсэн модулийг сард ердөө 19 доллараас эхлэн санал болгодог. Салгасан багажуудыг хооронд нь оёхоо больж, масштабаар зориулагдсан тавцан дээр барьж эхлээрэй.

Өнөөдөр Mewayz аялалаа app.mewayz.com дээрээс эхлүүлээрэй, үнэхээр нэгдмэл бизнесийн үйлдлийн систем танай багт юу хийж болохыг мэдрээрэй.

ашиглах боломжтой болгодог.

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