Categorygithub.com/a-h/ragserver
modulepackage
0.0.0-20250214100407-73d01987cc35
Repository: https://github.com/a-h/ragserver.git
Documentation: pkg.go.dev

# README

ragserver

Tasks

db-run

interactive: true

rqlited -auth=auth.json -extensions-path="${SQLITE_VEC_PATH}" ~/ragserver

db-shell

interactive: true

rqlite --user='admin:secret'

db-migration-create

migrate create -ext sql -dir db/migrations -seq create_documents_table

test

go test ./...

serve

ENV: RQLITE_URL=http://admin:secret@localhost:4001

go run ./cmd/ragserver/ serve --rqlite-url "http://admin:secret@localhost:4001"

import

interactive: true

go run ./cmd/ragserver/ import --collection "entities" --expand "contacts,tags,dependsOn,dependsOn.contacts,dependsOn.tags,contributesTo,contributesTo.contacts,contributesTo.tags" --files="attachments" --rag-server-api-key "test-api-key"

import-dry-run

interactive: true

go run ./cmd/ragserver/ import --collection "entities" --expand "contacts,tags,dependsOn,dependsOn.contacts,dependsOn.tags,contributesTo,contributesTo.contacts,contributesTo.tags" --files="attachments" --dry-run --id lyo5pgij6hcwx4j

context

interactive: true

go run ./cmd/ragserver context --text="What is the plan to destroy the Death Star?" --rag-server-api-key="test-api-key" --pretty=false

chat

interactive: true

go run ./cmd/ragserver chat --rag-server-api-key="test-api-key"

query-context

interactive: true

go run ./cmd/ragserver query -q "What is the plan to destroy the Death Star?" --rag-server-api-key="test-api-key"

query-nocontext

interactive: true

go run ./cmd/ragserver query --no-context -q "What is the plan to destroy the Death Star?"

gomod2nix-update

gomod2nix

build

nix build

run

nix run

develop

nix develop

update-version

version set

push-tag

Push a semantic version number.

version push

docker-build-aarch64

nix build .#packages.aarch64-linux.docker-image

docker-build-x86_64

nix build .#packages.x86_64-linux.docker-image

crane-push-app

env: CONTAINER_REGISTRY=ghcr.io/ragserver env: VERSION=$(version get)

nix build .#packages.x86_64-linux.docker-image
cp ./result /tmp/ragserver.tar.gz
gunzip -f /tmp/ragserver.tar.gz
crane push /tmp/ragserver.tar "${CONTAINER_REGISTRY}/ragserver:${VERSION}"

docker-load

Once you've built the image, you can load it into a local Docker daemon with docker load.

docker load < result

docker-run

docker run -p 8080:8080 app:latest

docker-build-rqlite-aarch64

nix build .#packages.aarch64-linux.rqlite-docker-image

docker-build-rqlite-x86_64

nix build .#packages.x86_64-linux.rqlite-docker-image

crane-push-rqlite

env: CONTAINER_REGISTRY=ghcr.io/ragserver

nix build .#packages.x86_64-linux.rqlite-docker-image
cp ./result /tmp/rqlite.tar.gz
gunzip -f /tmp/rqlite.tar.gz
crane push /tmp/rqlite.tar ${CONTAINER_REGISTRY}/rqlite:v0.0.1

docker-load-rqlite

Once you've built the image, you can load it into a local Docker daemon with docker load.

docker load < result

docker-run-rqlite

docker run -v "$PWD/auth.json:/mnt/rqlite/auth.json" -v "$PWD/.rqlite:/mnt/data" -p 4001:4001 -p 4002:4002 -p 4003:4003 rqlite:latest

k8s-create-namespace

kubectl create namespace ragserver

k8s-create-secrets

Need to create auth.json as a k8s secret.

kubectl -n ragserver create secret generic rqlite-auth --from-file=auth.json
kubectl -n ragserver create secret generic ragserver-apikeys --from-file=apikeys.json

k8s-local-create-volume

Local k8s requires a volume to store data. In a cloud provider, this will likely already exists.

envsubst < k8s/local/volume.yaml | kubectl --namespace ragserver apply -f -

k8s-apply

env: CONTAINER_REGISTRY=ghcr.io/ragserver env: VERSION=$(version get) dir: k8s interactive: true

for f in *.yaml; do envsubst < $f | kubectl apply --namespace ragserver -f -; done

k8s-local-expose-ports

Once the application is deployed, we need to expose the ports in the k8s pods to the local machine. After this, the application will be available at localhost:9020.

kubectl port-forward service/ragserver 9020:9020 -n ragserver

k8s-get-logs-ragserver

kubectl logs -n ragserver -l service=ragserver

k8s-get-logs-rqlite

kubectl logs -n ragserver -l service=rqlite

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

go:embed .version.