O VectorLake é um banco de dados vetorial robusto, projetado para baixa manutenção, custo, armazenamento eficiente e consulta de Ann de qualquer tamanho de vetor de dados distribuídos nos arquivos S3.
Inspirado no artigo Qual banco de dados vetorado devo usar? Uma folha de trapaça de comparação
VectorLake criado com troca para minimizar a manutenção, o custo e fornecer estratégias personalizadas de particionamento de dados
Suporte a big data nativo: projetado especificamente para lidar com grandes conjuntos de dados, tornando -o ideal para projetos de big data.
Manuseio de dados vetoriais: capaz de armazenar e consultar vetores de alta dimensão, comumente usados para incorporar armazenamento em projetos de aprendizado de máquina.
Pesquisa eficiente: pesquisa eficiente dos vizinhos mais próximos, ideal para consultar vetores semelhantes em espaços de alta dimensão. Isso o torna especialmente útil para consultar vetores semelhantes em um espaço de alta dimensão.
Persistência de dados: suporta a persistência de dados no disco, volume de rede e S3, permitindo o armazenamento de longo prazo e a recuperação de dados indexados.
Partição personalizável: design de trade-off para minimizar a manutenção do banco de dados, o custo e fornecer estratégias de partição de dados personalizadas.
Apoio nativo de agentes LLM.
Armazenamento de recursos para dados experimentais.
Para começar com o VectorLake, basta instalar o pacote 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 ])Partição personalizada para recursos de grupo por categoria 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 )O Vectorlake fornece a funcionalidade de um banco de dados vetorial simples e resiliente, mas com configuração muito fácil e baixa sobrecarga operacional. Com ele, você tem uma loja de vetores distribuídos leves e confiáveis.
O VectorLake aproveita o pequeno mundo pequeno hierárquico (HNSW) para particionamento de dados em todos os fragmentos de dados do vetor. Isso garante que cada modificação no sistema alinhe com a distância do vetor. Você pode aprender mais sobre o design aqui.
TBD
As contribuições para o Vectorlake são bem -vindas! Se você quiser contribuir, siga estas etapas:
Antes de contribuir, leia as diretrizes contribuintes.
O Vectorlake é liberado sob a licença do MIT.