Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Khoj 🦅

build test publish

A natural language search engine for your personal notes, transactions and images

Table of Contents

Features

  • Natural: Advanced Natural language understanding using Transformer based ML Models
  • Local: Your personal data stays local. All search, indexing is done on your machine*
  • Incremental: Incremental search for a fast, search-as-you-type experience
  • Pluggable: Modular architecture makes it easy to plug in new data sources, frontends and ML models
  • Multiple Sources: Search your Org-mode and Markdown notes, Beancount transactions and Photos
  • Multiple Interfaces: Search using a Web Browser, Emacs or the API

Demo

https://user-images.githubusercontent.com/6413477/181664862-31565b0a-0e64-47e1-a79a-599dfc486c74.mp4

Description

Analysis

  • The results do not have any words used in the query
    • Based on the top result it seems the re-ranking model understands that Emacs is an editor?
  • The results incrementally update as the query is entered
  • The results are re-ranked, for better accuracy, once user is idle

Architecture

Setup

1. Install

pip install khoj-assistant

2. Configure

  • Set input-files or input-filter in each relevant content-type section of khoj_sample.yml
    • Set input-directories field in content-type.image section
  • Delete content-type, processor sub-sections irrelevant for your use-case

3. Run

khoj config/khoj_sample.yml -vv

Loads ML model, generates embeddings and exposes API to search notes, images, transactions etc specified in config YAML

Use

Upgrade

pip install --upgrade khoj-assistant

Troubleshoot

  • Symptom: Errors out complaining about Tensors mismatch, null etc

    • Mitigation: Delete content-type > image section from khoj_sample.yml
  • Symptom: Errors out with "Killed" in error message in Docker

Miscellaneous

  • The experimental chat API endpoint uses the OpenAI API
    • It is disabled by default
    • To use it add your openai-api-key to config.yml

Performance

Query performance

  • Semantic search using the bi-encoder is fairly fast at <5 ms
  • Reranking using the cross-encoder is slower at <2s on 15 results. Tweak top_k to tradeoff speed for accuracy of results
  • Applying explicit filters is very slow currently at ~6s. This is because the filters are rudimentary. Considerable speed-ups can be achieved using indexes etc

Indexing performance

  • Indexing is more strongly impacted by the size of the source data
  • Indexing 100K+ line corpus of notes takes 6 minutes
  • Indexing 4000+ images takes about 15 minutes and more than 8Gb of RAM
  • Once https://github.com/debanjum/khoj/issues/36 is implemented, it should only take this long on first run

Miscellaneous

  • Testing done on a Mac M1 and a >100K line corpus of notes
  • Search, indexing on a GPU has not been tested yet

Development

Setup

Using Pip

1. Install
git clone https://github.com/debanjum/khoj && cd khoj
python -m venv .venv && source .venv/bin/activate
pip install
2. Configure
  • Set input-files or input-filter in each relevant content-type section of khoj_sample.yml
    • Set input-directories field in image content-type section
  • Delete content-type, processor sub-sections irrelevant for your use-case
3. Run
khoj config/khoj_sample.yml -vv

Load ML model, generate embeddings and expose API to query notes, images, transactions etc specified in config YAML

4. Upgrade
# To Upgrade To Latest Stable Release
pip install --upgrade khoj-assistant

# To Upgrade To Latest Pre-Release
pip install --upgrade --pre khoj-assistant

# To Upgrade To Specific Development Release
pip install -r testpypi khoj-assistant==0.1.5.dev491659577806

Using Docker

1. Clone
git clone https://github.com/debanjum/khoj && cd khoj
2. Configure
  • Required: Update docker-compose.yml to mount your images, (org-mode or markdown) notes and beancount directories
  • Optional: Edit application configuration in khoj_docker.yml
3. Run
docker-compose up -d

Note: The first run will take time. Let it run, it's mostly not hung, just generating embeddings

4. Upgrade
docker-compose build --pull

Using Conda

1. Install Dependencies
  • Install Conda [Required]
  • Install Exiftool [Optional]
    sudo apt -y install libimage-exiftool-perl
    
2. Install Khoj
git clone https://github.com/debanjum/khoj && cd khoj
conda env create -f config/environment.yml
conda activate khoj
3. Configure
  • Set input-files or input-filter in each relevant content-type section of khoj_sample.yml
    • Set input-directories field in image content-type section
  • Delete content-type, processor sub-sections irrelevant for your use-case
4. Run
python3 -m src.main config/khoj_sample.yml -vv

Load ML model, generate embeddings and expose API to query notes, images, transactions etc specified in config YAML

5. Upgrade
cd khoj
git pull origin master
conda deactivate khoj
conda env update -f config/environment.yml
conda activate khoj

Test

pytest

Credits

Metadata

Release files for khoj-assistant 0.1.5a1659877456

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for khoj-assistant 0.1.5a1659877456
File Size Uploaded
khoj-assistant-0.1.5a1659877456.tar.gz 164.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for khoj-assistant 0.1.5a1659877456
File Interpreter ABI Platform
khoj_assistant-0.1.5a1659877456-py3-none-any.whl Python 3 none any Details

Total release size: 337.7 kB

Release files / khoj-assistant-0.1.5a1659877456.tar.gz

Download URL khoj-assistant-0.1.5a1659877456.tar.gz
Size 164.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7f2bde92447199b47e59d7661c3a4696138ebfb49c562443e17391910ef53582
BLAKE2b-256 checksum
How to use checksums
c09170a28230f299497317362b3d981bbf0a43ccc10300b38712ca0b19efed1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.5

Release files / khoj_assistant-0.1.5a1659877456-py3-none-any.whl

Download URL khoj_assistant-0.1.5a1659877456-py3-none-any.whl
Size 173.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f41cf2f9378a20460850e729371556eb150eced8ed56925042275a21cdbd69ae
BLAKE2b-256 checksum
How to use checksums
25837c67c7b5b5de529448add52b212d61ddcbc02a5b6d38ebb15105dc899f13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.5

Release history Release notifications | RSS feed

1.21.1

2 release files

1.21.0

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.12.1

2 release files

1.11.2

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.3

2 release files

0.12.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page