Wektorowe bazy danych

From Systems analysis Wiki
Jump to navigation Jump to search

Wektorowe bazy danych — to wyspecjalizowane systemy przechowywania i wyszukiwania, zoptymalizowane do pracy z wysokowymiarowymi reprezentacjami numerycznymi (wektorami) danych nieustrukturyzowanych[1]. W kontekście dużych modeli językowych (LLM) zapewniają one efektywne wyszukiwanie semantyczne i są kluczowym komponentem nowoczesnych systemów sztucznej inteligencji, w szczególności w architekturze RAG.

W przeciwieństwie do tradycyjnych relacyjnych baz danych, ukierunkowanych na dokładne dopasowania, wektorowe bazy danych specjalizują się w przybliżonym wyszukiwaniu najbliższych sąsiadów (Approximate Nearest Neighbor, ANN), znajdując semantycznie bliskie obiekty w przestrzeni wysokowymiarowej[2].

Podstawy wektorowych baz danych

Reprezentacje wektorowe (Embeddings)

Reprezentacje wektorowe (embeddings) — to numeryczne reprezentacje tekstu, obrazów, dźwięku i innych typów danych w postaci wektorów. Kluczowa zasada polega na tym, że semantycznie bliskie obiekty (na przykład słowa o podobnym znaczeniu) znajdują się w tej przestrzeni wektorowej blisko siebie[3].

Nowoczesne tekstowe embeddingi tworzone są z wykorzystaniem modeli opartych na architekturze transformer, które stosują mechanizmy uwagi (self-attention) do rozumienia kontekstu. Wymiarowość takich reprezentacji waha się od 256 do 1024 wymiarów i więcej w przypadku większości współczesnych modeli[4].

Metryki podobieństwa

Do pomiaru „odległości" lub podobieństwa między wektorami stosuje się różne metryki:

  • Podobieństwo kosinusowe (cosine similarity): Mierzy cosinus kąta między dwoma wektorami. Szczególnie skuteczne dla tekstowych embeddingów, ponieważ uwzględnia kierunek wektorów, a nie ich długość[5].
  • Odległość euklidesowa (L2): Standardowa odległość prostoliniowa między dwoma punktami w przestrzeni.
  • Iloczyn skalarny (dot product): Podobne do podobieństwa kosinusowego, lecz nienormalizowane[6].

Algorytmy indeksowania

Do szybkiego wyszukiwania w przestrzeniach wysokowymiarowych stosuje się wyspecjalizowane algorytmy ANN.

HNSW (Hierarchical Navigable Small World)

Algorytm HNSW wykorzystuje koncepcję „małego świata" i wielowarstwową hierarchiczną strukturę grafów. Wyższe warstwy zawierają długie połączenia umożliwiające szybkie poruszanie się po przestrzeni (przeszukiwanie zgrubne), a niższe — krótkie, służące do precyzyjnego znajdowania sąsiadów. HNSW wykazuje logarytmiczną złożoność czasową O(log N) i jest preferowanym wyborem dla większości nowoczesnych wektorowych baz danych[7].

IVF (Inverted File)

Algorytm IVF dzieli przestrzeń na klastry z wykorzystaniem klasteryzacji k-means. Wyszukiwanie odbywa się w ograniczonej liczbie najbliższych klastrów, co znacząco przyspiesza ten proces. Liczba klastrów jest zazwyczaj dobierana jako √N, gdzie N to całkowita liczba wektorów w zbiorze danych (dataset)[8].

LSH (Locality-Sensitive Hashing)

Algorytm LSH wykorzystuje rodzinę funkcji skrótu, które z wysokim prawdopodobieństwem generują identyczne skróty dla bliskich wektorów. Pozwala to na szybkie grupowanie podobnych obiektów[9].

Popularne wektorowe bazy danych

  • Pinecone: W pełni zarządzana, chmurowa wektorowa baza danych z architekturą serverless.
  • Qdrant: Wydajna baza danych napisana w Rust, z obsługą zaawansowanego filtrowania i transakcji zgodnych z ACID.
  • Milvus: Skalowalna baza danych open-source z architekturą cloud-native. Obsługuje wiele typów indeksów, w tym warianty akcelerowane przez GPU.
  • Weaviate: Wektorowa baza danych open-source z GraphQL API i obsługą grafów wiedzy.
  • Chroma: Lekka baza danych open-source, zoptymalizowana pod kątem szybkiego prototypowania i eksperymentów.
  • FAISS: Biblioteka firmy Meta, niebędąca pełnoprawną bazą danych, lecz dostarczająca wysokowydajne algorytmy indeksowania dla danych statycznych.

