AI-agenter · Lektion

Opbygning af naiv RAG med FAISS eller Chroma

Skriv 40 linjer Python: opret en embedding af forespørgslen, find de top-K nærmeste chunks, indsæt dem i prompten, og spørg LLM'en.

Lektion 4 af 415 trin

Opbygning af naiv RAG med FAISS eller Chroma er en gratis AI-agenter-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 AI-agenter, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AI-agenter-kurset indeholder 4 lektioner i alt.

Dele af denne lektion er endnu ikke oversat og vises på engelsk.

En RAG på 40 linjer

Du har nu alle delene. Vi samler dem i en fungerende naiv RAG-løsning over et lille udvalg af dokumenter.

Step 1: Install

# pip install openai chromadb

Step 2: Sample Corpus

docs = [
    'Python is a high-level interpreted programming language created by Guido van Rossum in 1991.',
    'Pizza is a savory dish of Italian origin consisting of a round flat base of dough.',
    'The Eiffel Tower is a wrought-iron lattice tower in Paris, France, completed in 1889.',
    'NumPy is a Python library used for working with arrays and numerical computing.',
    'The Great Wall of China is a series of fortifications built across northern China.'
]
print(f"Loaded {len(docs)} documents")
for i, d in enumerate(docs):
    print(f"{i+1}. {d[:50]}...")

Step 3: Set Up Chroma

import chromadb
from openai import OpenAI

client = chromadb.Client()
collection = client.create_collection('demo')
openai_client = OpenAI()

Step 4: Embed and Store

embed_response = openai_client.embeddings.create(
    model='text-embedding-3-small',
    input=docs
)
vectors = [d.embedding for d in embed_response.data]

collection.add(
    ids=[f'd{i}' for i in range(len(docs))],
    embeddings=vectors,
    documents=docs
)

Step 5: Embed the Query

query = 'Tell me about Python programming'
query_vec = openai_client.embeddings.create(
    model='text-embedding-3-small',
    input=query
).data[0].embedding

Step 6: Retrieve Top-K

results = collection.query(
    query_embeddings=[query_vec],
    n_results=2
)
retrieved = results['documents'][0]
print(retrieved)
# ['Python is a high-level...', 'NumPy is a Python library...']

Step 7: Build the RAG Prompt

context = '\n'.join(f'- {chunk}' for chunk in retrieved)
prompt = f'''
Using only the context below, answer the question. If unknown, say so.

Context:
{context}

Question: {query}
'''

Step 8: Call the LLM

response = openai_client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': prompt}],
    temperature=0,
)
print(response.choices[0].message.content)

FAISS-alternativ

Hvis du vil have en løsning, der udelukkende kører lokalt uden en DB-server, er FAISS endnu enklere:

import faiss
import numpy as np

index = faiss.IndexFlatIP(1536)  # inner product, normalised vectors
index.add(np.array(vectors).astype('float32'))

D, I = index.search(np.array([query_vec]).astype('float32'), k=2)
retrieved = [docs[i] for i in I[0]]

Begrænsninger ved denne naive RAG

  • Ingen opdeling i tekststykker — fungerer kun for korte dokumenter
  • Ingen omrangering
  • Ingen metadatafiltrering
  • Ingen evaluering

Alt dette retter vi i senere kurser.

Pris pr. forespørgsel

For hver forespørgsel, du sender:

  • 1 indlejringskald (~$0.00002)
  • 1 chatgenerering med ~500 tokens kontekst (~$0.0001)

I alt: omkring 1/100 cent pr. spørgsmål.

Sæt det i drift og iterér

Denne RAG-løsning på 40 linjer klarer sig allerede bedre end de fleste chatbots uden kontekst, når de skal besvare faktuelle spørgsmål om dine data. Sæt den i drift, se hvordan brugerne får den til at fejle, og tilføj derefter avancerede teknikker dér, hvor de gør størst forskel.

Naiv RAG med top-K

Hvad betyder hentning med "top-K"?

Opsamling

Du har bygget RAG. Nu ser vi på vektordatabaser, der kan skalere dette ud over en enkelt bærbar computer.

Gratis at komme i gang

Lær AI-agenter 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
60
Lektioner
239

Ofte stillede spørgsmål

Er lektionen “Opbygning af naiv RAG med FAISS eller Chroma” gratis?

Ja — hele teksten til “Opbygning af naiv RAG med FAISS eller Chroma” 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 AI-agenter-kurset, skal du opgradere til CoddyKit PRO. AI-agenter-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Opbygning af naiv RAG med FAISS eller Chroma”?

Skriv 40 linjer Python: opret en embedding af forespørgslen, find de top-K nærmeste chunks, indsæt dem i prompten, og spørg LLM'en. Du øver dig i AI-agenter 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å AI-agenter?

Der kræves ingen tidligere erfaring. AI-agenter 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 “Opbygning af naiv RAG med FAISS eller Chroma”?

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 AI-agenter-lektion?

Ja. Alle AI-agenter-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. Hvad RAG løser (vidensskæringsdato, hallucinationer)
  2. Chunking-strategier (fast, sætningsbaseret, semantisk)
  3. Indeksering af et dokumentsæt
  4. Opbygning af naiv RAG med FAISS eller Chroma
← Tilbage til AI-agenter