Back to ""Lakimies GPT:n" rakentaminen blogiisi - Osa 1: Esittely ja arkkitehtuuri"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article C# LLM mostlylucid.blogllm RAG

"Lakimies GPT:n" rakentaminen blogiisi - Osa 1: Esittely ja arkkitehtuuri

Wednesday, 12 November 2025

VAROITUS: NÄYTTELEVÄT NÄYTTEET, JOITA EI OLE KÄYTETTY.

Se on todennäköisesti suuri osa siitä, mikä alla on, ei toimi. Minä luon nämä minulle ja sitten teen kaikki askeleet ja saat näytesovelluksen toimimaan...Olet ollut ovela ja nähnyt ne! ne ovat todennäköisesti valmiita joulukuun puolivälissä.

## Johdanto

Vyöt kiinni, koska tästä tulee pitkä sarja!

Jos olet seurannut tätä blogia, tiedät, että olen hieman pakkomielteinen löytämään kiinnostavia tapoja käyttää LLM:itä ja tekoälyä käytännön sovelluksissa.

Minulla on uusi projekti, joka yhdistää rakkauteni bloggaamiseen, C#:iin ja tekoälyyn: kirjoitusassistentin rakentaminen, joka auttaa minua laatimaan uusia blogikirjoituksia käyttämällä olemassa olevaa sisältöäni tietopohjana.

HUOMAUTUS: Tämä on osa kokeilujani tekoälyllä (avustettu suunnittelu) + omalla muokkauksellani.

  • Sama ääni, sama pragmatismi, vain nopeammat sormet.
  • Ajattele, kuinka nykyaikaiset oikeuskäytännöt hyödyntävät oikeuskäytäntöön koulutettuja LLM-koneita laatiessaan yhteenvetoja, esityksiä ja sopimuksia.
  • Ne eivät lähde tyhjästä - järjestelmä viittaa olennaisiin ennakkotapauksiin, ehdottaa onnistuneisiin aiempiin asiakirjoihin perustuvaa kieltä ja ylläpitää johdonmukaisuutta vakiintuneiden mallien kanssa.
  • Juuri sitä me täällä rakennamme, mutta blogin sisältöä varten.
  • Tavoitteena on luoda tekoälyä käyttävä kirjoittaja-avustaja, joka:

Auttaa laatimaan uusia blogikirjoituksia omalla vakiintuneella tyylilläniEhdottaa merkityksellistä sisältöä aiemmista artikkeleista viittaukseenHavaitsee samanlaisia virkoja säilyttääkseen johdonmukaisuuden

Autogeneraa sisäisiä kytköksiä aiheeseen liittyviin artikkeleihin

Toimii kuten "GitHub Copilot for your blog"

  • Tämä sarja kattaa täydellisen rakentamisenNoudettava Augmented Generation (RAG)
  • **järjestelmä C#, joka toimii Windowsissa.**Käytämme uusimpia lähestymistapoja ja kehyksiä, ja selitän jokaisen uuden teknologian kohdatessamme sen.
  • **Laitteistojeni asetukset (ja vähimmäistiedot)**My Development Machine:

GPU**: NVIDIA RTX A4000 (16GB VRAM)**Suoritin

AMD Ryzen 9 9950X

  • RAM-muisti: 96GB DDR5
    • Tämä on minun erityinen järjestelyni, mutta sinä
    • En tarvitse tätä laitteistoa
  • **Seurataan perässä.**Tässä on eri osien vähimmäisvaatimukset:
    • GPU-kiihdytys (suositeltu, ei pakollinen)
  • VähintäänNVIDIA GPU ja 8GB VRAM (esim. RTX 3060, GTX 1070 Ti)

