Home Explore Blog CI



ragit

RelNotes/0.3.0.md
1148660e279602f8d362ef5cf6f5dbef2dd4b1ce5d3cf65e0000000300000c16
# ragit 0.3.0 release

2025-02-24

## Dependencies

- bytes: new
- json: removed
- rand: 0.8.5 -> 0.9.0

## `rag clone`, `rag push`

Finally, ragit supports `push` operation. It is still a minimum viable product, but works!

In 0.2.1, `clone` naively fetches all the chunks and images, one per http request. It was very inefficient. Now it uses archive files, which is significantly more efficient.

## `rag archive-create`, `rag archive-extract`

0.3.0 supports creating/extracting archive files. You can easily create an archive of your knowledge-base using `rag archive-create`. You can share knowledge-bases even more easily with archive files. Clone/Push operations now also use archive files.

## `rag add`

Fixed some quirks. Previously, you could add files in `.ragit/` and `.git/`.

## `rag build`

Now `rag build` uses multi-process to call LLMs and build chunks. It makes LLM calls and incremental ii-build much more efficient.

## `rag retrieve-chunks`

Added a new command, which only retrieves chunks and does not ask a question. It's like `rag tfidf`, but a bit different.

|                         | `rag tfidf`                             | `rag retrieve-chunks`  |
|-------------------------|-----------------------------------------|------------------------|
| default input           | Keywords, but there's `--query` flag    | Query                  |
| extract keywords        | No                                      | Yes                    |
| rerank                  | No                                      | Yes                    |

Also, when ragit implements vector searches (someday), `rag retrieve-chunks` may use vector searches, but `rag tfidf` will still use tfidf.

## Chat models

Previously, all the models are hard-coded, and there's no way to add/remove your own models. Now, ragit uses `models.json` to manage models. If you're using an OpenAI-compatible model, Anthropic model or Cohere model, you can easily add your model to `models.json`.

CLI commands for adding/removing models are coming soon!

## CLI

Finally, ragit supports short flags and `--` flag. Instead of `rag rm --recursive`, you can use `rag rm -r`. At ragit 0.2.1, there's no way to add a file whose name starts with `"-"`. Now you can use `rag add -- --file-name` to do so.

## Safer file operations

0.3.0 implements `WriteMode::Atomic`, which tries its best to write a file atomically. It first creates a tmp file then rename the tmp file. In most file systems, a rename operation is atomic.

It reduces the error rate of `tests/many_chunks.py` and `tests/many_jobs.py` significantly.

## Ignore

Fixed a few bugs in the ignore-parser.

## Ragit-server

Implemented 5 new endpoints

- GET `/{user-name}/{repo-name}/archive-list`
- GET `/{user-name}/{repo-name}/archive/{archive-key}`
- POST `/{user-name}/{repo-name}/begin-push`
- POST `/{user-name}/{repo-name}/archive`
- POST `/{user-name}/{repo-name}/finalize-push`

These are for the new push/clone operations.

## tests

7 tests are added: add_and_rm2, ignore, archive, many_jobs, symlink, extract_keywords and migrate2.

Chunks
589118c1 (1st chunk of `RelNotes/0.3.0.md`)
Title: Ragit 0.3.0 Release Notes
Summary
The ragit 0.3.0 release introduces several new features, including support for push operations, archive file creation and extraction, and improved efficiency in clone and build processes, as well as various bug fixes and additions to the command-line interface and testing suite.