Alle projekter

Selvhostet open source-andenhjerneOpen sourceOpen source

OpenBrain

Gem reels, opslag, links og skærmbilleder. OpenBrain læser dem, opsummerer dem og lader dig finde dem igen i almindeligt sprog.

Skærmbillede af grænsefladen i OpenBrain

Resultat

Søgning i almindeligt sprog på alt det gemte

Problemet

Alt, du gemmer, ender et sted, du aldrig kigger igen. Bogmærker, gemte reels, skærmbilleder: det hele bliver skrevet og aldrig læst.

Det jeg byggede

Der blev bygget en ingest-pipeline, som læser hvert element på vej ind, trækker tekst ud af skærmbilleder med OCR og transskriptioner ud af video, og vektoriserer resultatet, så der kan søges på betydning.

Resultatet

Du kan bede om den ting, du halvt husker at have gemt, og faktisk få den tilbage. Selvhostet, så arkivet forbliver dit.

Sådan virker det

  1. 01

    Et element gemmes: et link, et skærmbillede, en reel, et opslag.

  2. 02

    Det læses på vej ind, ikke på vej ud: OCR til billeder, transskription til video, udtræk til sider.

  3. 03

    Den udtrukne tekst opsummeres og vektoriseres, så elementet kan findes på, hvad det handlede om, og ikke på filnavnet.

  4. 04

    Retrievalet besvarer en halvt husket beskrivelse i stedet for at kræve de præcise ord, det indeholdt.

AI-laget

OCR og transskription ved ingest, opsummering for et læsbart spor, og embeddings til betydningsbaseret søgning. At gøre den dyre læsning én gang ved skrivning er det, der gør søgningen billig ved læsning.

Engineeringlaget

En ingest-kø, der overlever det element, den ikke kan læse, et vektorlager, og en deploymentform, der er simpel nok til, at selvhosting er realistisk frem for teoretisk.

Centrale tekniske beslutninger

Læs ved ingest, ikke ved forespørgsel.

At behandle på vej ind koster mere én gang og gør hver senere søgning hurtig. At behandle på vej ud betyder, at hver forespørgsel betaler for OCR igen.

Selvhostet, på grund af det folk gemmer.

Et personligt arkiv er det sidste, man burde bede nogen om at overlade til en tredjepart. Selvhosting er funktionen, ikke en deploymentmulighed.

Bygget med

Next.jsVector DBLLMOCR

Relateret