Pystyy ajamaan 7B-parametrimalleja quantisoinnin avulla

  • Kunnollinen upotusnopeusMiellyttävä
  • **: 12GB+ VRAM (esim. RTX 3060 12GB, RTX 4060 Ti)**Suorita suurempia malleja tai laadukkaampia kvantitaatioita
  • Minun asetelmani
    • : 16GB (A4000) - Pystyy pyörittämään 13B-malleja mukavasti
    • CPU-Vain vaihtoehto
    • Vähintään

: Moderni quad-core-suoritin

  • Suositellaan: 8+ corea (kohtuullista syöttöä varten)
    • Kaikki toimii vain suorittimella, vain hitaammin:
  • Sumutussukupolvi: ~5-10x hitaampiLLM-päätelmä: ~10-50x hitaampi
    • Yhä täysin käyttökelpoinen kirjoitusavustajaksi!
  • RAM-vaatimuksetVähintään

: 16GB järjestelmä RAM

  • CPU-päätelmä vain 7B-malleilleMiellyttävä
  • 32GBParempi suuremmille malleille prosessorilla

Minun asetelmani

: 96GB - Overkill, 32GB on runsaasti

  • VarastointiSSD
  • : Suositellaan mallilataukseenAvaruus
  • : ~20GB malleihin ja vektoritietokantaanEntä Intel/AMD NPU:t?

**Modernit prosessorit sisältävät nyt tekoälykiihdyttimet:*Intel Core Ultra(Meteor Lake+) - Intel AI Boost (NPU)*AMD Ryzen tekoäly

(7040/8040 sarja) - XDNA NPU

  • ✅ Great for: On-device inference, battery efficiency (laptops)
  • ⚠️ Limited for our use: Immature .NET/ONNX Runtime support
  • ❌ Not ready for: This project's primary path

AMD Ryzen AI Max

  1. (Strix Point) - Enintään 50 TOPSTärkeää: NPU:t ovat vain päätelmä!
  2. NPU:ssa ei "rakenneta" tai kouluteta malleja - ne on suunniteltujuokse
  3. **esikoulutetut mallit tehokkaasti.**Mallit koulutetaan pilvi-GPU:illa (tai työasemilla), ladataan ja otetaan käyttöön NPU:ihin päättelyä varten.
  4. **Nykyinen tila käynnissä oleville malleille NPU:illa (kirjoittamisesta):**Miksi ei NPU:ita tähän sarjaan?
  5. Ohjelmistoekosysteemi: CUDA:lla on yli 15 vuoden kypsyysaika, NPU:n kannatus .NETissä on nousussa

Mallin yhteensopivuus

  • : Useimmat GGUF-mallit CUDA/CPU, NPU-optimoidut mallit ovat harvinaisiaDokumentaatio: Rajalliset resurssit NPU:n kehittämiseen C#:ssä
  • Suorituskyky
  • : Tällä hetkellä hitaammin kuin erilliset GPU:t työtaakamme
  • SuoraML-tuki

: Yhä kokeellinen LLM-päätelmän kannalta

# Use DirectML execution provider (supports NPU)
dotnet add package Microsoft.ML.OnnxRuntime.DirectML

# In code:
var sessionOptions = new SessionOptions();
sessionOptions.AppendExecutionProvider("DML"); // DirectML
var session = new InferenceSession("model.onnx", sessionOptions);

**Voitko käyttää NPU:ita päätelmänä?**Kyllä, mutta:VaatimuksetSuora MLSuorituksen suorittaja ONNX:n aika-ajossaMallien on oltava ONNX-muodossa (ei GGUF)

C#-tuki on kokeellistaSuorituskyky on tällä hetkellä alakynnessä verrattuna CUDA:han

Miten kokeilla NPU-päätelmää (edistyneitä käyttäjiä):

