Basis data embedding vektor yang sangat sederhana, Anda dapat mengatakan bahwa itu adalah tabel hash yang memungkinkan Anda menemukan item yang mirip dengan item yang Anda cari.
Saya seorang penggemar basis data, dan ini adalah proyek untuk kesenangan dan pembelajaran yang dapat digunakan dalam produksi;).
PS : Saya suka menemukan kembali roda di waktu luang saya, karena ini adalah waktu luang saya!
Saya menggunakan model
{key => value},
keyharus menjadi nilai unik yang mewakili item.valueharus menjadi vektor itu sendiri (daftar pelampung).
Secara default
vecdbmencariconfig.ymldi direktori kerja saat ini. Tetapi Anda dapat mengesampingkannya menggunakan bendera--config /path/to/config.ymldengan menyediakan jalur file khusus Anda sendiri.
# http server related configs
server :
# the address to listen on in the form of '[host]:port'
listen : " 0.0.0.0:3000 "
# storage related configs
store :
# the driver you want to use
# currently vecdb supports "bolt" which is based on boltdb the in process embedded the database
driver : " bolt "
# the arguments required by the driver
# for bolt, it requires a key called `database` points to the path you want to store the data in.
args :
database : " ./vec.db "
# embeddings related configs
embedder :
# whether to enable the embedder and all endpoints using it or not
enabled : true
# the driver you want to use, currently vecdb supports gemini
driver : gemini
# the arguments required by the driver
# currently gemini driver requires `api_key` and `text_embedding_model`
args :
# by default vecdb will replace anything between ${..} with the actual value from the ENV var
api_key : " ${GEMINI_API_KEY} "
text_embedding_model : " text-embedding-004 "POST /v1/vectors/write saat Anda memiliki vektor dan ingin menyimpannya di suatu tempat.POST /v1/vectors/search ketika Anda memiliki vektor dan ingin mendaftar semua kunci/ID vektor serupa yang dipesan oleh kesamaan kosinus dalam urutan menurun.POST /v1/embeddings/text/write ketika Anda memiliki teks dan ingin vecdb membangun dan menyimpan vektor untuk Anda menggunakan embedder yang dikonfigurasi (Gemini untuk saat ini).POST /v1/embeddings/text/search ketika Anda memiliki teks dan ingin vecdb membangun vektor dan mencari kunci vektor serupa untuk Anda dipesan dengan kesamaan kosinus dalam urutan menurun. {
"bucket" : "BUCKET_NAME" , // consider it a collection or a table
"key" : "product-id-1" , // should be unique and represents a valid value in your main data store (example: the row id in your mysql/postgres ... etc)
"vector" : [ 1.929292 , 0.3848484 , - 1.9383838383 , ... ] // the vector you want to store
} {
"bucket" : "BUCKET_NAME" , // consider it a collection or a table
"vector" : [ 1.929292 , 0.3848484 , - 1.9383838383 , ... ] , // you will get a list ordered by cosine-similarity in descending order
"min_cosine_similarity" : 0.0 , // the more you increase, the fewer data you will get
"max_result_count" : 10 // max vectors to return (vecdb will first order by cosine similarity then apply the limit)
}Jika Anda mengatur
embedder.enabledketrue.
{
"bucket" : "BUCKET_NAME" , // consider it a collection or a table
"key" : "product-id-1" , // should be unique and represents a valid value in your main data store (example: the row id in your mysql/postgres ... etc)
"content" : "This is some text representing the product" // this will be converted to a vector using the configured embedder
}Jika Anda mengatur
embedder.enabledketrue.
{
"bucket" : "BUCKET_NAME" , // consider it a collection or a table
"content" : "A Product Text" , // you will get a list ordered by cosine-similarity in descending order
"min_cosine_similarity" : 0.0 , // the more you increase, the fewer data you will get
"max_result_count" : 10 // max vectors to return (vecdb will first order by cosine similarity then apply the limit)
}