Vectorlake adalah database vektor yang kuat yang dirancang untuk pemeliharaan rendah, biaya, penyimpanan yang efisien dan pertanyaan ann dari segala ukuran data vektor yang didistribusikan di seluruh file S3.
Terinspirasi oleh artikel basis data vektor mana yang harus saya gunakan? Lembar cheat perbandingan
Vectorlake dibuat dengan tradeoff untuk meminimalkan pemeliharaan DB, biaya dan memberikan strategi partisi data khusus
Dukungan Data Besar Asli: Dirancang khusus untuk menangani kumpulan data besar, membuatnya ideal untuk proyek data besar.
Penanganan Data Vektor: Mampu menyimpan dan meminta vektor dimensi tinggi, yang biasa digunakan untuk menanamkan penyimpanan dalam proyek pembelajaran mesin. Projects.
Pencarian yang efisien: Pencarian tetangga terdekat yang efisien, ideal untuk menanyakan vektor serupa di ruang dimensi tinggi. Ini membuatnya sangat berguna untuk meminta vektor serupa di ruang dimensi tinggi.
Kegigihan Data: Mendukung persistensi data pada disk, volume jaringan dan S3, memungkinkan penyimpanan jangka panjang dan pengambilan data yang diindeks.
Partisi yang dapat disesuaikan: Desain trade-off untuk meminimalkan pemeliharaan basis data, biaya, dan memberikan strategi partisi data khusus.
Dukungan asli agen LLM.
Toko fitur untuk data eksperimental.
Untuk memulai dengan VectorLake, cukup instal paket menggunakan 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 ])Partisi Kustom untuk Mengelompokkan Fitur berdasarkan Kategori Kustom
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 memberi Anda fungsionalitas database vektor yang sederhana dan tangguh, tetapi dengan pengaturan yang sangat mudah dan overhead operasional yang rendah. Dengan itu Anda memiliki toko vektor terdistribusi yang ringan dan andal.
Vectorlake memanfaatkan Dunia Kecil Navigable Hierarchical (HNSW) untuk partisi data di semua pecahan data vektor. Ini memastikan bahwa setiap modifikasi pada sistem selaras dengan jarak vektor. Anda dapat mempelajari lebih lanjut tentang desain di sini.
Tbd
Kontribusi untuk Vectorlake dipersilakan! Jika Anda ingin berkontribusi, ikuti langkah -langkah ini:
Sebelum berkontribusi, silakan baca pedoman yang berkontribusi.
Vectorlake dirilis di bawah lisensi MIT.