Tulevaisuusharkinta

  1. : KerranONNX-ajoaika
  2. sekäSuora ML
  3. **Kypsennä heidän NPU-tukeaan (todennäköisesti 2024-2025), näistä tulee toteuttamiskelpoisia vaihtoehtoja päättelylle!**Loppupäätelmä
  4. **: Näytän GPU-kiihdytetyn polun, mutta huomaan vain CPU-vaihtoehdot kauttaaltaan.**Voit käynnistää vain suorittimen ja päivittää sen myöhemmin!
  5. Mitä me rakennammeLopullisessa järjestelmässä on useita komponentteja:
  6. Markdownin nielemisputki- käsittelee kaikki blogikirjoitukset, pilkkoo ne älykkäästi ja luo upotuksia

Vektoritietokanta

- Kaupat upottavat ja mahdollistavat samankaltaisten sisältöjen semanttisen haun

Windows-asiakassovellus

    • Työpöydän kirjoittaja-apulainen toimittajalla ja ehdotuspaneelilla
  • LLM-integraatio

    • Paikallinen GPU-keskeinen päätelmä sisällön tuottamisesta
  • Lainaus & Link Generation

  • Automaattisesti välitetään sisäisiä linkkejä ja viittauksia niihin liittyviin virkoihin

  • Tyylin yhdenmukaisuusmoottori

    • Opettelee olemassa olevien viestien kuvioita ylläpitääkseen ääntä ja rakennetta
  • Ajattele sitä "GitHub Copilot kohtaa Grammarlyn", mutta harjoittele erityisesti blogisi sisällön ja tyylin mukaan.

  • Miksi "Lawyer GPT"?

  • Nykyaikaiset asianajotoimistot käyttävät laaja-alaisiin oikeuskirjastoihin koulutettuja LLM-koneita apunaan oikeudellisten asiakirjojen laatimisessa.

Esitystä kirjoitettaessa järjestelmä:

Referenssejä asiaan liittyvistä ennakkotapauksista ja aiemmista onnistuneista väitteistä

Ehdottaa aiemmin toimineita kielitottumuksia

Johdonmukaisuus oikeudellisten kirjoitusstandardien kanssa säilyy

Leikkauslähteet automaattisesti

Se on meidän mallimme.

Kun alan kirjoittaa "Adding Entity Framework for...", järjestelmän tulisi:Etsi aiemmat EF-virkani, Ehdota rakenteellisia kuvioita, joita olen käyttänyt aiemminTarjoa merkityksellisiä koodin näppäimiä aiemmista artikkeleista

Luo automaattisesti linkkejä aiheeseen liittyviin virkoihin

Ylläpidä kirjoitustyyliäni ja teknistä syvyyttäniToisin kuin tavalliset tekoälyä kirjoittavat avustajat, järjestelmämme perustuu varsinaiseen aiempaan sisältöön, joten se ei viittaa siihen, että asiat olisivat ristiriidassa sen kanssa, mitä olen jo kirjoittanut.SarjakatsausSeuraavien viikkojen aikana käsittelemme seuraavaa:).

Osa 1 (This Post): Esittely ja arkkitehtuuri

Selvitämme, mitä rakennamme ja miksi, sekä katamme arkkitehtoniset päätökset.

Osa 2: GPU:n asetukset ja CUDA C#-muodossa

Windows-järjestelmän asennus GPU-kiihdytetyille tekoälytyötahdille, asennusCUDA, cuDNN, ja testaus, että C# voi todella nähdä ja käyttää GPU.Osa 3: Understanding Upbeddings & Vector DatabasesSukella syvälle siihen, mitä upotukset todellisuudessa ovat, miten ne mahdollistavat semanttisen haun ja valitsevat oikean vektoritietokannan (pilaaja: todennäköisesti käytämme

Qdrant

taipgvector, Osa 4: Ruoansulatusputken rakentaminenMerkintätiedostojen käsittely, älykkäät porausstrategiat (kappaleita ei voi vain jakaa!) ja kaiken sisältömme sulauttaminen.

Osa 5: Windows-asiakas

Oikean kehyksen valitseminen (

WPF

Avalonia

, tai

MAUI

?), rakentaa UI, ja tekee siitä todella miellyttävä käyttää.

