Launchist-iň Go platformasy bolan launch-tools-daky multi-tenant bilim bazasy. Toparlar resminamalary ýükleýär, olar embedding görnüşinde pgvector bilen PostgreSQL-e ýazylýar, soňra toparlar olar bilen çeşmelere esaslanýan, stream görnüşinde berilýän jogaplar arkaly söhbetdeşlik edýär.
Meniň rolum
Backend programmist. Resminamalary gaýtadan işlemek pipeline-ny, pgvector ammaryny, semantik gözlegi we söhbet taryhy saklanýan stream görnüşli çaty döretdim.
Tehnologiýalar
Go
Echo
LangChain (Go)
PostgreSQL
pgvector
Redis
WebSocket
Mesele
Dil modeli guramanyň öz resminamalaryny bilmeýär we olar barada soralanda ynamly ýagdaýda toslap tapýar. Açar sözler boýunça gözleg çeşme tekstden başgaça beýan edilen soraglara jogap tapmaýar. Platforma köp müşderä hyzmat edýändigi üçin her guramanyň bilimleri berk aýry saklanmaly.
Arhitektura
Resminamalary kabul etmek we soraglara jogap bermek aýry akymlar. Ýüklenen faýllar parslanýar, böleklere bölünýär, embedding-e öwrülýär we pgvector-e toplumlaýyn ýazylýar — her namespace üçin bir kolleksiýa. Sorag berlende ol hem embedding-e öwrülýär, çata birikdirilen namespace-lerde iň ýakyn bölekler tapylýar, olar söhbet taryhy bilen birleşdirilýär we saýlanan LLM-e iberilýär; jogap müşderä WebSocket arkaly stream görnüşinde gaýdyp gelýär. Serwis Go (Echo) dilinde ýazylan we Google Cloud Run-da işleýär.
Esasy çözgütler
01Aýratyn wektor bazasynyň ýerine pgvector
Näme üçin
Wektorlar resminamalar, metadata we söhbet taryhy bilen bir PostgreSQL-de ýanaşyk saklanýar, şonuň üçin süzmek, join-lar we tranzaksiýalar adaty ýaly işleýär, işletmeli ulgamlaryň sany bolsa bir sany azalýar. Öz LangChain (Go) ammarym HNSW indeksini we metadata süzgüçlerini goşýar; shemany döretmek PostgreSQL advisory lock-lary bilen goralýar, şonuň üçin birnäçe Cloud Run nusgasy bir wagtda howpsuz işe başlap bilýär.
Kompromis
Örän uly masştabda ýörite wektor bazasy has çalt indekslemegi we gözlegi hödürläp biler.
02Namespace — izolýasiýanyň we gözlegiň birligi
Näme üçin
Her namespace gurama içindäki aýratyn wektor kolleksiýasy. Çatyň konteksti haýsy namespace-lerde gözlemelidigini saýlaýar, şonuň üçin topar bilim çeşmelerini utgaşdyryp bilýär we başga müşderiniň maglumatlaryna hiç haçan degmeýär.
03Kabul etmek — çäklendirilen concurrency bilen aýratyn pipeline
Näme üçin
Parslamak we embedding haýal işleýär we embedding API-niň çäklendirmelerine bagly. Faýllary çatyň ýolundan daşarda, bir wagtda kesgitli sanda işlemek jogaplary çalt saklaýar we API kwotasyny hem, nusganyň ýadyny hem goraýar.
Kompromis
Täze ýüklenen resminama diňe işlenip gutarandan soň gözlegde peýda bolýar.
04Söhbet taryhy bilen stream görnüşindäki jogaplar
Näme üçin
Tokenler model olary döredişi ýaly WebSocket arkaly iberilýär, şonuň üçin ulanyjylar jogabyň başyny derrew görýär. Öňki ädimler hem goşulýar, şonuň üçin “ikinji wariant barada näme?” ýaly yzky soraglara düşünilýär.
Kompromis
Uzyn promptlar tokenleriň has ýokary çykdajysyny aňladýar, şonuň üçin taryhy gysgaltmaly bolýar.
Näme döretdim
Multi-tenant model: guramalar, proýektler, namespace-ler, agzalar we çakylyklar
PDF, DOCX, XLSX we arhiwleri çäklendirilen concurrency bilen kabul etmek
LangChain (Go) üçin HNSW indeksli we metadata boýunça süzgüçli öz pgvector ammarym
Jogaplar WebSocket arkaly stream görnüşinde berilýär; söhbet taryhy we üýtgedip bolýan ulgam promptlary
Birnäçe LLM prowaýderi (OpenAI, Anthropic, Gemini) we GCP Secret Manager-de saklanýan müşderiniň öz açarlary