https://github.com/srgchrksv/becktordb
BecktorDB - Vector database with text document loading / chunking / embeddings and similarity search
https://github.com/srgchrksv/becktordb
aws bedrock canva embeddings gemini go golang google vector
Last synced: about 2 months ago
JSON representation
BecktorDB - Vector database with text document loading / chunking / embeddings and similarity search
- Host: GitHub
- URL: https://github.com/srgchrksv/becktordb
- Owner: srgchrksv
- Created: 2024-06-10T16:55:02.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-06-10T17:26:30.000Z (11 months ago)
- Last Synced: 2025-01-08T22:49:34.345Z (3 months ago)
- Topics: aws, bedrock, canva, embeddings, gemini, go, golang, google, vector
- Language: Go
- Homepage:
- Size: 113 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
### becktordb - Vector Database

*The Go gopher was originally designed by Renee French. Source: https://golang.org/doc/gopher*
### Features:
- Persistant storage:
- Writes and reads binary file
- Document loader with chunking
- Embeddings service:
- Gemini
- To run get GEMINI_API_KEY at [https://ai.google.dev/](https://ai.google.dev/) and set at .env
- Bedrock
- To run get access keys in IAM and set in .env file and enable 'cohere.embed-english' at Bedrock AWS:
```
AWS_ACCESS_KEY_ID=
AWS_REGION=
AWS_SECRET_ACCESS_KEY=
```- Vector similarity search:
- Cosine## Usage examples in `examples` directory:
### Gemini:
`examples/gemini/main.go````GO
// init vectorDB - becktordb - repository
db := becktordb.NewVectorDB(databaseName)
// init business layer - services
services := services.NewBectorDBservice(db)
// Init gemini
gemini := services.Gemini.Init()
// embedd all documents in the directoriesForRetrieval directory
err = gemini.GeminiEmbeddingsPath(directoriesForRetrieval, 50)
if err != nil {
log.Fatal(err)
}
// Query vectorDB - becktordb for similarity
results, err := gemini.GeminiEmbeddingsQuery("What going on today?", 2)
if err != nil {
log.Fatal(err)
}
fmt.Println("Top 2 results:", results)```
### Bedrock:
`examples/bedrock/main.go````Go
db := becktordb.NewVectorDB(databaseName)
// init business layer - services
services := services.NewBectorDBservice(db)
// init bedrock
bedrock := services.Bedrock.Init()
err = bedrock.BedrockEmbeddingsPath(directoriesForRetrieval, 50)
if err != nil {
log.Fatal(err)
}
// Query vectorDB - becktordb for similarity
results, err := bedrock.BedrockEmbeddingsQuery("What going on today?", 2)
if err != nil {
log.Fatal(err)
}
fmt.Println("Top 2 results:", results)```