Osa 6: Paikallinen LLM-integraatio

  1. Paikallisten mallien käyttöONNX-ajoaika
  2. laama.cppsidonnaisuudet tai muut lähestymistavat.
  3. **Hyödynnät A4000:n täysin!**Osa 7: Content Generation & Prompt Engineering
  4. **Kokoaminen yhteen – semanttinen sisällön etsiminen, konteksti-ikkunan hallinta, nopea kirjoittamisen suunnittelu ja johdonmukaisten ehdotusten tuottaminen.**Osa 8: Kehittyneet ominaisuudet ja tuotannon käyttöönotto
  5. **Automaattinen linkittäminen aiheeseen liittyviin viesteihin, tyylin johdonmukaisuuden tarkastaminen, koodinvaihtoehdotukset ja järjestelmän tekeminen todella hyödylliseksi päivittäisessä kirjoittamisessa.**Miksi RAG?

Ennen kuin sukeltamme arkkitehtuuriin, puhutaan siitä, miksi RAG (Retval Augmented Generation) on tässä oikea lähestymistapa.

Fine-Tuningin ongelma

Voisi ajatella: "Mikset vain hienosäädä LLM:tä kaikissa blogikirjoituksissa?" Siinä on useita ongelmia:

  1. Kustannukset ja monimutkaisuus
    • Hienosäätö on kallista (sekä laskelmissa että ponnisteluissa)
  2. Viihtyvyys
    • Jokainen uusi blogikirjoitus tarkoittaa uudelleenkoulutusta
  3. Musta laatikko
  • Vaikea ymmärtää, mitä malli "oppi"

  • ✅ Always up-to-date (just re-index new posts as you write them)

  • ✅ Grounded in your actual writing (maintains consistency)

  • ✅ Traceable (know which past posts influenced suggestions)

  • ✅ Efficient (no expensive retraining for every new post)

  • ✅ Flexible (can swap out LLMs or adjust search strategies)

  • ✅ Privacy-preserving (everything runs locally)

Hallusinaatiot

  • Ei ole takeita, etteikö malli keksisi asioita.
graph TB
    A[Markdown Files] -->|Ingest| B[Chunking Service]
    B -->|Text Chunks| C[Embedding Model]
    C -->|Vectors| D[Vector Database]

    E[User Writing] -->|Current Draft| F[Windows Client]
    F -->|Embed Context| C
    C -->|Query Vector| D
    D -->|Similar Content| G[Context Builder]

    G -->|Relevant Past Articles| H[Prompt Engineer]
    H -->|Prompt + Context| I[Local LLM]
    I -->|Generated Suggestions| J[Link Generator]
    J -->|Suggestions + Citations| F

    F -->|Display| K[Editor with Suggestions]

    class C,I embedding
    class D,K output

    classDef embedding stroke:#333,stroke-width:4px
    classDef output stroke:#333,stroke-width:4px

Ei lainauksia

  • Vastausten jäljittäminen lähteisiin on vaikeaa.

  • Miten RAG ratkaisee tämän

  • RAG yhdistää molempien maailmojen parhaat puolet: LLM:ien voiman ja tarkan haun luodakseen kontekstitietoisen sisällöntuotannon.

  • Virtaus on:

  • Käyttäjä alkaa kirjoittaa (esim. "REST-rajapinnan rakentaminen ASP.NET Corella...")

  • Järjestelmä löytää semanttisesti samanlaisia menneitä artikkeleita

Järjestelmä syöttää merkityksellisiä osia LLM:n yhteydessäLLM tuottaa aiempiin sisältöihin perustuvia ehdotuksia/jatkoa

Järjestelmä tarjoaa ehdotuksia, joissa viitataan lähdevirkoihin

Tämä tarkoittaa:

Järjestelmäarkkitehtuuri

Anna minun murtaa avainosat, joita rakennamme:

  • 1 Täysosuma
  • Markdownin nielemisputki

