Releases: SciPhi-AI/R2R
R2R v3.3.30
Released on January 23, 2025
We’re excited to announce the newest release of R2R: v3.3.30! This version contains major enhancements to the agent’s capabilities, new Docker Swarm support, additional configuration options for security and extended model support, and numerous other improvements and fixes. Below is an overview of the most noteworthy changes.
🚀 Major Agent Upgrades
Date & Knowledge Base Awareness
- Date awareness: Agents now have improved context about current dates and times, enabling more precise and contextually correct responses.
- Knowledge base insights: Agents can query all available documents, their summaries, collections, and sizes. This means more intelligent retrieval and referencing of ingested data, paving the way for advanced summarization and context understanding.
Enhanced Tooling
- New
content
tool: Fetch the raw content of any document directly, enabling single-document summarizations and specialized analysis without a broad search. web_search
tool enabled by default: Agents can call the web search tool to gather external information. This is configured out-of-the-box for the Rowland environment and can be toggled as needed.local_search
improvements: Continues to be available for local knowledge retrieval, now with refined logic to ensure faster and more accurate searches.
Improved Agent Configuration
- Refactored agent settings:
agent_config
replaces the olderself.config.agent
usage, streamlining how agent behavior is controlled and removing extraneous parameters. - Cleaner messaging flows: Internally, message-handling logic was overhauled for greater consistency, resulting in fewer edge cases and a more robust conversation flow.
🛠 New Features & Enhancements
Docker Swarm Support
- Horizontal scaling: R2R can now be deployed via Docker Swarm for easier clustering in distributed environments.
- Updated Compose files:
compose.full.swarm.yaml
,compose.full.yaml
, andcompose.yaml
include references for seamless Docker Swarm service orchestration.
XAI / GROK Integration
- New
XAI_API_KEY
environment variable: Allows use of advanced XAI/GROK models. - Example Compose updates:
XAI_API_KEY
is now present in.env.example
and Docker Compose configurations, so you can pass authentication for these models automatically.
JWT Auth Provider
- JWT-based authentication: Added as a new auth provider, enabling a more secure and standardized authentication flow across R2R setups.
- Integration: Configure your JWT settings in the R2R config files to protect endpoints with token-based security.
Knowledge Graph & Document Processing
- kg_clustering & kg_community_summary fixes: Corrected indexing and
num_communities
handling, and improved the functions’ return structures for better downstream usage. - Hatchet fallback ingestion: Introduced a fallback ingestion path to ensure documents are successfully processed even if the primary method encounters errors.
- Empty page allowance: The PDF parser no longer raises an error for empty pages, making ingestion more robust across diverse document formats.
- Automatic
total_tokens
column: R2R now automatically adds atotal_tokens
column to thedocuments
table if missing, avoiding migration blockers and reducing friction for existing installations.
Configuration Examples & Cleanup
- Combined Example TOML: All possible configuration parameters are now grouped into a single example
r2r.toml
, making it simpler to discover and enable new features. - Refactored agent & retrieval logic: Extraction of common RAG agent patterns into a dedicated
RAGAgentMixin
. Simplifies how local/web searches and content lookups are handled in agent code. - Pre-commit linting: Ensures consistent code style and quality, lowering the bar for new contributors to keep the repository clean.
🐛 Bug Fixes & Stability
- Agent runtime spec corrections: Addressed edge cases where the agent would misinterpret or fail to execute runtime specifications.
- Graph extraction patches: Improved how graph data is extracted and utilized, reducing errors in advanced knowledge graph operations.
- RAG streaming resilience: Re-introduced and enhanced streaming capabilities for RAG-based queries, fixing stability issues in streaming responses.
- Build cluster logic: Patched a bug in the cluster-building logic to ensure robust knowledge graph creation even in complex document sets.
⚙️ Developer Experience
- Dockerfile for Unstructured: Updated with the latest NLTK data changes. Streamlines building and running the unstructured text processing environment by removing outdated Dockerfiles and consolidating dependencies.
- Code refactoring & cleaning: Removal of deprecated pipelines, improved logging messages, and better error handling throughout the codebase.
- Testing improvements: Extended and refactored tests, including coverage for new agent tools, collection ID filters, and database migrations.
👥 New Contributors
- [@mstickel](https://github.com/mstickel) contributed JWT auth provider in [#1833](#1833).
- [@ArturTanona](https://github.com/ArturTanona) contributed XAI API Key support in [#1865](#1865).
Thank you for helping make R2R even better!
Getting Started & Upgrading
- Pull the latest docker images or update your code from the [R2R GitHub repository](https://github.com/SciPhi-AI/R2R).
- Set up new environment variables (
XAI_API_KEY
) if you intend to use XAI/GROK model features. - Run migrations to ensure the new
total_tokens
column is present in thedocuments
table. R2R automatically attempts to add this column if it’s missing, with no downtime or data loss. - Review your
r2r.toml
(or equivalent config) for updated agent and RAG entries, especially if you want to enable or disable new search tools at runtime.
Full Changelog
For a comprehensive list of changes, including commits and pull requests, see the official [GitHub comparison between v3.3.29 and v3.3.30](v3.3.29...v3.3.30).
We appreciate your support and feedback. If you have questions or run into any issues, please open an issue on [GitHub](https://github.com/SciPhi-AI/R2R/issues) or reach out on our community forum. Happy building!
v3.3.29
Adds in contextual enrichment, which you can learn more about here: https://r2r-docs.sciphi.ai/documentation/contextual-enrichment
What's Changed
- Reintroduce contextual enrichment by @NolanTrem in #1832
- fix graph collection filtering by @emrgnt-cmplxty in #1834
- fix sim. calc and return by @emrgnt-cmplxty in #1835
- fix relationship filters by @emrgnt-cmplxty in #1836
- Bump LiteLLM by @NolanTrem in #1837
Full Changelog: v3.3.28...v3.3.29
v3.3.28
Introduces deduplication, automatic extraction and deduplication, as well as a number of bug fixes.
What's Changed
- Feature/add auth callback by @emrgnt-cmplxty in #1809
- Add await to ingestion by @NolanTrem in #1811
- Improve XML Sanitation by @NolanTrem in #1812
- Introduce LM Studio by @NolanTrem in #1813
- Bug fix: passing document id to chunks by @NolanTrem in #1815
- tweak graph permissions by @emrgnt-cmplxty in #1817
- force overwrite of graphrag prompts by @emrgnt-cmplxty in #1818
- tweak for prod fix by @emrgnt-cmplxty in #1819
- Add 'processing' status to document extraction by @NolanTrem in #1821
- Feature/add auto extract by @emrgnt-cmplxty in #1822
- Document Entity Deduplication by @NolanTrem in #1823
- Admin only for logs websocket by @NolanTrem in #1826
- Fix document count on collections by @NolanTrem in #1827
- Feature/fix default client add conversation title by @emrgnt-cmplxty in #1830
- Disable automatic extraction and deduplication for local models by @NolanTrem in #1831
Full Changelog: 3.3.27...v3.3.28
3.3.27
A number of bug fixes, introduction of more user management configurations, and refined graph processes to better support local LLMs.
What's Changed
- Feature/fix zerox ingestion by @emrgnt-cmplxty in #1659
- Dev minor by @emrgnt-cmplxty in #1665
- fix provider defaults issue by @emrgnt-cmplxty in #1667
- fix retrieval by @emrgnt-cmplxty in #1669
- Fix agent responses for conversation by @NolanTrem in #1668
- Fix serialization error for Collection UUID going into Hatchet workflow by @NolanTrem in #1670
- Feature/add document search back by @emrgnt-cmplxty in #1672
- fix owner id references by @emrgnt-cmplxty in #1673
- Patch/fix filtered deletion logic by @emrgnt-cmplxty in #1677
- Add statement_cache_size parameter to allow connections to Supabase by @NolanTrem in #1676
- up by @emrgnt-cmplxty in #1678
- 20,539% speed up in collections overview by @NolanTrem in #1680
- Nolan/collections migration by @NolanTrem in #1681
- up by @emrgnt-cmplxty in #1679
- Feature/test graphs and indices by @emrgnt-cmplxty in #1683
- up by @emrgnt-cmplxty in #1684
- Feature/fix multi user search by @emrgnt-cmplxty in #1686
- Add document summary to extraction process by @NolanTrem in #1682
- Nolan/collections summary by @NolanTrem in #1685
- Feature/clustering as a service by @emrgnt-cmplxty in #1687
- Patch/rename to cluster as a service by @emrgnt-cmplxty in #1688
- cleanup scale settings by @emrgnt-cmplxty in #1689
- Feature/improve collection logic add regr tests by @emrgnt-cmplxty in #1692
- merge in nolan + main by @emrgnt-cmplxty in #1694
- up by @emrgnt-cmplxty in #1695
- checkin limits implementation by @emrgnt-cmplxty in #1696
- up by @emrgnt-cmplxty in #1697
- delete test cruft by @emrgnt-cmplxty in #1700
- up by @emrgnt-cmplxty in #1701
- Feature/add systems test for limits by @emrgnt-cmplxty in #1703
- Implementing Missing R2R Parsers, Image Ingestion by @NolanTrem in #1702
- Regenerate lock by @NolanTrem in #1704
- Release 3.3.15 by @NolanTrem in #1705
- Add Poppler by @NolanTrem in #1706
- Include compose.full_with_replicas by @NolanTrem in #1707
- up by @emrgnt-cmplxty in #1709
- Test cloud rate limit by @NolanTrem in #1711
- Fix rate limit bug on Websockets by @NolanTrem in #1712
- Improved types by @emrgnt-cmplxty in #1710
- Move dict.update (shallow copy) to deep_update by @NolanTrem in #1714
- Remove chunking strategy from test by @NolanTrem in #1715
- Conversations Updates by @NolanTrem in #1716
- Add NaCl Crypto Provider, User API Keys by @emrgnt-cmplxty in #1713
- Allow setting conversation name in conversation.create by @NolanTrem in #1717
- Allow superuser to delete any document by @NolanTrem in #1719
- Community deletion by @NolanTrem in #1720
- Ensure name and bio are returned with user, clean up typing across auth by @NolanTrem in #1722
- Add Permissions to Conversations by @NolanTrem in #1723
- Move JS SDK to camel case by @NolanTrem in #1724
- Update JS route examples by @NolanTrem in #1725
- Fix messages passing in conversations by @NolanTrem in #1726
- Fix Crypto Providers in Factory by @NolanTrem in #1727
- Make verify password robust for existing deployments by @NolanTrem in #1729
- Allow for setting public routes by @NolanTrem in #1730
- Fix service level type errors by @NolanTrem in #1732
- Improved CLI by @NolanTrem in #1708
- Fix lock by @NolanTrem in #1734
- Feature/add api key support by @emrgnt-cmplxty in #1735
- up by @emrgnt-cmplxty in #1736
- Feature/change default url by @emrgnt-cmplxty in #1738
- Add llms.txt to support modern AI-assisted coding workflows by @yigitkonur in #1731
- Run pre-commit by @NolanTrem in #1741
- Improved typing, Remove old methods by @NolanTrem in #1743
- Remove V2 SDK by @NolanTrem in #1744
- Export Functionality by @NolanTrem in #1740
- Add typing to StoreType by @NolanTrem in #1745
- Further cleanup, remove old deduplication logic by @NolanTrem in #1746
- Increase Hatchet step timeouts by @NolanTrem in #1750
- Add cleanup to documents in tests by @NolanTrem in #1751
- More test fixes by @NolanTrem in #1752
- Fix filter logic bugs by @NolanTrem in #1753
- Revert graph filters by @NolanTrem in #1754
- Add migration script for user limits overrides by @NolanTrem in #1755
- Update CLI auth error message, move backoff down to 3 retries by @NolanTrem in #1759
- Fix document download for JS client by @NolanTrem in #1761
- save token counts by @emrgnt-cmplxty in #1762
- Feature/configurable api base by @emrgnt-cmplxty in #1760
- add user limit tracking by @emrgnt-cmplxty in #1763
- Fix CSV ordering, run pre-commit by @NolanTrem in #1764
- RFC 5987 Encoding on content-disposition headers by @NolanTrem in #1765
- Reset password and verification email to public routes by @NolanTrem in #1766
- Resend Verification Email HS by @NolanTrem in #1767
- Fix JS test—expect to throw 400 by @NolanTrem in #1768
- Clean up bugs around user deletion by @NolanTrem in #1769
- Remove users.register in favor of users.create by @NolanTrem in #1770
- Fix deletion of documents with no chunks by @NolanTrem in #1771
- Add R2R_SECRET_KEY and missing import by @NolanTrem in #1772
- commit by @emrgnt-cmplxty in #1773
- up by @emrgnt-cmplxty in #1774
- change default bmp by @emrgnt-cmplxty in #1775
- Remove dependency on pyproject.toml in site package by @NolanTrem in #1777
- Fix site package installation location by @NolanTrem in #1779
- Fix Dockerfile config location by @NolanTrem in #1780
- Only log POST and DELETE requests in the request_log table by @NolanTrem in #1781
- Feature/centralized limit calc and chunk limits by @emrgnt-cmplxty in #1782
- Feature/fix password reset js sdk by @emrgnt-cmplxty in #1783
- Move from user_id to owner_id for contextual enrichment by @NolanTrem in #1784
- fix ingestion by @emrgnt-cmplxty in #1785
- Update Readme by @NolanTrem in #1786
- up by @emrgnt-cmplxty in #1787
- bump poetry lock by @emrgnt-cmplxty in #1788
- Fix R2RExceptions, run pre-commit, remove password validation by @NolanTrem in #1789
- NaN Embedding Dimension Support by @NolanTrem in #1792
- up by @emrgnt-cmplxty in https://github.com/SciP...
v3.3.0
With the release of v3.3.0, R2R offers a completely RESTful API that covers everything you need for production RAG applications. The biggest change is our Git-like knowledge graph architecture, but we've also unified all the core objects you need to build real applications.
📚 Complete API Coverage:
1️⃣ Content & Knowledge
• Documents
: Upload files, manage content, and track extraction status
• Chunks
: Access and search vectorized text segments
• Graphs
: Git-like knowledge graphs with:
↳ Entities & Relationships
↳ Automatic community detection
↳ Independent graphs per collection
2️⃣ Infrastructure
• Indices
: Manage vector indices for search optimization
• Collections
: Organize documents and share access
• Users
: Built-in auth and permission management
• Conversations
: Track chat history and manage branches
3️⃣ Retrieval & Generation
• RAG
: Configurable retrieval pipeline with hybrid search
• Agents
: Conversational interfaces with knowledge graph integration
• Search
: Vector, keyword, and knowledge graph search
💻 Quick Example:
from r2r import R2RClient
client = R2RClient("http://localhost:7272")
# Document level extraction
client.documents.extract(document_id)
# Collection level graph management
client.graphs.pull(collection_id)
# Advanced RAG with everything enabled
response = client.retrieval.rag(
"Your question here",
search_settings={
"use_hybrid_search": True,
"graph_settings": {"enabled": True}
}
)
All these components work together seamlessly - just configure what you need and R2R handles the rest. Perfect for teams building serious RAG applications.
🔗 Check the API: https://r2r-docs.sciphi.ai/api-and-sdks/introduction
We'd love feedback from folks building in production!
R2R V3.2.30
Among a number of bug fixes, scaling, and performance improvements, there are a few notable features and considerations.
Migrations
With this release, we introduce a number of changes that require migrations. To run migrations, you can update to the latest version of R2R with r2r update
, upon serving R2R (e.g. r2r serve --docker
) the schema will be checked, and you will be prompted to upgrade your database with r2r db upgrade.
Advanced GraphRAG
We're rolling out prompt tuning and contextual embeddings, which both offer significant improvements.
R2R V3.2.0
Key Features and Improvements:
- Introduced light and full installation modes to facilitate faster setup / prototyping
- Removed Neo4j dependency - GraphRAG is now done entirely in Postgres, we will be writing a blog post around our motivations for this change.
- Commitment to stable releases and migration - R2R is moving towards serious use cases and is committed to providing working migration scripts with each major change following 3.2.0. This will be the last painful migration.
Optimizations:
- Improved knowledge graph configuration and construction process
- Added new prompt endpoints and management features
- Renamed groups to collections for improved clarity
- Integrated Supabase authentication
- Simplified hybrid search functionality
- Improved error messaging and handling
- Enhanced Docker configuration and build process
Documentation:
- Updated and fixed documentation, including broken links in Mintlify
- Improved configuration documentation for various components
Bug Fixes:
- Resolved issues with Docker commands and configurations
- Fixed parsing config docs
- Addressed problems with app settings and prompt management
- Corrected various minor bugs and typos
Developer Experience:
- Updated dependencies and package versions
- Improved typing and pagination
- Enhanced JS SDK with auto-refresh capability
Full Changelog: V3.1.0...v3.2.0
R2R V3.1.0
New Features
Orchestration with Hatchet
Default ingestion provider set to Unstructured
Improved knowledge graph construction process
Bug Fixes
Minor bug fixes around config logic and other.
Full Changelog: v0.3.0...V3.1.0
R2R V3
We are very excited to introduce R2R V3. We have been working very intensely as a team over this past month to comprehensively address all the feedback we received after recent explosive growth in R2R usage.
In addition to modifying 420 files and tens of thousands of LOC in the core repository, we have refactored the documentation here - https://r2r-docs.sciphi.ai/introduction.
NOTE - This release has many breaking changes w.r.t to R2R v2 and so we are working on a bespoke migration script to help those already in production.
Highlights
- We've added full GraphRAG support as per the Microsoft GraphRAG paper. This implementation is built alongside our integration with Neo4j inside R2R so that you can build a non-ephemeral user-facing system. The system supports dynamic tuning of a number of query parameters so that you can optimize it for your given application, you can read more here!
- Added full group permissions over vector search, meaning you can create unique dynamic groupings of documents which are permissioned at the user level. Support is included for granular actions like
create_group
,update_group
,add_user_to_group
,add_document_to_group
,add_user_to_group
, and more. Get started with the cookbook here. - We've doubled down on hybrid search by improving the full-text search component and its integration with vector search. The new system employs advanced techniques including text stemming, synonym expansion, phrase matching, and partial matching, all combined with a sophisticated ranking algorithm. Additionally, we've implemented runtime configurability through the VectorSearchSettings object. You can read more here.
- We've implemented a powerful RAG Agent that enables developers to add custom tools and behaviors tailored to specific use cases. This allows R2R developers to trivially go from RAG to Agentic RAG, allowing 1-click construction of full chat intelligence. You can read more here.
- Bug fixes and new focus on production R2R has matured significantly over the last quarter and has now answered over 1 million questions in production. As the system matures we are focusing more on supporting developers in production and carrying out our active development in a way that is minimally disruptive. This new release polishes a number of features that were rough / experimental in V2, while removing some features that were not seeing enough use, such as continuous evaluation.
- Slim CLI and Python SDK to reduce bloat required to launch / interact with R2R through docker.
What's Changed
- Feature/merge graphrag group mgmt by @emrgnt-cmplxty in #876
- Clean up API by @NolanTrem in #878
- Feature/merge dev owen changes by @emrgnt-cmplxty in #880
- Shreyas/graphrag test by @shreyaspimpalgaonkar in #881
- Feature/fix embedding pipe by @emrgnt-cmplxty in #882
- rm kg cruft by @emrgnt-cmplxty in #884
- tweak 2 by @emrgnt-cmplxty in #885
- Feature/fix retrieval endpoint cruft by @emrgnt-cmplxty in #887
- Python SDK by @NolanTrem in #886
- Separate out SDK, add js and go sdk to monorepo by @NolanTrem in #888
- Feature/merge w nolan by @emrgnt-cmplxty in #894
- fix rag stream by @emrgnt-cmplxty in #895
- add py r2r by @emrgnt-cmplxty in #896
- Clean up error handling by @NolanTrem in #897
- fix agent by @emrgnt-cmplxty in #898
- define
RAGAgentResponse
by @emrgnt-cmplxty in #899 - Shreyas/unstructured by @shreyaspimpalgaonkar in #900
- Feature/cleanup client obj logic by @emrgnt-cmplxty in #901
- Shreyas/tests by @shreyaspimpalgaonkar in #889
- Refactor CLI by @NolanTrem in #903
- Rm files readded by git by @NolanTrem in #904
- Remove Execution Wrapper by @NolanTrem in #905
- Feature/fix auth revive tests rebased by @emrgnt-cmplxty in #906
- fixup toml by @emrgnt-cmplxty in #908
- Feature/fix ingestion update by @emrgnt-cmplxty in #909
- Fix CLI Tests by @NolanTrem in #912
- Shreyas/kg runtime cfg by @shreyaspimpalgaonkar in #913
- minor fix: rename kgenrichmentresponse by @shreyaspimpalgaonkar in #914
- Feature/add nltk hybrid expansion rebased by @emrgnt-cmplxty in #917
- add script by @emrgnt-cmplxty in #918
- Fix bug in document chunks by @NolanTrem in #921
- Fix bug in update files by @NolanTrem in #923
- Shreyas/unstructured by @shreyaspimpalgaonkar in #922
- Feature/repair logging by @emrgnt-cmplxty in #925
- rm double logging by @emrgnt-cmplxty in #929
- Configs by @NolanTrem in #926
- Disable SSL when installing nltk wordnet by @NolanTrem in #930
- Fix Analytics by @NolanTrem in #931
- Update OpenAI sdk calls by @NolanTrem in #933
- Feature/revive advanced rag by @emrgnt-cmplxty in #932
- sync model by @emrgnt-cmplxty in #935
- Feature/remove version from ingestion end pt by @emrgnt-cmplxty in #936
- Move docker by @NolanTrem in #938
- Fix js tests, completion scoring by @NolanTrem in #939
- Shreyas/unstructured docker image by @shreyaspimpalgaonkar in #940
- Update JS by @NolanTrem in #941
- Sync JS Models by @NolanTrem in #942
- Feature/complete group logic by @emrgnt-cmplxty in #945
- Fix Dockerbuild, Symlink Readme by @NolanTrem in #944
- Shreyas/KG Search Result model by @shreyaspimpalgaonkar in #937
- refresh should not be gated by auth by @emrgnt-cmplxty in #946
- Sync Linting by @NolanTrem in #947
- Remove email in refresh by @NolanTrem in #948
- Feature/rm print cruft rebase by @emrgnt-cmplxty in #953
- Update Action by @NolanTrem in #954
- Update Github Actions by @NolanTrem in #956
- Shreyas/kgsearchresult model by @shreyaspimpalgaonkar in #957
- Login and refresh token bug by @NolanTrem in #959
- Point to Selfhosted runner by @NolanTrem in #960
- collection docs by @emrgnt-cmplxty in #955
- Feature/merge dev to main by @emrgnt-cmplxty in #962
- fix docker builds by @emrgnt-cmplxty in #963
- Running unstructured docker + code cleanups by @shreyaspimpalgaonkar in #964
- Small bugfixes on prompts, return types by @NolanTrem in #965
- Feature/fix dev tests by @emrgnt-cmplxty in #966
- Feature/merge dev and main by @emrgnt-cmplxty in #967
New Contributors
- @tkellogg made their first contribution in #883
- @mmtmr made their first contribution in #893
- @aphedges made their first contribution in #919
- @manuelciosici made their first contribution in #961
Full Changelog: v0.2.85...v3.0.0*
v0.2.85
A few important bug fixes in 0.2.85!
What's Changed
- Fix parsing config in example config files by @hvoecking in #864
- Allow BASE_URL and TRAEFIK_DASHBOARD_PORT (added) to be passed in from environment vars by @smig23 in #862
- Add agent entry to set local ollama/llama3.1 model by @smig23 in #866
New Features
- Environment variable support for BASE_URL and TRAEFIK_DASHBOARD_PORT
Bug Fixes
- Fixed parsing config in example config files
- Added agent entry in config for local ollama/llama3.1 model
New Contributors
- @hvoecking made their first contribution in #864
We'd like to extend a warm welcome to our new contributor and thank all those who made this release possible!
Full Changelog
For a detailed list of all changes, please see: v2.0.84...v0.2.85
To update to this version, run r2r update
from your CLI. If you encounter any issues or have any questions, please don't hesitate to open an issue on Github!