Esasy mazmuna geç
Ähli proýektler

AI · Retrieval-augmented generation

RAG bilim bazasy

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

RAG bilim bazasy — Arhitektura diagrammasyingestionquestion answeringDocumentspdf · docx · xlsxProcessparse · chunkEmbedembeddingsHistoryconversationpgvectorper namespaceQuestionWebSocketSearchsemantic · top-kContextchunks + historyLLMstreamed answer
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

  1. 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.
  2. 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.
  3. 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.
  4. 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