**Tämä osa:**Lukee blogihakemiston markown-tiedostoja

Chunking-strategialla on valtava merkitys.

Liian pieni ja menetät kontekstin.

**Liian iso ja tuhlaat LLM:n konteksti-ikkunan.**Tarvitsemme katkelmia, jotka ovat semanttisesti merkityksellisiä - täydellisen ajatuksen tai osion, eivät mielivaltaisia kappalemurtumia.

Teknologiavalinta

: Käytämme todennäköisesti joko:

Tuomionmuuntajat

mallit (voi ajaa ONNX Runtime C#:n kautta)

  • ✅ Mature, stable, lots of resources
  • ✅ Native Windows performance
  • ❌ Windows-only
  • ❌ Looks dated unless you invest in UI libraries

OpenAI:n upotettavat mallit (API:n kautta)

  • ✅ Cross-platform (XAML-based)
  • ✅ Modern, actively developed
  • ✅ Similar to WPF
  • ❌ Smaller ecosystem

BGE-mallit

  • ✅ Cross-platform
  • ✅ Microsoft-backed
  • ❌ Still maturing
  • ❌ More mobile-focused

(viimeisimmän avoimen lähdekoodin mukainen)**3.Vektoritietokanta**Vektoritietokanta tallentaa upotuksia ja mahdollistaa nopean samankaltaisuushaun.**Kun kirjoitat "Docker compose", se löytää K:n semanttisesti samankaltaisen aiemman sisällön - ei vain avainsanan, vaan käsitteellisesti aiheeseen liittyvän aineiston.**Teknologiavalinta

Arvioimme:

Qdrant

    • Moderni, Rustissa kirjoitettu, erinomainen C#-asiakas, Docker-ystävällinen
  • pgvector
    • PostgreSQL:n laajennus (käytämme jo Postgresiä!)
  • Hellävarainen

- Toinen vankka vaihtoehto hyvällä .NET-tuella:

Kroma

    • Suosittu Pythonissa, vähemmän C:ssä
  • Olen Qdrantin kannalla sen yksinkertaisuudesta ja suorituskyvystä, tai pgvector pitää kaiken Postgresissä.
  • Nelonen
  • Windows-asiakas

Tarvitsemme mukavan tekoälyn kirjoittamiseen.Ajattele split-pane-editoria ja ehdotuksia.

WPF-arvo

  • Nykyaikainen WPF-käyttäytyminen
  • tai
  • Avalonia

Tämän poikittaislaajennuspotentiaalin osalta.**5.**Paikallinen LLM-integraatio

Täällä A4000 GPU loistaa.

Haluamme ajaa LLM:ää paikallisesti:

  • Yksityisyys (rajapintoihin ei lähetetä tietoja)
  • Nopeus (paikallinen päätelmä on nopea)
  • Kustannukset (ei API-maksuja)
  • Ohjaus (valitsemme mallin)

Teknologiavaihtoehdot

  • ONNX-ajoaika
  • Muunna mallit ONNX-muotoon
  • Erinomainen GPU-kiihdytys
  • C# natiivituki

Huono puoli: kaikki mallit eivät käänny hyvin

laama.cpp

  • sidonnaisuudet
  • C++-kirjasto, jossa C#-sidokset (
  • LLAMASharp
  • Tukee CUDAa
  • Laaja mallituki (Llama, Mistral jne.)

Erittäin aktiivinen kehitys

TorchSharp

Pytorchin sidonnaisuudet .NET-verkkoa varten

  1. Suurin joustavuusSteeper-oppimiskäyrä
  2. Nojaan kohtiLLAMASharp
  3. **Sen kypsyys ja helppokäyttöisyys suosittujen mallien kanssa.**6.
  4. Kontekstiikkunan hallinta ja Prompt EngineeringLLM:issä on rajoitetut kontekstiikkunat (esim. 4K, 8K, 32K tokenet).
  5. **Meidän täytyy:**Hae merkityksellinen aiempi sisältö (ylin K vektorihausta)

Sovita ne konteksti-ikkunaan nykyisellä luonnoksella

Rakenna kirjallisuuden ohjeistus

Jätä tilaa esitetyille ehdotuksille

  • **Tämä on hankalampaa kuin miltä kuulostaa.**Tutustumme seuraavanlaisiin strategioihin:
  • Dynaaminen K-valinta, joka perustuu siihen, mitä kirjoitat parhaillaanRe-ranking noudetut kappaleet merkityksellinen

Kommentoi asiayhteys älykkäästi

Käytetyt koodileikkurit

- Suurin osa RAG:n esimerkeistä on Pythonissa.

- Optimoitu blogin kirjoittamiseen, ei yleiseen sisällöntuotantoon

(myöhemmin kirjoitushetkellä)

LLAMASharp

  • LLM-päätelmä

Microsoft.ML

  • - Mahdollista joillekin tehtävilleTuomio Muuntajat ONNX:n kautta
  • - LiitännätVektoritietokanta
  • Qdranttai
  • pgvector- Määritellään

UI-kehys

  • WPFyy) kanssa, kun
  • Nykyaikainen vesivoimalatai
  • Avalonia- Nykyaikainen työpöytäkäyttö

