Ever wanted to query your Obsidian notes using ChatGPT? Now you can! This Rust web service lets you do exactly that, by ingesting your Obsidian notes as embeddings into a Qdrant database and then using ChatGPT for prompting.
Usage assumes that your obsidian-git repo is in a private repo you own.
This service is primarily (currently) deployed through Shuttle. To deploy it, do the following:
- Run
cargo shuttle init --from joshua-mo-143/ballista
and follow the instructions - Copy
Secrets.toml.example
toSecrets.toml
and fill out the secrets. See the following below for an explanation:OPENAI_KEY
: An OpenAI API key for which you have funds on.GITHUB_PERSONAL_ACCESS_TOKEN
- A GitHub Personal Access Token. You need at the very leastrepo:read
permissions, since this is required to be able to download your obsidian-git repo if it's private.GITHUB_USERNAME
- Your username (or alternatively - someone else's username, if you're using their obsidian-git repo).GITHUB_REPO
- The repo you want to ingest. Note that only Markdown files are supported for now - Ballista will ignore anything else.QDRANT_URL
- The URL of your Qdrant database. Note that the port needs to be 6334 asqdrant_client
utilises the gRPC URL. If you're just trying this out locally, you can leave it blank.QDRANT_API_KEY
- Your Qdrant API key. You can leave this blank if you're just running this locally.
- Run
cargo shuttle deploy
and watch the magic happen! - Visit your deployment URL and try writing a prompt.
- Downloads your Markdown files from a GitHub repo and ingests it into ChatGPT embeddings, then stores it in Qdrant.
- Supports Github webhooks at
/webhooks/github
for self-updating with no input required on your side. - Uses an internal queue for resilient updating. If your update fails, simply send the webhook again!
Yes, but I don't want to pay exorbitant amounts just to be able to query my extremely small knowledge base. If you're interested in using this, I don't think you do either.