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.
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 chromadbStep 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].embeddingStep 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.
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
- Hvad RAG løser (vidensskæringsdato, hallucinationer)
- Chunking-strategier (fast, sætningsbaseret, semantisk)
- Indeksering af et dokumentsæt
- Opbygning af naiv RAG med FAISS eller Chroma