Zastosowanie z LLM: architektura RAG

Retrieval-Augmented Generation (RAG) — to architektura, w której LLM jest uzupełniany zewnętrzną bazą wiedzy za pośrednictwem wyszukiwania wektorowego. Systemy RAG składają się z dwóch głównych komponentów[10]:

  1. Retriever (Wyszukiwarka): Komponent wyszukiwania, który wykorzystuje wektorową bazę danych do znajdowania istotnych informacji na podstawie zapytania użytkownika.
  2. Generator: LLM, który wykorzystuje oryginalne zapytanie oraz informacje znalezione przez retriever do wygenerowania odpowiedzi.

Dla efektywnego działania RAG stosuje się wyszukiwanie hybrydowe — kombinację wyszukiwania semantycznego (wektorowego) i leksykalnego (na podstawie słów kluczowych, np. BM25), co zapewnia dokładniejsze i bardziej trafne wyniki.

Tendencje i przyszły rozwój

Rynek wektorowych baz danych wykazuje gwałtowny wzrost, prognozowany z 1,98 mld USD w 2023 roku do 7,13 mld USD do 2029 roku (CAGR 23,7%)[11]. Kluczowe kierunki rozwoju obejmują:

  • Systemy multimodalne: Obsługa jednoczesnego wyszukiwania po tekście, obrazach, dźwięku i wideo w jednej przestrzeni wektorowej.
  • Automatyczna optymalizacja: Wykorzystanie ML do automatycznego doboru optymalnych indeksów i parametrów.
  • Edge computing: Opracowywanie kompaktowych rozwiązań dla urządzeń mobilnych i IoT.
  • Obliczenia kwantowe: Potencjalne wykładnicze przyspieszenie wyszukiwania podobieństwa.
  • Chipy neuromorficzne: Naśladowanie pracy mózgu w celu osiągnięcia ultraniskiego zużycia energii podczas wyszukiwania.

Odnośniki

  • Oficjalna strona Pinecone
  • Oficjalna strona Qdrant
  • Oficjalna strona Milvus
  • Oficjalna strona Weaviate

Literatura

  • Malkov, Y.A.; Yashunin, D.A. (2016). Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. arXiv:1603.09320.
  • Johnson, J.; Douze, M.; Jégou, H. (2017). Billion-Scale Similarity Search with GPUs. arXiv:1702.08734.
  • Datar, M. et al. (2004). Locality-Sensitive Hashing Scheme Based on p-Stable Distributions. SoCG 2004 paper.
  • Guo, N. et al. (2020). ScaNN: Efficient Vector Similarity Search at Scale. In: Proc. ACM SIGKDD 2020, pp. 1571-1580. DOI:10.1145/3394486.3403339.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wang, X. et al. (2021). Milvus: A Purpose-Built Vector Data Management System. In: SIGMOD 2021. DOI:10.1145/3448016.3457550.
  • Lee, J. et al. (2022). OOD-DiskANN: Efficient and Scalable Graph ANNS for Out-of-Distribution Queries. arXiv:2211.12850.
  • Fan, D. et al. (2023). Survey of Vector Database Management Systems. arXiv:2310.14021.
  • Ren, R. et al. (2024). Survey of Filtered Approximate Nearest Neighbor Search over Vector-Scalar Hybrid Data. arXiv:2505.06501.
  • Zhao, H. et al. (2024). Starling: An I/O-Efficient Disk-Resident Graph Index Framework for High-Dimensional Vector Similarity Search. arXiv:2401.02116.
  • Liu, Y. et al. (2025). Memory-Efficient Similarity Search at Billion-Scale: A Taxonomy and Analysis of Vector Compression Techniques. ResearchGate preprint.

Przypisy

  1. «What Is a Vector Database?». CloudRaft. [1]
  2. «What is a Vector Database?». Qdrant Blog. [2]
  3. «What Are Vector Embeddings?». LakeFS. [3]
  4. «What are embeddings?». Zilliz. [4]
  5. Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
  6. «Vector search and dense vector fields». Elastic. [6]
  7. Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
  8. «The index IVF». FAISS Wiki. [8]
  9. Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
  10. Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
  11. «Vector Database Global Market Report 2024». The Business Research Company. [11]