0Pricing
Learn AI with Python · Lekcja

Bazy wektorowe: Chroma i FAISS

Tworzenie i utrwalanie baz wektorowych, wyszukiwanie podobieństwa, pobieranie MMR, wyszukiwanie hybrydowe.

Bazy wektorowe: Chroma i FAISS to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 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 Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Czym jest magazyn wektorowy?

Magazyn wektorowy przechowuje fragmenty, dla których utworzono embeddingi, i wyszukuje te najbardziej podobne do wektora zapytania. Jest wyszukiwarką znajdującą się w centrum systemu RAG. Dwa popularne rozwiązania to Chroma i FAISS.

pip install langchain-chroma faiss-cpu

Tworzenie magazynu Chroma

Chroma.from_documents tworzy embeddingi fragmentów i indeksuje je za pomocą jednego wywołania. Należy przekazać dokumenty oraz obiekt embeddingów. Chroma zwraca magazyn, w którym można od razu wyszukiwać.

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)

Zapisywanie Chroma na dysku

Należy przekazać persist_directory, aby indeks został zapisany na dysku i zachował się po ponownym uruchomieniu aplikacji. Później można go wczytać, tworząc obiekt Chroma z tym samym katalogiem i embeddingami, co pozwala uniknąć kosztu ponownego tworzenia embeddingów.

db = Chroma.from_documents(
    chunks, embeddings,
    persist_directory="./chroma_db"
)

# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)

Wyszukiwanie podobieństwa

Należy wykonać zapytanie za pomocą similarity_search(query, k=4). Metoda tworzy embedding zapytania, wyszukuje k najbliższych fragmentów i zwraca je jako obiekty Document. Parametr k określa liczbę pobieranych fragmentów.

results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
    print(doc.page_content[:80])

Wyniki wyszukiwania

Za pomocą similarity_search_with_score można dodatkowo uzyskać wynik odległości dla każdego rezultatu. Mniejsza odległość oznacza większe podobieństwo. Wyniki pomagają odfiltrować słabe dopasowania przed przekazaniem ich do LLM.

pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
    print(round(score, 3), doc.page_content[:60])

Wprowadzenie do FAISS

FAISS (Facebook AI Similarity Search) to wysokowydajna biblioteka do wyszukiwania wektorowego. Jest niezwykle szybka i oszczędna pamięciowo, dlatego dobrze nadaje się do dużych lokalnych indeksów niewymagających osobnego serwera.

Tworzenie magazynu FAISS

API działa podobnie jak w przypadku Chroma: FAISS.from_documents tworzy indeks. FAISS przechowuje indeks w pamięci, dlatego świetnie nadaje się do wyszukiwania z przewagą odczytu wykonywanego w obrębie procesu.

from langchain_community.vectorstores import FAISS

db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)

Zapisywanie i wczytywanie FAISS

Indeks FAISS można zapisać za pomocą save_local i wczytać za pomocą load_local. Wczytywanie wymaga ustawienia allow_dangerous_deserialization=True, ponieważ indeks korzysta z formatu pickle.

db.save_local("faiss_index")

db = FAISS.load_local(
    "faiss_index", embeddings,
    allow_dangerous_deserialization=True
)

Trafność a różnorodność

Zwykłe wyszukiwanie podobieństwa może zwrócić cztery niemal identyczne fragmenty. Czasami potrzebują Państwo różnorodnych wyników obejmujących różne aspekty odpowiedzi. Właśnie w tym pomaga MMR.

Wyszukiwanie MMR

Maximal Marginal Relevance (MMR) równoważy trafność i różnorodność, wybierając fragmenty trafne, ale niezawierające powtórzeń. Należy użyć search_type="mmr" za pośrednictwem interfejsu retrievera.

retriever = db.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")

Wybór między Chroma a FAISS

Chroma jest przyjazna w użyciu, zapewnia trwałość danych i dobrze nadaje się do prototypów oraz małych aplikacji. FAISS jest szybszy przy dużej skali i idealnie nadaje się do wyszukiwania w pamięci. Oba rozwiązania udostępniają similarity_search oraz as_retriever, więc przełączanie między nimi jest łatwe.

Szybki test

Sprawdźcie Państwo swoją wiedzę na temat magazynów wektorowych.

Podsumowanie: Chroma i FAISS

Zbudowali Państwo magazyny wektorowe za pomocą Chroma.from_documents (z użyciem persist_directory) oraz FAISS.from_documents, wykonywali wyszukiwanie za pomocą similarity_search(query, k=4) i zapisywali oraz wczytywali oba indeksy. Używali Państwo as_retriever wraz z MMR, aby uzyskiwać różnorodne wyniki, a także nauczyli się, kiedy wybrać poszczególne magazyny.

Często zadawane pytania

Czy lekcja „Bazy wektorowe: Chroma i FAISS” jest bezpłatna?

Tak — pełny tekst „Bazy wektorowe: Chroma i FAISS” 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 Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Bazy wektorowe: Chroma i FAISS”?

Tworzenie i utrwalanie baz wektorowych, wyszukiwanie podobieństwa, pobieranie MMR, wyszukiwanie hybrydowe. Ćwiczysz Learn AI with Python 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ąć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python 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 3 z 4.

Ile czasu zajmuje lekcja „Bazy wektorowe: Chroma i FAISS”?

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 Learn AI with Python?

Tak. Każda lekcja Learn AI with Python 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

  1. Architektura LangChain i LCEL
  2. Wczytywanie, dzielenie i osadzanie dokumentów
  3. Bazy wektorowe: Chroma i FAISS
  4. Tworzenie systemu pytań i odpowiedzi RAG od początku do końca
← Powrót do Learn AI with Python