vector_lake
1.0.0
VectorLake是一个可靠的矢量数据库,旨在低维护,成本,有效的存储和ANN查询对跨S3文件分布的任何大小向量数据。
受文章的启发,我应该使用哪个矢量数据库?比较备忘单
以折衷创建的vectorlake,以最大程度地减少数据库维护,成本并提供自定义数据分配策略
本机大数据支持:专门用于处理大数据集的设计,使其非常适合大数据项目。
向量数据处理:能够存储和查询高维向量,通常用于将存储嵌入机器学习项目中。项目。
有效的搜索:有效的最近邻居搜索,非常适合在高维空间中查询相似向量。这使得它对于在高维空间中的类似向量查询特别有用。
数据持久性:支持磁盘,网络量和S3上的数据持久性,从而可以长期存储和检索索引数据。
可定制的分区:权衡设计,以最大程度地减少数据库维护,成本并提供自定义数据分配策略。
LLM代理的本地支持。
功能存储用于实验数据。
要开始使用vectorlake,只需使用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 ])按自定义分区自定义分区按自定义类别
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为您提供了一个简单,有弹性的矢量数据库的功能,但是设置非常简单,操作开销低。有了它,您拥有轻巧且可靠的分布式矢量商店。
VectorLake利用层次可导航的小世界(HNSW)在所有矢量数据碎片上进行数据划分。这样可以确保每个对系统的修改都与向量距离对齐。您可以在此处了解有关设计的更多信息。
TBD
欢迎对Vectorlake的贡献!如果您想做出贡献,请按照以下步骤:
在贡献之前,请阅读贡献指南。
VectorLake根据MIT许可发布。