R2R was designed to bridge the gap between local LLM experimentation and scalable, production-ready Retrieval-Augmented Generation (RAG). R2R provides a comprehensive and SOTA RAG system for developers, built around a RESTful API for ease of use.
For a more complete view of R2R, check out the full documentation.
.txt
, .pdf
, .json
to .png
, .mp3
, and more.[!NOTE] Windows users are advised to use Docker to run R2R.
Star R2R on GitHub by clicking "Star" in the upper right hand corner of the page to be instantly notified of new releases.
python -m r2r.examples.quickstart ingest --client-server-mode
# can be called with additional argument,
# e.g. `python -m r2r... --client-server-mode /path/to/your_file`
{'results': {'processed_documents': ["File '.../aristotle.txt' processed successfully."], 'skipped_documents': []}}
python -m r2r.examples.quickstart search --query="who was aristotle?" --client-server-mode
{'results': {'vector_search_results': [
{
'id': '7ed3a01c-88dc-5a58-a68b-6e5d9f292df2',
'score': 0.780314067545999,
'metadata': {
'text': 'Aristotle[A] (Greek: Ἀριστοτέλης Aristotélēs, pronounced [aristotélɛːs]; 384–322 BC) was an Ancient Greek philosopher and polymath. His writings cover a broad range of subjects spanning the natural sciences, philosophy, linguistics, economics, politics, psychology, and the arts. As the founder of the Peripatetic school of philosophy in the Lyceum in Athens, he began the wider Aristotelian tradition that followed, which set the groundwork for the development of modern science.',
'title': 'aristotle.txt',
'version': 'v0',
'chunk_order': 0,
'document_id': 'c9bdbac7-0ea3-5c9e-b590-018bd09b127b',
'extraction_id': '472d6921-b4cd-5514-bf62-90b05c9102cb',
...
python -m r2r.examples.quickstart rag --query="who was aristotle?" --client-server-mode
Search Results:
{'vector_search_results': [
{'id': '7ed3a01c-88dc-5a58-a68b-6e5d9f292df2',
'score': 0.7802911996841491,
'metadata': {'text': 'Aristotle[A] (Greek: Ἀριστοτέλης Aristotélēs, pronounced [aristotélɛːs]; 384–322 BC) was an Ancient Greek philosopher and polymath. His writings cover a broad range of subjects spanning the natural sciences, philosophy, linguistics, economics, politics, psychology, and the arts. As the founder of the Peripatetic schoo
...
Completion:
{'results': [
{
'id': 'chatcmpl-9eXL6sKWlUkP3f6QBnXvEiKkWKBK4',
'choices': [
{
'finish_reason': 'stop',
'index': 0,
'logprobs': None,
'message': {
'content': "Aristotle (384–322 BC) was an Ancient Greek philosopher and polymath whose writings covered a broad range of subjects including the natural sciences,
...
python -m r2r.examples.quickstart rag --query="who was aristotle?" --client-server-mode --stream
<search>"{\"id\":\"004ae2e3-c042-50f2-8c03-d4c282651fba\",\"score\":0.7803140675 ...</search>
<completion>Aristotle was an Ancient Greek philosopher and polymath who lived from 384 to 322 BC [1]. He was born in Stagira, Chalcidi....</completion>
Building with R2R is easy - see the hello_r2r
example below:
from r2r import Document, GenerationConfig, R2R
app = R2R() # You may pass a custom configuration to `R2R`
app.ingest_documents(
[
Document(
type="txt",
data="John is a person that works at Google.",
metadata={},
)
]
)
rag_results = app.rag(
"Who is john", GenerationConfig(model="gpt-3.5-turbo", temperature=0.0)
)
print(f"Search Results:\n{rag_results.search_results}")
print(f"Completion:\n{rag_results.completion}")
# RAG Results:
# Search Results:
# AggregateSearchResult(vector_search_results=[VectorSearchResult(id=2d71e689-0a0e-5491-a50b-4ecb9494c832, score=0.6848798582029441, metadata={'text': 'John is a person that works at Google.', 'version': 'v0', 'chunk_order': 0, 'document_id': 'ed76b6ee-dd80-5172-9263-919d493b439a', 'extraction_id': '1ba494d7-cb2f-5f0e-9f64-76c31da11381', 'associatedQuery': 'Who is john'})], kg_search_results=None)
# Completion:
# ChatCompletion(id='chatcmpl-9g0HnjGjyWDLADe7E2EvLWa35cMkB', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='John is a person that works at Google [1].', role='assistant', function_call=None, tool_calls=None))], created=1719797903, model='gpt-3.5-turbo-0125', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=11, prompt_tokens=145, total_tokens=156))
Interact with R2R using our open-source React+Next.js dashboard. Check out the Dashboard Cookbook to get started!
Explore our R2R Docs for tutorials and cookbooks on various R2R features and integrations, including:
R2R Quickstart
with client-server interactions.We welcome contributions of all sizes! Here's how you can help: