LangChain / RAG / vektordatabaser · Lektion

Håndtering af samtidighed og rate limits

Hold en RAG-tjeneste i produktion responsiv under belastning med asynkrone kald, batching, retries og backpressure.

Lektion 4 af 413 trin

Håndtering af samtidighed og rate limits er en gratis LangChain / RAG / vektordatabaser-lektion på CoddyKit. Dette er lektion 4 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 LangChain / RAG / vektordatabaser, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. LangChain / RAG / vektordatabaser-kurset indeholder 4 lektioner i alt.

Indlæsning i produktion

En aktiv RAG-tjeneste håndterer mange samtidige forespørgsler, hvor hver forespørgsel foretager kald til embedding- og LLM-tjenester. Uden omtanke rammer du hastighedsbegrænsninger, får timeout eller løber tør for hukommelse.

Synkron flaskehals

Blokering ved hvert API-kald serialiserer arbejdet. Mens én forespørgsel venter på LLM'en, kan serveren ikke håndtere andre og spilder dermed kapacitet.

Asynkron I/O

Asynkron behandling lader én worker håndtere mange samtidige kald. Mens den venter på ét svar, kan hændelsesløkken håndtere andre forespørgsler.

import asyncio

async def answer(q):
    docs = await retriever.ainvoke(q)
    return await chain.ainvoke({"q": q, "docs": docs})

results = asyncio.run(asyncio.gather(*[answer(q) for q in queries]))

Batchbehandling af embeddings

Embedding-API'er er langt billigere og hurtigere pr. element, når du sender mange tekster i én forespørgsel. Gruppér bidder i batches i stedet for at kalde API'et én gang pr. bid.

vectors = embeddings.embed_documents(batch)  # one call, many texts

Overholdelse af hastighedsbegrænsninger

Udbydere begrænser antallet af forespørgsler og tokens pr. minut. En begrænser drosler udgående kald, så du holder dig under grænsen og undgår 429-fejl.

import asyncio

sem = asyncio.Semaphore(10)  # max 10 concurrent calls

async def limited(q):
    async with sem:
        return await answer(q)

Prøv igen med backoff

Midlertidige fejl og 429-fejl skal forsøges igen med eksponentiel backoff og jitter, ikke gentages straks i en tæt løkke.

import time, random

def call_with_retry(fn, tries=5):
    for i in range(tries):
        try:
            return fn()
        except RateLimitError:
            time.sleep((2 ** i) + random.random())
    raise RuntimeError("exhausted retries")

Idempotens ved nye forsøg

Nye forsøg kan gentage sideeffekter. Gør skrivehandlinger idempotente ved hjælp af nøgler eller upserts, så et gentaget kald er ufarligt.

Tilbagetryk

Når køen vokser hurtigere, end du kan behandle den, skal du anvende tilbagetryk: Afvis eller bortsortér nye forespørgsler tidligt i stedet for at lade svartiden vokse for alle.

Forbindelsespooling

Genbrug HTTP-forbindelser og databaseklienter på tværs af forespørgsler. Det spilder tid på håndtryk at oprette en ny klient for hver forespørgsel, og det kan opbruge filbeskrivelser.

Caching af populære forespørgsler

Mange brugere stiller de samme spørgsmål. Gem embeddings og endelige svar for hyppige forespørgsler i en cache, så både svartid og API-omkostninger reduceres markant.

key = hashlib.sha256(query.encode()).hexdigest()
if key in cache:
    return cache[key]
ans = expensive_rag(query)
cache[key] = ans

Sådan samler du det hele

Kombiner asynkron håndtering, en semafor til samtidighed, batchbehandlede embeddings, nye forsøg med backoff og caching. Tjenesten forbliver hurtig og stabil, når trafikken vokser.

Hurtigt tjek

Test din forståelse af skalering af RAG.

Opsummering

Du har lært at håndtere belastning i produktion:

  • Asynkron behandling til samtidige igangværende kald
  • Batchbehandl embeddings, og genbrug forbindelser
  • Drosl ned med en begrænser, og forsøg igen med backoff
  • Anvend tilbagetryk, og gem populære forespørgsler i en cache
Gratis at komme i gang

Lær LangChain / RAG / vektordatabaser 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 “Håndtering af samtidighed og rate limits” gratis?

Ja — hele teksten til “Håndtering af samtidighed og rate limits” 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 LangChain / RAG / vektordatabaser-kurset, skal du opgradere til CoddyKit PRO. LangChain / RAG / vektordatabaser-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Håndtering af samtidighed og rate limits”?

Hold en RAG-tjeneste i produktion responsiv under belastning med asynkrone kald, batching, retries og backpressure. Du øver dig i LangChain / RAG / vektordatabaser 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å LangChain / RAG / vektordatabaser?

Der kræves ingen tidligere erfaring. LangChain / RAG / vektordatabaser 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 4 af 4.

Hvor lang tid tager lektionen “Håndtering af samtidighed og rate limits”?

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 LangChain / RAG / vektordatabaser-lektion?

Ja. Alle LangChain / RAG / vektordatabaser-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. Overvågning og logning af RAG-applikationer
  2. Caching og optimering af ydeevne
  3. Implementeringsstrategier for RAG i skyen
  4. Håndtering af samtidighed og rate limits
← Tilbage til LangChain / RAG / vektordatabaser