Takaisin blogiin

iPhonen kuvat pysyvät paikallisesti, ja Comma löytää ne

Myös mallit toimivat paikallisesti. Kysy omin sanoin, niin Comma löytää kuvat paikallisesta hakemistosta.

AloitaLue ohjeet

Varaat vuokra-autoa verkossa, ja lomake kysyy ajokorttisi numeroa ja voimassaoloaikaa. Ajokortti ei ole käsillä. Muistat kuvanneesi sen viime vuonna, edestä ja takaa, kun sait uuden, mutta kuvat ovat hukassa kymmenien tuhansien muiden kuvien joukossa iPhonessasi. Haluat kysyä Commalta omin sanoin ja saada nuo kaksi kuvaa takaisin.

Tämä opas näyttää yhden tavan rakentaa se: tee kuvistasi hakemisto paikallisilla malleilla ja anna Comman hakea siitä. Kyse on esimerkkikokoonpanosta yhdellä Macilla, ei Comman sisäänrakennetusta ominaisuudesta.

Kirjasto pysyy paikallisena

Comma ei tarvitse kopiota kuvistasi. Raskaan työn, eli jokaisen kuvan tekstin lukemisen ja jokaisen kuvan muuttamisen vektoreiksi, tekevät paikalliset mallit. Agentti saa haun tuloksen: muutaman kuvan tunnisteen, niiden päivämäärät, kuvista tunnistetun tekstin ja, kun sinun pitää valita, yhden pienoiskuvista kootun kontaktiarkin. Vain lopulta valitsemasi kuvat lähetetään keskusteluun.

Kuvat itse synkronoituvat edelleen iCloudin kautta; ”paikallinen” tarkoittaa tässä viennin jälkeistä tekstintunnistusta, vektoreita ja hakemistoa. Jos Comma käyttää pilvimallia, nämä hakutulokset ja jokainen kuva, jota pyydät sitä katsomaan, menevät valitsemallesi mallipalvelun tarjoajalle. Ajokortin kaltaisessa asiakirjassa tunnistettu teksti sisältää numeron ja osoitteen. Itse hakemistoa ei lähetetä minnekään. Comma on avointa lähdekoodia, ja voit myös ajaa sitä omalla koneellasi.

Rakenna kuvahakemisto

Hakemisto liittyy reittiin, jota kuvasi jo kulkevat. iPhonessa ei muutu mikään.

Kuvat synkronoidaan iPhonesta Macille iCloud-kuvilla ja viedään; sitten paikalliset mallit tekevät pienoiskuvat, lukevat tekstin, laskevat kaksi kuvavektorijoukkoa ja rakentavat kokotekstihakemiston 1 · Kuvat Macille iPhone kuvaa kuten ennenkin iCloud-kuvat synkronoi ne Macille Kuvat-appi Macilla kirjasto ulkoisella levyllä Vie alkuperäiset säilyttää ajan ja paikan 2 · Käsittely paikallisilla malleilla Pienoiskuvat myöhemmät vaiheet lukevat vain näitä Teksti Apple Vision Kuvavektorit Chinese-CLIP Kuvavektorit Qwen3-VL-Embedding Kokotekstihakemisto SQLite haku järjestää kummallakin joukolla ja yhdistää kaksi järjestystä Kuvat synkronoidaan iPhonesta Macille iCloud-kuvilla ja viedään; sitten paikalliset mallit tekevät pienoiskuvat, lukevat tekstin, laskevat kaksi kuvavektorijoukkoa ja rakentavat kokotekstihakemiston 1 · Kuvat Macille iPhone kuvaa kuten ennenkin iCloud-kuvat synkronoi ne Macille Kuvat-appi Macilla kirjasto ulkoisella levyllä Vie alkuperäiset säilyttää ajan ja paikan 2 · Käsittely paikallisilla malleilla Pienoiskuvat myöhemmät vaiheet lukevat vain näitä Teksti Apple Vision Kuvavektorit Chinese-CLIP Kuvavektorit Qwen3-VL-Embedding Kokotekstihakemisto SQLite haku järjestää kummallakin joukolla ja yhdistää kaksi järjestystä
Jokainen vaihe viennin jälkeen toimii Macilla.

