0Pricing
Learn AI with Python · Lekcja

Wprowadzenie do baz danych wektorowych

Dlaczego istnieją wektorowe bazy danych, FAISS do lokalnego wyszukiwania podobieństwa i przechowywanie embeddingów na potrzeby wyszukiwania AI.

Wprowadzenie do baz danych wektorowych to bezpłatna lekcja Learn AI with Python 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 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.

Poza dokładnymi dopasowaniami

Tradycyjne bazy danych znajdują wiersze na podstawie dokładnych wartości (WHERE name = "x"). Jednak AI operuje na embeddingach — wektorach, które oddają znaczenie — dlatego często potrzebują Państwo elementów najbardziej podobnych do zapytania, a nie dokładnych dopasowań.

Wektorowe bazy danych służą do szybkiego wyszukiwania takich podobieństw.

Czym jest embedding?

Embedding to lista liczb (wektor) reprezentująca tekst, obraz lub dźwięk, dzięki czemu podobne elementy znajdują się blisko siebie w przestrzeni wektorowej.

Wyszukiwanie semantyczne, rekomendacje i generowanie wspomagane wyszukiwaniem (RAG) opierają się na embeddingach.

import numpy as np

# A toy 4-dim embedding for a sentence
vec = np.array([0.12, -0.43, 0.88, 0.05], dtype="float32")
print(vec.shape)   # (4,)

Dlaczego nie zwykła baza danych?

Porównywanie zapytania z milionami wektorów za pomocą pętli brute force jest powolne. Wektorowe bazy danych używają wyspecjalizowanych indeksów i obliczeń odległości, aby w milisekundach zwrócić najbliższych sąsiadów.

Skalują się, zapewniają trwałość danych i przechowują metadane razem z wektorami.

Pomiar podobieństwa

Bliskość mierzy się za pomocą metryki odległości:

  • L2 (euklidesowa) — odległość w linii prostej; mniejsza oznacza większą bliskość
  • Cosine — kąt między wektorami; dobrze sprawdza się w przypadku tekstu

FAISS obsługuje kilka metryk; użyjemy L2.

Wprowadzenie do FAISS

FAISS (Facebook AI Similarity Search) to szybka, bezpłatna biblioteka do wyszukiwania wektorowego. Działa lokalnie, bez serwera — idealnie nadaje się do nauki i prototypowania.

import faiss
import numpy as np
# pip install faiss-cpu

Tworzenie indeksu za pomocą IndexFlatL2

IndexFlatL2(dim) tworzy płaski indeks (brute force, dokładny), używając odległości L2. Należy podać jego wymiar, czyli wymiar wektorów.

„Flat” oznacza dokładne wyniki — idealne w przypadku małych i średnich zbiorów.

import faiss

dim = 4
index = faiss.IndexFlatL2(dim)
print(index.is_trained)   # True (flat index needs no training)

Dodawanie wektorów za pomocą index.add

Embeddingi należy przekazać jako dwuwymiarową tablicę NumPy typu float32 o kształcie (n, dim). index.add przechowuje wektory, a index.ntotal zwraca ich liczbę.

import numpy as np

embeddings = np.random.random((100, dim)).astype("float32")
index.add(embeddings)
print(index.ntotal)   # 100

Wyszukiwanie za pomocą index.search

index.search(query, k) zwraca k najbliższych wektorów. Zwracane są dwie tablice: odległości D oraz indeksy I (pozycje w kolejności, w której wektory zostały dodane).

query = np.random.random((1, dim)).astype("float32")
D, I = index.search(query, k=5)
print("nearest ids:", I[0])
print("distances:", D[0])

Od indeksów z powrotem do elementów

FAISS zwraca pozycje, a nie oryginalne dane. Należy przechowywać równoległą listę (lub bazę danych) mapującą pozycję indeksu na rzeczywisty element, aby można było odszukać wyniki.

docs = ["doc about cats", "doc about dogs", "doc about cars"]
# after search:
for pos in I[0]:
    print(docs[pos])   # map id -> original document

Mały potok wyszukiwania semantycznego

Pełny schemat wygląda następująco: należy utworzyć embeddingi dokumentów, dodać je do indeksu, utworzyć embedding zapytania, przeprowadzić wyszukiwanie i zwrócić pasujące dokumenty. (Modele embeddingów, takie jak sentence-transformers, generują te wektory).

import faiss, numpy as np

# doc_vectors: (n, dim) from an embedding model
index = faiss.IndexFlatL2(doc_vectors.shape[1])
index.add(doc_vectors)

# query_vec: (1, dim) embedding of the user query
D, I = index.search(query_vec, k=3)
results = [docs[i] for i in I[0]]
print(results)

Kiedy sięgnąć po wektorową bazę danych

Wektorowej bazy danych należy użyć, gdy potrzebują Państwo:

  • wyszukiwania semantycznego w tekstach lub obrazach
  • rekomendacji opartych na podobieństwie
  • RAG: pobierania odpowiedniego kontekstu dla LLM

FAISS świetnie sprawdza się lokalnie, a zarządzane rozwiązania (Pinecone, Weaviate, pgvector) zapewniają trwałość danych i skalowalność.

Szybkie sprawdzenie: wyszukiwanie za pomocą FAISS

Wywołują Państwo index.search(query, k=5) na indeksie FAISS.

Podsumowanie: wektorowe bazy danych

Poznali Państwo podstawy wyszukiwania opartego na podobieństwie:

  • Embeddingi umieszczają podobne elementy blisko siebie w przestrzeni wektorowej
  • Wektorowe bazy danych przyspieszają wyszukiwanie najbliższych sąsiadów na dużą skalę
  • FAISS IndexFlatL2(dim) tworzy dokładny indeks L2
  • index.add(embeddings) przechowuje wektory, a index.search(query, k) zwraca odległości i indeksy
  • Należy mapować zwrócone indeksy z powrotem na oryginalne elementy

To kończy część dotyczącą baz danych. Dalej: organizowanie projektów AI za pomocą Git.

Często zadawane pytania

Czy lekcja „Wprowadzenie do baz danych wektorowych” jest bezpłatna?

Tak — pełny tekst „Wprowadzenie do baz danych wektorowych” 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 „Wprowadzenie do baz danych wektorowych”?

Dlaczego istnieją wektorowe bazy danych, FAISS do lokalnego wyszukiwania podobieństwa i przechowywanie embeddingów na potrzeby wyszukiwania AI. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Wprowadzenie do baz danych wektorowych”?

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. SQLite z modułem sqlite3 Pythona
  2. Integracja Pandas i SQL
  3. Przechowywanie i odpytywanie wyników ML
  4. Wprowadzenie do baz danych wektorowych
← Powrót do Learn AI with Python