Tukityökalut

  • Markdig- Käytän tätä jo markown-lukuihin
  • Docker- Qdrantin tai muiden palveluiden pyörittämiseen
  • "Yhteenliittymän ydin"- Jos käytämme pgvectoria
  • GPU StackCUDA

12.x

  • **(myöhemmin kirjoitushetkellä)**cuDNN
  • - Syväoppiminen alkeellisiaSuorituskykyä koskevia huomioita
  • **Erilaisilla laitteistoasetuksilla on erilaiset valmiudet:**Kanssa 8GB VRAM (Minimum)
  • Mallikoko: 7B-parametrimallit, joissa Q4 kvantisointi

Erän käsittely

: Prosessi upotetaan pienempiin eriin

  1. Muistinhallinta
  2. : Tarvittava huolellinen VRAM-seuranta
  3. Toimii hyvin
  4. : Kirjoittava avustaja, upottava sukupolvi
  5. 12GB+ VRAM (mukavaa)
  6. Mallikoko

: 7B ja laadukkaampi kvantisointi (Q5/Q6)

Erän käsittely

: Suuremmat erät nopeampaan läpimenoon**Voi myös juosta**: Noin 13B-malleja aggressiivisella kvantifioinnilla

  • 16GB+ VRAM (My setup)
  • Mallikoko
  • : 7B-13B-parametrimallit mukavasti
  • Erän käsittely
  • : Täydet erät, minimaaliset rajoitukset

Nopea päätelmä

: Subsekunnin vasteajat

Päätila

  • : Pystyy kokeilemaan eri mallejaCPU-vain (Fallback)
  • Kaikki toimiiHitaammin
  • Liitännät: 5-10x hitaampi kuin GPU
  • LLM-päätelmä: 10-50x hitaampi kuin GPU
  • Yhä käyttökelpoinenKärsivälliseksi kirjoittaja-assistentiksi!

Kehityslähestymistapa

Rakennamme tämän asteittain:

Aloita yksinkertaisimmilla komponenteilla (leimauslukema, leikkaus)

Lisää upotettava sukupolvi (voisi aloittaa API-pohjaisella ennen kuin lähtee paikalliseksi)

Hanki vektorihaku toimimaan

Rakenna peruskäyttöliittymä

Integroi LLM

Kirjoitetaan yksinkertaista C#-ohjelmaa GPU-yhteyden varmistamiseksi

OnnX-runtimella tehdään perustesti

Tekninen dokumentaatio- Johdonmukaisen tyylin ylläpitäminen suurissa dokumenteissa!

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.