VectorLake ist eine robuste Vektor -Datenbank, die für niedrige Wartung, Kosten, effizientes Speicher und Ann -Abfragen jeder Größe Vektordaten entwickelt wurde, die über S3 -Dateien verteilt sind.
Inspiriert von Artikel Welche Vektordatenbank soll ich verwenden? Ein Vergleichsbaumblatt
VectorLake mit Kompromiss erstellt, um die DB -Wartung zu minimieren, die Kosten für kundenspezifische Datenverzögerungsstrategien bereitzustellen
Native Big Data Support: speziell für die Verarbeitung großer Datensätze entwickelt, wodurch es ideal für Big Data -Projekte ist.
Umgang mit Vektordaten: In der Lage, hochdimensionale Vektoren zu speichern und abzufragen, die üblicherweise zum Einbetten von Speicher in Projekte für maschinelles Lernen verwendet werden. Projects.
Effiziente Suche: Effiziente Suche nach der nächsten Nachbarn, ideal für die Abfrage ähnlicher Vektoren in hochdimensionalen Räumen. Dies macht es besonders nützlich, um ähnliche Vektoren in einem hochdimensionalen Raum abzufragen.
Datenpersistenz: Unterstützt die Datenpersistenz auf Festplatte, Netzwerkvolumen und S3, wodurch langfristige Speicher und Abruf von indizierten Daten ermöglicht werden.
Anpassbare Partitionierung: Kompromissdesign zur Minimierung der Datenbankwartung, der Kosten und der Bereitstellung von Strategien für benutzerdefinierte Datenpartitionierungsstrategien.
Native Unterstützung von LLM -Agenten.
Feature Store für experimentelle Daten.
Um mit VectorLake zu beginnen, installieren Sie das Paket einfach mit PIP:
pip install vector_lake import numpy as np
from vector_lake import VectorLake
db = VectorLake ( location = "s3://vector-lake" , dimension = 5 , approx_shards = 243 )
N = 100 # for example
D = 5 # Dimensionality of each vector
embeddings = np . random . rand ( N , D )
for em in embeddings :
db . add ( em , metadata = {}, document = "some document" )
db . persist ()
db = VectorLake ( location = "s3://vector-lake" , dimension = 5 , approx_shards = 243 )
# re-init test
db . query ([ 0.56325391 , 0.1500543 , 0.88579166 , 0.73536349 , 0.7719873 ])Benutzerdefinierte Partition zu Gruppenfunktionen nach benutzerdefinierter Kategorie
import numpy as np
from vector_lake . core . index import Partition
if __name__ == "__main__" :
db = Partition ( location = "s3://vector-lake" , partition_key = "feature" , dimension = 5 )
N = 100 # for example
D = 5 # Dimensionality of each vector
embeddings = np . random . rand ( N , D )
for em in embeddings :
db . add ( em , metadata = {}, document = "some document" )
db . persist ()
db = Partition ( location = "s3://vector-lake" , key = "feature" , dimension = 5 )
# re-init test
db . buckets
db . query ([ 0.56325391 , 0.1500543 , 0.88579166 , 0.73536349 , 0.7719873 ]) import numpy as np
from vector_lake import VectorLake
db = VectorLake ( location = "/mnt/db" , dimension = 5 , approx_shards = 243 )
N = 100 # for example
D = 5 # Dimensionality of each vector
embeddings = np . random . rand ( N , D )
for em in embeddings :
db . add ( em , metadata = {}, document = "some document" )
db . persist ()
db = VectorLake ( location = "/mnt/db" , dimension = 5 , approx_shards = 243 )
# re-init test
db . query ([ 0.56325391 , 0.1500543 , 0.88579166 , 0.73536349 , 0.7719873 ]) from langchain . document_loaders import TextLoader
from langchain . embeddings . sentence_transformer import SentenceTransformerEmbeddings
from langchain . text_splitter import CharacterTextSplitter
from vector_lake . langchain import VectorLakeStore
loader = TextLoader ( "Readme.md" )
documents = loader . load ()
# split it into chunks
text_splitter = CharacterTextSplitter ( chunk_size = 100 , chunk_overlap = 0 )
docs = text_splitter . split_documents ( documents )
# create the open-source embedding function
embedding = SentenceTransformerEmbeddings ( model_name = "all-MiniLM-L6-v2" )
db = VectorLakeStore . from_documents ( documents = docs , embedding = embedding )
query = "What is Vector Lake?"
docs = db . similarity_search ( query )
# print results
print ( docs [ 0 ]. page_content )VectorLake gibt Ihnen die Funktionalität einer einfachen, widerstandsfähigen Vektor -Datenbank, jedoch mit sehr einfachem Setup und niedrigem operativem Overhead. Damit haben Sie einen leichten und zuverlässigen verteilten Vektor Store.
VectorLake nutzt die hierarchische schiffbare kleine Welt (HNSW) für die Datenverteilung über alle Vektordatenscharden. Dies stellt sicher, dass jede Änderung des Systems auf die Vektorentfernung ausgerichtet ist. Sie können hier mehr über das Design erfahren.
TBD
Beiträge zu Vectorlake sind willkommen! Wenn Sie einen Beitrag leisten möchten, befolgen Sie bitte die folgenden Schritte:
Bevor Sie beigetragen haben, lesen Sie bitte die beitragenden Richtlinien.
VectorLake wird unter der MIT -Lizenz veröffentlicht.