Käyttöönotossa on kolme vaihetta:

  1. Tuo kuvat Macille. Synkronoi iPhonen kuvat Macille iCloud-kuvilla ja vie uudet kuvat joka päivä yhteen kansioon.

  2. Käsittele ne paikallisilla malleilla. Tunnista kunkin kuvan teksti ja muuta kuva vektoreiksi malleilla Chinese-CLIP ja Qwen3-VL-Embedding.

  3. Tallenna ne paikalliseen hakemistoon. Tallenna tulokset paikalliseen tietokantaan ja lisää hakua varten yksi komento. Tässä esimerkissä komennon nimi on lpa.

Mitä haku palauttaa

Paikallisesti haku on yksi komento. Yhteen kutsuun mahtuu useita muotoiluja, ja mallit ladataan vain kerran. Agentti muuttaa ilmaukset kuten ”viime vuonna” päivämääräväliksi.

sh
lpa search "driver license" "driver's license" "驾照" \
  --from 2025-01-01 --to 2026-01-01 --prefer text --json -n 9

Jokainen tulos kertoo, millainen näyttö sen takana on:

MerkintäMerkitys
TekstiosumaJokainen sana löytyi kuvan tekstistä.
MahdollinenKuva näyttää samanlaiselta. Samanlaiset asiat menevät helposti sekaisin.
Heikko varmuusNäytetään vain, kun parempaa ei ole.

--prefer text nostaa tekstiosumat kärkeen, mikä sopii asiakirjoille, korteille ja kuvakaappauksille. --prefer picture nostaa samannäköiset kuvat kärkeen, mikä sopii kissalle tai rannalle. Muutaman minuutin sisällä otetut lähes samanlaiset kuvat vievät listalla vain yhden paikan, ja muut ovat sen alla.

Comma-keskustelu: kun kysytään merenrantamajatalon Wi-Fi-salasanaa, Comma lukee verkon nimen ja salasanan huonekuvan pieneltä kortilta ja lähettää kuvan.
Tekstiosuma: verkon nimi ja salasana tulevat kuvassa olevan kortin sanoista. Kuva on luotu tätä esimerkkiä varten.
Comma-keskustelu: kun pyydetään kuvia kissasta ikkunalaudalla, Comma palauttaa kolme kuvaa kissasta ikkunalaudalla.
Kuvaosuma: missään näistä kuvista ei lue ”kissa” tai ”ikkunalauta”; kuvavektorit löytävät ne.

Kun kärkitulokset ovat epävarmoja, agentti ei arvaa. Se kokoaa ehdokkaiden pienoiskuvat yhdelle numeroidulle arkille, enintään yhdeksän, ja pyytää sinua valitsemaan.

Numeroitu kolme kertaa kolme -kontaktiarkki: 1 ja 2 ovat malliajokortin etu- ja takapuoli, 3 ja 4 ovat Wi-Fi-kortteja, ja loput ovat heikon varmuuden ehdokkaita.
Esimerkki kontaktiarkista; ajokortti on mallikortti. 1 ja 2 ovat etu- ja takapuolen tekstiosumia, 3 ja 4 näyttävät korteilta, ja loput ovat heikon varmuuden ehdokkaita. Vastaa ”1 ja 2”, niin agentti lähettää ajokortin molemmat puolet.

Kahden vektorijoukon yhteiskäyttö päätettiin kalibroimalla noin 50 000 kuvan kokonaisella kirjastolla. Pelkällä Qwen3-VL-Embeddingillä ihmisen valitsemat oikeat vastaukset sijoittuivat alemmas kuin pelkällä Chinese-CLIPillä. Kun kaksi järjestystä yhdistettiin, jokainen tarkistettu kohde pärjäsi vähintään yhtä hyvin kuin kummallakaan mallilla yksinään. Myös ”Mahdollinen” annetaan vain, kun molempien mallien samankaltaisuus ylittää rajan: eräässä testihaussa ”Mahdollinen”-merkittyjen kuvien määrä putosi 4 970:stä 4:ään. Hintana haku kestää 3,5–6 sekuntia noin 3 sekunnin sijaan.

