Vectorlake เป็นฐานข้อมูลเวกเตอร์ที่แข็งแกร่งซึ่งออกแบบมาสำหรับการบำรุงรักษาต่ำต้นทุนการจัดเก็บที่มีประสิทธิภาพและการสืบค้น ANN ของข้อมูลเวกเตอร์ขนาดใด ๆ ที่กระจายไปทั่วไฟล์ S3
แรงบันดาลใจจากบทความฉันควรใช้ฐานข้อมูล Vector ใด Cheatsheet เปรียบเทียบ
Vectorlake สร้างขึ้นด้วยการแลกเปลี่ยนเพื่อลดการบำรุงรักษา DB ต้นทุนและจัดเตรียมกลยุทธ์การแบ่งพาร์ติชันข้อมูลที่กำหนดเอง
Native Big Data Support: ออกแบบมาโดยเฉพาะเพื่อจัดการชุดข้อมูลขนาดใหญ่ทำให้เหมาะสำหรับโครงการข้อมูลขนาดใหญ่
การจัดการข้อมูลเวกเตอร์: ความสามารถในการจัดเก็บและสอบถามเวกเตอร์มิติสูงซึ่งใช้กันทั่วไปสำหรับการจัดเก็บข้อมูลในโครงการการเรียนรู้ของเครื่องจักร
การค้นหาที่มีประสิทธิภาพ: การค้นหาเพื่อนบ้านที่ใกล้ที่สุดที่มีประสิทธิภาพเหมาะสำหรับการสอบถามเวกเตอร์ที่คล้ายกันในพื้นที่มิติสูง สิ่งนี้ทำให้มีประโยชน์อย่างยิ่งสำหรับการสืบค้นสำหรับเวกเตอร์ที่คล้ายกันในพื้นที่มิติสูง
การคงอยู่ของข้อมูล: รองรับการคงอยู่ของข้อมูลบนดิสก์ปริมาณเครือข่ายและ 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