VectorLake est une base de données vectorielle robuste conçue pour une faible maintenance, un coût, un stockage efficace et une requête ann de toute taille de données vectorielles distribuées sur les fichiers S3.
Inspiré par l'article Quelle base de données vectorielle dois-je utiliser? Une comparaison
VectorLake créé avec le compromis pour minimiser la maintenance de la base de données, les coûts et fournir des stratégies de partitionnement des données personnalisées
Support natif de Big Data: spécialement conçu pour gérer de grands ensembles de données, ce qui les rend idéaux pour les projets de Big Data.
Gestion des données vectorielles: capable de stocker et d'interroger des vecteurs de haute dimension, couramment utilisés pour intégrer le stockage dans les projets d'apprentissage automatique.
Recherche efficace: Recherche efficace des voisins les plus proches, idéal pour interroger des vecteurs similaires dans des espaces de grande dimension. Cela le rend particulièrement utile pour l'interrogation pour des vecteurs similaires dans un espace de grande dimension.
Persistance des données: prend en charge la persistance des données sur le disque, le volume du réseau et S3, permettant le stockage à long terme et la récupération des données indexées.
Partionnement personnalisable: conception de compromis pour minimiser la maintenance de la base de données, les coûts et fournir des stratégies de partitionnement de données personnalisées.
Support natif des agents LLM.
Store de caractéristiques pour les données expérimentales.
Pour commencer avec VectorLake, installez simplement le package à l'aide de 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 ])Partition personnalisée aux fonctionnalités du groupe par catégorie personnalisée
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 vous donne la fonctionnalité d'une base de données vectorielle simple et résiliente, mais avec une configuration très facile et une faible surcharge opérationnelle. Avec lui, vous avez un magasin vectoriel distribué léger et fiable.
VectorLake exploite un petit monde navigable hiérarchique (HNSW) pour le partitionnement des données sur tous les fragments de données vectoriels. Cela garantit que chaque modification du système s'aligne sur la distance vectorielle. Vous pouvez en savoir plus sur la conception ici.
TBD
Les contributions à VectorLake sont les bienvenues! Si vous souhaitez contribuer, veuillez suivre ces étapes:
Avant de contribuer, veuillez lire les directives contributives.
VectorLake est libéré sous la licence du MIT.