Tämä esimerkki toimii MacBook Airilla, jossa on 16 Gt muistia, ja siinä on Qwen3-VL-Embeddingin 2B-versio. Tehokkaammalla koneella voit käyttää suurempia Qwen-malleja:

  • Suurempi vektorimalli. Vaihda Qwen3-VL-Embedding-2B malliin Qwen3-VL-Embedding-8B. Vaihdon jälkeen kaikkien kuvien vektorit on laskettava uudelleen uudella mallilla.

  • Kuvaukset ja tunnisteet jokaiselle kuvalle. Aja lisäksi Qwen3-VL-4B-Instruct tai Qwen3-VL-8B-Instruct, joka kirjoittaa jokaisesta kuvasta yhden rivin kuvauksen ja muutaman tunnisteen, ja tallenna ne tekstihakemistoon. Esimerkiksi MacBook Prolla, jossa on 24 Gt muistia, 8B-malli toimii 8-bittisellä kvantisoinnilla. Tunnisteet sopivat karkeaan rajaukseen; niiden oikeellisuutta ei taata.

Entä englanti? Chinese-CLIP on koulutettu enimmäkseen kiinankielisillä kuvilla ja teksteillä, joten se ei ole luotettava englanninkielisissä hauissa. Kaksi muuta osaa eivät kärsi: tekstintunnistus lukee sekä kiinaa että englantia, ja Qwen3-VL-Embedding tukee monia kieliä. Laita siis kiinan- ja englanninkieliset muotoilut samaan hakuun, kuten yllä oleva komento tekee; tämän voi kirjoittaa Skilliin. Jos kirjastosi ja kysymyksesi ovat enimmäkseen englanniksi, voit myös vaihtaa Chinese-CLIPin alkuperäiseen CLIPiin, jolloin vektorit on taas laskettava uudelleen.

Löydä perhe ja ystävät

Kuvat-appi ryhmittelee jo saman ihmisen kasvot. Hakemisto käyttää näitä ryhmiä suoraan eikä tee omaa kasvojentunnistusta.

  1. Nimeä ihmiset ensin. Ensimmäisellä kerralla agentti poimii näistä ryhmistä muutaman kuvaerän, numeroi ne ja kysyy, keitä he ovat. Vasta kun vastaat ”3 on äiti”, se muistaa sen. Ryhmää, jota et ole vahvistanut, ei pidetä kenenkään.

  2. Hae ihmisen mukaan. Sen jälkeen, kun mainitset nimen, haku katsoo vain kuvia, joissa kyseinen ihminen on. Nimiä voi yhdistää: mainitse kaksi ihmistä, niin saat vain kuvat, joissa ovat molemmat, eli yhteiskuvanne.

  3. Yhdistä muihin ehtoihin. Nimen voi yhdistää kuvan sisältöön ja aikaan, esimerkiksi ”kuvat minusta ja äidistä rannalla viime vuonna”:

sh
lpa search "beach" --person Me --person Mom \
  --from 2025-01-01 --to 2026-01-01 --prefer picture --json -n 9

Jos nimeä ei ole vahvistettu tai kahdella ihmisellä on sama nimi, haku kertoo sen arvaamatta. Väärän nimen voi korjata, ja jokaisen korjauksen voi perua.

Näin videot löytyvät

Videoita haetaan erikseen kuvista. Oletushaku katsoo vain kuvia. Jos haluat vaikkapa videon, jossa lapsesi puhaltaa syntymäpäiväkynttilät, kerro Commalle etsiväsi videota, niin se lisää hakuun --source video:

sh
lpa search "blowing out candles" "birthday cake" --source video --json -n 9

Taustalla on kolme vaihetta:

  1. Ota ruutuja. Itse video ei koskaan mene malliin. Hakemisto-ohjelma ottaa videosta ruudun 5 sekunnin välein, enintään 12 ruutua videota kohden.

  2. Hae ruutujen perusteella. Ruudut käsitellään samoin kuin kuvat: tekstintunnistus ja molemmat vektorijoukot. Haku vertaa näitä ruutuja; kun yksi osuu, koko video löytyy, ja se vie tuloksissa vain yhden paikan.

  3. Lähetä video. Kun olet valinnut, agentti lähettää sen komennolla lpa video.

Comma-keskustelu: kun pyydetään videota bambulautoista Yangshuossa, Comma palauttaa yhden 12 sekunnin videon lautoista, jotka liukuvat alas padolta.
Videohaku: osuvat ruudut kuuluvat yhteen videoon, joten video on yksi tulos.

Toistaiseksi se katsoo vain kuvaa, ei kuuntele ääntä. Videossa puhuttua ei voi vielä hakea, eikä videossa näkyviä ihmisiä vielä tunnisteta. Ruutujen määrä on rajattu, joten pitkässä videossa ohimennen vilahtava asia voi jäädä löytymättä.

