2025-02-24
rag clone, rag pushFinally, 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-extract0.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 addFixed some quirks. Previously, you could add files in .ragit/ and .git/.
rag buildNow rag build uses multi-process to call LLMs and build chunks. It makes LLM calls and incremental ii-build much more efficient.
rag retrieve-chunksAdded 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.
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!
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.
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.
Fixed a few bugs in the ignore-parser.
Implemented 5 new endpoints
/{user-name}/{repo-name}/archive-list/{user-name}/{repo-name}/archive/{archive-key}/{user-name}/{repo-name}/begin-push/{user-name}/{repo-name}/archive/{user-name}/{repo-name}/finalize-pushThese are for the new push/clone operations.
7 tests are added: add_and_rm2, ignore, archive, many_jobs, symlink, extract_keywords and migrate2.