LanceDB ilipakia embeddings 100k za OpenAI kwa kasi ya mara 22 zaidi kuliko pgvector, wakati pgvector ilijibu mzigo uleule wa kazi kutoka kwa wateja wanane wa wakati mmoja kwa kasi ya mara 1.8 zaidi. Pengo katika ucheleweshaji wa thread moja (single-thread latency) na ufanisi wa uhifadhi pia lilipekee upande wa LanceDB, likiwapa watengenezaji njia inayozingatia data ya kuchagua hifadhi ya vector.

Kwa nini kipimo (benchmark) ni muhimu sasa

Utafutaji wa vector (Vector search) umehamia kutoka maabara za utafiti hadi kwenye huduma za uzalishaji (production services) kama vile injini za mapendekezo (recommendation engines) na utengenezaji unaoongezwa na upatikanaji (retrieval-augmented generation - RAG). Timu nyingi tayari zinatumia PostgreSQL, hivyo nyongeza (extension) ya pgvector inaahidi utafutaji wa ufanano (similarity search) bila kuhitaji miundombinu mipya. Hata hivyo, hifadhi maalum kama LanceDB zinadai ucheleweshaji mdogo (lower latency) na uhifadhi wa gharama nafuu. Timu lazima ichague kati ya “iongeze kwenye kile tulicho nacho” na “tumia injini iliyotengenezwa kwa madhumuni maalum,” uamuzi ambao unaathiri gharama na utendaji kadiri seti za data zinavyokua na viwango vya maombi (request rates) vinavyoongezeka.

Jinsi jaribio lilivyowekwa

Mifumo yote miwili iliweka kielelezo (indexed) kwenye vector 100k zilezile, kila moja ikiwa na vipimo (dimensions) 1536, zilizozalishwa na modeli ya embedding ya OpenAI. Tulipima kasi ya uingizaji (ingestion speed), matumizi ya diski, ucheleweshaji wa hoja ya thread moja (single-thread query latency) na uwezo wa kupitisha data (throughput) kwa wateja wanane wa wakati mmoja.

Matokeo ya kulinganisha moja kwa moja

  • Kasi ya uingizaji (Ingestion speed) – LanceDB ilirekodi faida ya mara 22.
  • Ukubwa wa diski (Disk footprint) – LanceDB ilihifadhi vector katika takriban sehemu moja ya tatu ya nafasi iliyotumika na pgvector.
  • Ucheleweshaji wa thread moja (Single-thread latency) – Hoja (queries) zilifanya kazi kwa kasi ya mara mbili zaidi kwenye LanceDB.
  • Upanuzi wa uendeshaji wa pamoja (Concurrency scaling) – Kwa wateja wanane sambamba, pgvector ilitoa throughput ya mara 1.8 zaidi kuliko LanceDB.

Mizizi ya kimitandao (architectural) ya tofauti hizo

LanceDB ni maktaba iliyojumuishwa (embedded library) inayofanya kazi ndani ya mchakato (process) wa Python unaohifadhi programu. Operesheni zote hubaki ndani ya mchakato huo, hivyo data haivuki mpaka wa mtandao na kielelezo (index) huongezwa kwa gharama ndogo sana (minimal overhead). Muundo huu unafanya vizuri kwa kazi za thread moja lakini unakwama pale thread nyingi za Python zinaposhindana kwa ajili ya Global Interpreter Lock (GIL), ambayo inazuia utekelezaji wa kweli wa sambamba wa Python bytecode.

pgvector inaongeza PostgreSQL upande wa seva. Kila muunganisho wa mteja huanzisha mchakato tofauti wa seva, hivyo kuepuka GIL kabisa. Mpangaji (planner) wa PostgreSQL huamua jinsi ya kutekeleza utafutaji wa ufanano, na seva inaweza kuanzisha michakato mingi ili kuhudumia maombi ya wakati mmoja. Ufungaji huu (isolation) unaelezea uwezo bora wa kupanuka (scaling) chini ya mzigo.

Changamoto za kuchuja na upangaji wa hoja

Mifumo ya RAG ya ulimwengu halisi mara nyingi huunganisha ufanano wa vector na vichujio vya kawaida (kama vile WHERE user_id = 42). LanceDB hutumia kichujio cha awali (prefilter) ambacho hufanya kazi kwa utabiri unaoeleweka katika kila awamu. pgvector inategemea mpangaji wa hoja (query planner) wa PostgreSQL, ambao unaweza kuchagua ukaguzi wa kielelezo (index scan) wa haraka au kurudi kwenye ukaguzi sahihi (exact scan) wa polepole kulingana na takwimu. Kuendesha ANALYZE baada ya kupakia jedwali la pgvector kwa wingi huonyesha upya takwimu hizo; bila hiyo, uwezo wa kupata matokeo (recall) unaweza kushuka hadi karibu sifuri, jambo linalovuruga utafutaji.

Lini kila chaguo linafaa

Chagua pgvector ikiwa

  • Stack yako tayari inajumuisha PostgreSQL na unataka kuepuka kuongeza huduma nyingine.
  • Unatarajia watumiaji wengi wa wakati mmoja au simu za API.
  • Dhamana za ACID na zana za DBA zinazojulikana ni muhimu.

Chagua LanceDB ikiwa

  • Mtiririko wako wa kazi ni pipeline ya ML inayoingiza embeddings mpya mara kwa mara.
  • Unahitaji njia ya haraka zaidi ya kuandika na ucheleweshaji mdogo kwa mawakala wa ombi moja (kama vile chat bots).
  • Gharama ya diski ni suala la kuzingatia na unaweza kuvumilia ukomo wa utendaji wa thread moja.

Hitimisho: Ikiwa kasi ya uingizaji, uhifadhi mdogo, na ucheleweshaji wa ombi moja ndivyo muhimu zaidi, LanceDB inashinda. Ikiwa lazima uhudumie watumiaji wengi kwa wakati mmoja na unategemea mpangilio uliopo wa PostgreSQL, faida ya pgvector katika uendeshaji wa pamoja (concurrency) inafanya iwe chaguo salama zaidi. Tumia namba kutoka kwenye kipimo hiki ili kuoanisha hifadhi na kipimo muhimu zaidi cha bidhaa yako.