Näin LocalPhotoAgent on rakennettu

Oppaan lpa tulee LocalPhotoAgentista, itse kirjoittamastamme hakemisto-ohjelmasta, jonka julkaisemme avoimena lähdekoodina. Hakemiston rakentaminen on kuvattu yllä; lisäksi kaksi asiaa:

  • Sen voi pysäyttää milloin tahansa. Jokaisen kuvan jokainen vaihe kirjataan erikseen. Jos se pysähtyy kesken, se jatkaa seuraavalla kerralla; jos muutat asetusta, vain asianomainen vaihe ajetaan uudelleen. Työskennellessään se seuraa muistia, lämpötilaa ja levytilaa ja pysähtyy, kun jokin ylittää rajansa.

  • Se antaa agentille muutaman komennon. lpa search hakee, lpa sheet tekee kontaktiarkin, lpa preview lähettää kuvia ja lpa video lähettää videoita. Kun agentti etsii kuvia, se kutsuu niitä tässä järjestyksessä:

Comma-agentti ajaa Connectorin kautta komennon lpa search, epävarmana lpa sheet, sitten lpa preview tai lpa video; vain arkki ja lähetys lukevat ulkoista levyä Comma-agentti ajaa komentoja Connectorin kautta lpa search hakee vain tietokannasta lpa sheet tekee arkin, kun on epävarma lpa preview / video lähettää kuvan tai videon Ulkoinen levy pienoiskuvat ja alkuperäiset, luetaan vain arkkia tai lähetystä varten Comma-agentti ajaa Connectorin kautta komennon lpa search, epävarmana lpa sheet, sitten lpa preview tai lpa video; vain arkki ja lähetys lukevat ulkoista levyä Comma-agentti ajaa komentoja Connectorin kautta lpa search hakee vain tietokannasta lpa sheet tekee arkin, kun on epävarma lpa preview / video lähettää kuvan tai videon Ulkoinen levy pienoiskuvat ja alkuperäiset, luetaan vain arkkia tai lähetystä varten

Yhdistä Comma

Tämä olettaa, että LocalPhotoAgent toimii jo Macillasi. Yhdistämisessä on neljä vaihetta:

  1. Lisää laite. Mene Commassa kohtaan Settings > Devices ja napsauta Add device, niin saat asennuskomennon.

  2. Aja komento. Aja se Päätteessä sillä Macilla, jolla kirjasto on, jotta Comma Connector asentuu.

  3. Avaa käyttöoikeus. Uusi laite on aluksi tilassa Off. Vaihda se tilaan Full, jotta agentti voi ajaa komennon lpa.

  4. Kirjoita Skill. Kerro agentille, että se hakee ensin, lähettää kontaktiarkin, kun on epävarma, ja lähettää kuvat vasta, kun olet valinnut. Voit myös yksinkertaisesti pyytää Commaa ”luomaan Skillin”.

Sen jälkeen riittää kysyä kuten missä tahansa keskustelussa: ”Etsi viime vuonna ottamani kuvat ajokortistani, edestä ja takaa.”

Comma-keskustelu: kun pyydetään viime vuoden kuvia ajokortista, edestä ja takaa, Comma lähettää kaksi kuvaa malliajokortista.
Oppaan alun kysymys, vastattuna. Ajokortti on mallikortti.

Luottamus ja rajat

Hakemisto vain lukee alkuperäisiä kuvia. Se ei koskaan siirrä, muokkaa tai poista niitä. Haku ei koske ulkoiseen levyyn lainkaan; vain kontaktiarkin tekeminen ja kuvan lähettäminen lukevat sitä. Kuvien siirtäminen tai poistaminen ei kuulu tähän kokoonpanoon. Huomaa kuitenkin, että Full-käyttöoikeudella agentti voi ajaa tällä Macilla muitakin komentoja kuin lpa.

Tekstiosuma tarkoittaa vain, että sanat löytyivät, ei sitä, että kuva on se, jota haluat. ”Mahdollinen” on vain ehdokas. Kun Comma merkitsee pyynnön valmiiksi, tarkista sen lähettämät kuvat.

Ensimmäisellä kerralla voit sanoa: ”Etsi viime vuonna ottamani kuvat ajokortistani. Näytä ensin kontaktiarkki, äläkä lähetä, siirrä tai poista mitään.”

Try Comma, Now.

Aloita