LLM-applikationer i produktion (RAG + vektordatabase + caching) · Lektion

Horisontal skalering af RAG-komponenter

Design og implementer strategier til horisontal skalering af Deres RAG-komponenter, herunder vektordatabaser og LLM-inferencetjenester.

Lektion 1 af 412 trin

Horisontal skalering af RAG-komponenter er en gratis LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i LLM-applikationer i produktion (RAG + vektordatabase + caching), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.

Hvorfor skal din RAG-applikation skaleres?

Efterhånden som din RAG-applikation vokser, vil flere brugere interagere med den, og dine datakilder vil blive større. Det belaster dit system!

Horisontal skalering hjælper applikationen med at håndtere flere forespørgsler og større datasæt ved at tilføje flere komponenter i stedet for at gøre de eksisterende større.

Horisontal og vertikal skalering

Forestil dig din RAG-applikation som en restaurant. Hvis du skal betjene flere kunder:

  • Vertikal skalering: Køb en større ovn, og ansæt en stjernekok (opgrader de eksisterende ressourcer).
  • Horisontal skalering: Åbn en identisk restaurant ved siden af (tilføj flere identiske ressourcer).

Horisontal skalering foretrækkes ofte til cloud-native RAG-applikationer på grund af dens fleksibilitet og omkostningseffektivitet.

RAG's særlige skaleringsbehov

RAG-applikationer har specifikke behov, når de skal skaleres:

  • Flere brugere: Flere samtidige brugere betyder flere LLM-kald og flere opslag.
  • Større datamængder: Efterhånden som din vidensbase vokser, bliver din vektordatabase større, og forespørgslerne mere komplekse.
  • Krav til svartid: Brugerne forventer hurtige svar, så langsomme komponenter skal optimeres eller skaleres.

Vektordatabaser: Et skaleringsmæssigt knudepunkt

Din vektordatabase er afgørende for RAG. Den gemmer højdimensionelle repræsentationer (embeddings) af dine dokumenter og udfører hurtige lighedssøgninger.

Efterhånden som din dokumentsamling vokser (millioner eller milliarder af vektorer), og trafikken af forespørgsler øges, kan en enkelt instans af vektordatabasen blive en flaskehals.

Sharding af din vektordatabase

Sharding (også kaldet partitionering) er en teknik til horisontal skalering af vektordatabaser. Den indebærer, at hele dit datasæt opdeles på tværs af flere databaseinstanser eller »shards«.

Hver shard indeholder en del af dine vektorer. Når der kommer en forespørgsel, afgør systemet, hvilken eller hvilke shards der kan indeholde relevante resultater, så belastningen fordeles.

Replikering af vektordatabasen til læsninger

En anden vigtig strategi er replikering. Det betyder, at der oprettes identiske kopier (replikaer) af din vektordatabase.

Du kan sende forespørgsler med mange læsninger (f.eks. opslag) til disse replikaer. Det øger din læsegennemstrømning betydeligt og giver fejltolerance, hvis en replika svigter.

Skalering af LLM-inferens

»Genereringsdelen« af RAG indebærer kald til en Large Language Model (LLM). Disse kald kan kræve mange ressourcer og har ofte begrænsninger på kaldsrate eller medfører brugsomkostninger.

Når mange brugere benytter din RAG-applikation samtidigt, har du brug for en effektiv måde at håndtere alle disse LLM-forespørgsler på uden lange ventetider eller fejl.

Fordeling af LLM-forespørgsler med belastningsfordeling

En belastningsfordeler fungerer som en trafikbetjent, der fordeler indgående LLM-forespørgsler på flere tilgængelige LLM-tjenesteinstanser eller API-endepunkter.

Det forhindrer, at en enkelt instans bliver overbelastet, og forbedrer svartiderne og systemets samlede pålidelighed. Her er en enkel idé:

import random

class LLMService:
    def __init__(self, name):
        self.name = name
    def process_request(self, prompt):
        return f"Response from {self.name} for '{prompt[:15]}...'"

# Our available LLM service instances
llm_endpoints = [
    LLMService("LLM-Inst-A"),
    LLMService("LLM-Inst-B"),
    LLMService("LLM-Inst-C")
]

def distribute_request(prompt):
    # Simple load balancer: pick a random instance
    chosen_endpoint = random.choice(llm_endpoints)
    return chosen_endpoint.process_request(prompt)

if __name__ == "__main__":
    print(distribute_request("What is the capital of France?"))
    print(distribute_request("Tell me a fun fact about space."))
    print(distribute_request("How does photosynthesis work?"))

Håndtering af flere LLM-endepunkter

For at aktivere belastningsfordeling skal du have flere LLM-endepunkter. Det kan f.eks. betyde:

  • At bruge flere API-nøgler til en cloud-LLM-udbyder (f.eks. OpenAI eller Anthropic).
  • At installere flere instanser af en open source-LLM (f.eks. Llama 3) på forskellige servere.

Hvert endepunkt kan derefter håndtere en del af de indgående forespørgsler.

Håndtering af skaleringsudfordringer

Selvom horisontal skalering er effektiv, er den ikke uden kompleksitet:

  • Større infrastruktur: Flere maskiner betyder højere omkostninger og mere, der skal administreres.
  • Datakonsistens: Det kan være vanskeligt at sikre, at alle replikaer eller shards har opdaterede oplysninger.
  • Driftsmæssig kompleksitet: Det er mere omfattende at administrere et distribueret system end en enkelt server.

Omhyggelig planlægning og overvågning er afgørende.

Hurtigt tjek: skaleringskoncepter

Du har lært om forskellige strategier til horisontal skalering. Lad os teste din forståelse!

Skalering af RAG: vigtigste pointer

Godt klaret! Du har undersøgt, hvordan du skalerer din RAG-applikation horisontalt.

  • Horisontal skalering tilføjer flere ressourcer for at håndtere øget belastning.
  • Vektordatabaser kan skaleres ved hjælp af sharding (fordeling af data) og replikering (læsekopier).
  • LLM-inferenstjenester har fordel af belastningsfordeling på tværs af flere endepunkter.

Skalering kræver omhyggeligt design, men sikrer, at din RAG-applikation forbliver hurtig og pålidelig!

Gratis at komme i gang

Lær LLM-applikationer i produktion (RAG + vektordatabase + caching) med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Horisontal skalering af RAG-komponenter” gratis?

Ja — hele teksten til “Horisontal skalering af RAG-komponenter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset, skal du opgradere til CoddyKit PRO. LLM-applikationer i produktion (RAG + vektordatabase + caching)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Horisontal skalering af RAG-komponenter”?

Design og implementer strategier til horisontal skalering af Deres RAG-komponenter, herunder vektordatabaser og LLM-inferencetjenester. Du øver dig i LLM-applikationer i produktion (RAG + vektordatabase + caching) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på LLM-applikationer i produktion (RAG + vektordatabase + caching)?

Der kræves ingen tidligere erfaring. LLM-applikationer i produktion (RAG + vektordatabase + caching) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Horisontal skalering af RAG-komponenter”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektion?

Ja. Alle LLM-applikationer i produktion (RAG + vektordatabase + caching)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Horisontal skalering af RAG-komponenter
  2. Observability: logning, måltal og tracing
  3. Alarmering og hændelseshåndtering for LLM-drift
  4. Load testing og kapacitetsplanlægning
← Tilbage til LLM-applikationer i produktion (RAG + vektordatabase + caching)