VectorLake es una base de datos vectorial robusta diseñada para bajo mantenimiento, costo, almacenamiento eficiente y consultas ANN de cualquier tamaño de datos vectoriales distribuidos en los archivos S3.
Inspirado en el artículo ¿Qué base de datos vectorial debo usar? Una hoja de trucos de comparación
VectorLake creado con compensación para minimizar el mantenimiento de DB, el costo y proporcionar estrategias de partición de datos personalizadas
Soporte nativo de big data: diseñado específicamente para manejar grandes conjuntos de datos, lo que lo hace ideal para proyectos de big data.
Manejo de datos vectoriales: capaz de almacenar y consultar vectores de alta dimensión, comúnmente utilizados para integrar el almacenamiento en proyectos de aprendizaje automático. Proyectos.
Búsqueda eficiente: búsqueda eficiente de vecinos más cercanos, ideal para consultar vectores similares en espacios de alta dimensión. Esto lo hace especialmente útil para consultar para vectores similares en un espacio de alta dimensión.
Persistencia de datos: admite la persistencia de datos en el disco, el volumen de red y S3, lo que permite el almacenamiento y recuperación a largo plazo de datos indexados.
Partición personalizable: diseño de compensación para minimizar el mantenimiento de la base de datos, el costo y proporcionar estrategias de partición de datos personalizadas.
Soporte nativo de los agentes de LLM.
Almacenamiento de funciones para datos experimentales.
Para comenzar con Vectorlake, simplemente instale el paquete usando 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 ])Características personalizadas para grupos por categoría personalizada
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 le brinda la funcionalidad de una base de datos vectorial simple y resistente, pero con una configuración muy fácil y una sobrecarga de baja operación. Con él tienes una tienda vectorial distribuida ligera y confiable.
VectorLake aprovecha el pequeño mundo jerárquico navegable (HNSW) para la división de datos en todos los fragmentos de datos vectoriales. Esto asegura que cada modificación al sistema se alinee con la distancia vectorial. Puede obtener más información sobre el diseño aquí.
TBD
¡Las contribuciones a Vectorlake son bienvenidas! Si desea contribuir, siga estos pasos:
Antes de contribuir, lea las pautas contribuyentes.
Vectorlake se libera bajo la licencia MIT.