10 KiB
Setup
These are the general setup instructions for Khoj.
- Make sure python and pip are installed on your machine
- Check the Khoj Emacs docs to setup Khoj with Emacs
It's simpler as it can skip the server install, run and configure step below. - Check the Khoj Obsidian docs to setup Khoj with Obsidian
Its simpler as it can skip the configure step below.
For Installation, you can either use Docker or install Khoj locally.
1. Installation (Docker)
Prerequisites
- Install Docker Engine. See official instructions.
- Ensure you have Docker Compose. See official instructions.
Setup
Use the sample docker-compose in Github to run Khoj in Docker. Start by configuring all the environment variables to your choosing. Your admin account will automatically be created based on the admin credentials in that file, so pay attention to those. To start the container, run the following command in the same directory as the docker-compose.yml file. This will automatically setup the database and run the Khoj server.
docker-compose up
Khoj should now be running at http://localhost:42110. You can see the web UI in your browser.
1. Installation (Local)
Prerequisites
Install Postgres (with PgVector)
Khoj uses the pgvector
package to store embeddings of your index in a Postgres database. In order to use this, you need to have Postgres installed.
MacOS
Install Postgres.app. This comes pre-installed with pgvector
and relevant dependencies.
Windows
- Use the recommended installer
- Follow instructions to Install PgVector in case you need to manually install it. Reproduced instructions below for convenience.
cd /tmp
git clone --branch v0.5.1 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # may need sudo
Linux
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install postgres-16 postgresql-16-pgvector
From Source
- Follow instructions to Install Postgres
- Follow instructions to Install PgVector in case you need to manually install it. Windows support is experimental for
pgvector
currently, so we recommend using Docker.
Create the Khoj database
Make sure to update your environment variables to match your Postgres configuration if you're using a different name. The default values should work for most people. When prompted for a password, you can use the default password postgres
, or configure it to your preference. Make sure to set the environment variable POSTGRES_PASSWORD
to the same value as the password you set here.
MacOS
createdb khoj -U postgres --password
Windows
createdb -U postgres khoj --password
Linux
sudo -u postgres createdb khoj --password
Install package
Local Server Setup
Run the following command in your terminal to install the Khoj backend.
MacOS
python -m pip install khoj-assistant
Windows
py -m pip install khoj-assistant
For more detailed Windows installation and troubleshooting, see Windows Install.
Linux
python -m pip install khoj-assistant
Local Server Start
Run the following command from your terminal to start the Khoj backend and open Khoj in your browser.
khoj --anonymous-mode
--anonymous-mode
allows you to run the server without setting up Google credentials for login. This allows you to use any of the clients without a login wall. If you want to use Google login, you can skip this flag, but you will have to add your Google developer credentials.
On the first run, you will be prompted to input credentials for your admin account and do some basic configuration for your chat model settings. Once created, you can go to http://localhost:42110/server/admin and login with the credentials you just created.
Khoj should now be running at http://localhost:42110. You can see the web UI in your browser.
Note: To start Khoj automatically in the background use Task scheduler on Windows or Cron on Mac, Linux (e.g with @reboot khoj
)
2. Download the desktop client
You can use our desktop executables to select file paths and folders to index. You can simply select the folders or files, and they'll be automatically uploaded to the server. Once you specify a file or file path, you don't need to update the configuration again; it will grab any data diffs dynamically over time.
To download the latest desktop client, go to https://download.khoj.dev and the correct executable for your OS will automatically start downloading. Once downloaded, you can configure your folders for indexing using the settings tab. To set your chat configuration, you'll have to use the web interface for the Khoj server you setup in the previous step.
To use the desktop client, you need to go to your Khoj server's settings page (http://localhost:42110/config) and copy the API key. Then, paste it into the desktop client's settings page. Once you've done that, you can select files and folders to index.
3. Configure
- Go to http://localhost:42110/server/admin and login with your admin credentials.
- Go to OpenAI settings in the server admin settings to add an Open AI processor conversation config. This is where you set your API key. Alternatively, you can go to the offline chat settings and simply create a new setting with
Enabled
set toTrue
. - Go to the ChatModelOptions if you want to add additional models for chat. For example, you can specify
gpt-4
if you're using OpenAI ormistral-7b-instruct-v0.1.Q4_0.gguf
if you're using offline chat. Make sure to configure thetype
field toOpenAI
orOffline
respectively.
- Go to OpenAI settings in the server admin settings to add an Open AI processor conversation config. This is where you set your API key. Alternatively, you can go to the offline chat settings and simply create a new setting with
- Select files and folders to index using the desktop client. When you click 'Save', the files will be sent to your server for indexing.
- Select Notion workspaces and Github repositories to index using the web interface.
4. Install Client Plugins (Optional)
Khoj exposes a web interface to search, chat and configure by default.
The optional steps below allow using Khoj from within an existing application like Obsidian or Emacs.
Setup host URL
To configure your host URL on your clients when self-hosting, use http://127.0.0.1:42110
. This is the default value for the KHOJ_HOST
environment variable. Note that localhost
will not work.
5. Use Khoj 🚀
You can head to http://localhost:42110 to use the web interface. You can also use the desktop client to search and chat.
Upgrade
Upgrade Khoj Server
Local Setup
pip install --upgrade khoj-assistant
Note: To upgrade to the latest pre-release version of the khoj server run below command
# Maps to the latest commit on the master branch
pip install --upgrade --pre khoj-assistant
Docker
From the same directory where you have your docker-compose
file, this will fetch the latest build and upgrade your server.
docker-compose up --build
Upgrade Khoj on Emacs
- Use your Emacs Package Manager to Upgrade
- See khoj.el package setup for details
Upgrade Khoj on Obsidian
- Upgrade via the Community plugins tab on the settings pane in the Obsidian app
- See the khoj plugin setup for details
Uninstall
- (Optional) Hit
Ctrl-C
in the terminal running the khoj server to stop it - Delete the khoj directory in your home folder (i.e
~/.khoj
on Linux, Mac orC:\Users\<your-username>\.khoj
on Windows) - You might want to
rm -rf
the following directories:~/.khoj
~/.cache/gpt4all
- Uninstall the khoj server with
pip uninstall khoj-assistant
- (Optional) Uninstall khoj.el or the khoj obsidian plugin in the standard way on Emacs, Obsidian
Troubleshoot
Install fails while building Tokenizer dependency
- Details:
pip install khoj-assistant
fails while building thetokenizers
dependency. Complains about Rust. - Fix: Install Rust to build the tokenizers package. For example on Mac run:
brew install rustup rustup-init source ~/.cargo/env
- Refer: Issue with Fix for more details
Search starts giving wonky results
- Fix: Open /api/update?force=true in browser to regenerate index from scratch
- Note: This is a fix for when you perceive the search results have degraded. Not if you think they've always given wonky results
Khoj in Docker errors out with "Killed" in error message
- Fix: Increase RAM available to Docker Containers in Docker Settings
- Refer: StackOverflow Solution, Configure Resources on Docker for Mac
Khoj errors out complaining about Tensors mismatch or null
- Mitigation: Disable
image
search using the desktop GUI