Budowanie prostego RAG z FAISS lub Chroma
Napisz 40 wierszy kodu w Pythonie: utwórz embedding zapytania, pobierz K najbliższych fragmentów, umieść je w prompcie i zapytaj LLM.
Budowanie prostego RAG z FAISS lub Chroma to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
RAG w 40 wierszach
Ma Pan już wszystkie elementy. Połączymy je w działający, naiwny system RAG dla niewielkiego zbioru dokumentów.
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)Alternatywa dla FAISS
Jeśli chce Pan korzystać wyłącznie z rozwiązania lokalnego, bez serwera bazy danych, FAISS jest jeszcze prostszy:
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]]Ograniczenia tego naiwnego RAG
- Brak dzielenia na fragmenty — działa tylko w przypadku krótkich dokumentów
- Brak ponownego sortowania
- Brak filtrowania metadanych
- Brak ewaluacji
Wszystkie te elementy naprawimy w kolejnych kursach.
Koszt zapytania
Dla każdego wysłanego zapytania:
- 1 wywołanie tworzące osadzenie (około 0,00002 USD)
- 1 uzupełnienie czatu z około 500 tokenami kontekstu (około 0,0001 USD)
Łącznie: około 1/100 centa za pytanie.
Wdróż to i iteruj
Ten 40-wierszowy RAG już przewyższa większość chatbotów bez kontekstu w odpowiadaniu na pytania faktograficzne dotyczące Państwa danych. Wdróż go, obserwuj, jak użytkownicy doprowadzają go do granic możliwości, a następnie dodawaj zaawansowane techniki tam, gdzie przyniosą największą korzyść.
Naiwny RAG Top-K
Co oznacza wyszukiwanie „top-K”?
Podsumowanie
Zbudowali Państwo system RAG. Teraz przyjrzymy się wektorowym bazom danych, które pozwalają skalować to rozwiązanie poza pojedynczy laptop.
Często zadawane pytania
Czy lekcja „Budowanie prostego RAG z FAISS lub Chroma” jest bezpłatna?
Tak — pełny tekst „Budowanie prostego RAG z FAISS lub Chroma” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Budowanie prostego RAG z FAISS lub Chroma”?
Napisz 40 wierszy kodu w Pythonie: utwórz embedding zapytania, pobierz K najbliższych fragmentów, umieść je w prompcie i zapytaj LLM. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Budowanie prostego RAG z FAISS lub Chroma”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Co rozwiązuje RAG (odcięcie wiedzy, halucynacje)
- Strategie dzielenia na fragmenty (stałe, zdaniowe, semantyczne)
- Indeksowanie zbioru dokumentów
- Budowanie prostego RAG z FAISS lub Chroma