- Notifications
You must be signed in to change notification settings - Fork1
pgvector/pgvector-r
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
pgvector examples for R
Follow the instructions for your database library:
Or check out an example:
- Embeddings with OpenAI
- Binary embeddings with Cohere
- Sparse search with Text Embeddings Inference
- Molecular fingerprints with ChemmineR
Enable the extension
dbExecute(db,"CREATE EXTENSION IF NOT EXISTS vector")
Create a table
dbExecute(db,"CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))")
Insert vectors
encodeVector<-function(vec) { stopifnot(is.numeric(vec)) paste0("[", paste(vec,collapse=","),"]")}embeddings<-list( c(1,1,1), c(2,2,2), c(1,1,2))items<-data.frame(embedding=sapply(embeddings,encodeVector))dbAppendTable(db,"items",items)
Get the nearest neighbors
params<-list(encodeVector(c(1,2,3)))dbGetQuery(db,"SELECT * FROM items ORDER BY embedding <-> $1 LIMIT 5",params=params)
Add an approximate index
dbExecute(db,"CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)")# ordbExecute(db,"CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)")
Usevector_ip_ops
for inner product andvector_cosine_ops
for cosine distance
See afull example
Enable the extension
dbxExecute(db,"CREATE EXTENSION IF NOT EXISTS vector")
Create a table
dbxExecute(db,"CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))")
Insert vectors
encodeVector<-function(vec) { stopifnot(is.numeric(vec)) paste0("[", paste(vec,collapse=","),"]")}embeddings<-list( c(1,1,1), c(2,2,2), c(1,1,2))items<-data.frame(embedding=sapply(embeddings,encodeVector))dbxInsert(db,"items",items)
Get the nearest neighbors
params<-list(encodeVector(c(1,2,3)))dbxSelect(db,"SELECT * FROM items ORDER BY embedding <-> ? LIMIT 5",params=params)
Add an approximate index
dbxExecute(db,"CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)")# ordbxExecute(db,"CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)")
Usevector_ip_ops
for inner product andvector_cosine_ops
for cosine distance
See afull example
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs andsubmit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development:
git clone https://github.com/pgvector/pgvector-r.gitcd pgvector-rcreatedb pgvector_r_testRscript -e"install.packages('remotes', repos='https://cloud.r-project.org')"Rscript -e"remotes::install_deps(dependencies=TRUE)"Rscript DBI/example.RRscript dbx/example.R
To run an example:
cd examples/openaicreatedb pgvector_exampleRscript -e"remotes::install_deps(dependencies=TRUE)"Rscript example.R
About
pgvector examples for R
Resources
License
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.