Code Monkey home page Code Monkey logo

super-rag's Introduction

Super-Rag

Super-performant RAG pipeline for AI apps.


FeaturesInstallationHow to useCloud API

✅ Key features

  • Supports multiple document formats and vector databases.
  • Provides a production ready REST API.
  • Customizable splitting/chunking.
  • Includes options for encoding data using different encoding models both propriatory and open source.
  • Built in code interpreter mode for computational question & answer scenarios.
  • Allows session management through unique IDs for caching purposes.

☁️ Cloud API

Easiest way to get started is to use our Cloud API. This API is free to use (within reasonable limits).

📦 Installation

  1. Clone the repository

    git clone https://github.com/superagent-ai/super-rag 
    cd super-rag 
  2. Setup virtual environment

    # Using virtualenv 
    virtualenv env 
    source env/bin/activate 
    
    # Or using venv 
    python3 -m venv env 
    source env/bin/activate 
  3. Install requried packages

    poetry install
  4. Rename .env.example to .env and set your environment variables

  5. Run server

    uvicorn main:app --reload

🤖 Interpreter mode

Super-Rag has built in support for running computational Q&A using code interpreters powered by E2B.dev custom runtimes. You can signup to receive an API key to leverage they sandboxes in a cloud environment or setup your own by following these instructions.

🚀 How to use

Super-Rag comes with a built in REST API powered by FastApi.

Ingest documents

// POST: /api/v1/ingest

// Payload
{
    "files": [
        {
            "name": "My file", // Optional
            "url": "https://path-to-my-file.pdf",
            "metadata": { // Optional
                "key": "value"
            }
        }
    ],
    "document_processor": { // Optional
        "encoder": {
            "dimensions": 384,
            "model_name": "embed-multilingual-light-v3.0",
            "provider": "cohere"
        },
        "unstructured": {
            "hi_res_model_name": "detectron2_onnx",
            "partition_strategy": "auto",
            "process_tables": false
        },
        "splitter": {
            "max_tokens": 400,
            "min_tokens": 30,
            "name": "semantic",
            "prefix_summary": true,
            "prefix_title": true,
            "rolling_window_size": 1
        }
    },
    "vector_database": {
        "type": "qdrant",
        "config": {
            "api_key": "YOUR API KEY",
            "host": "THE QDRANT HOST"
        }
    },
    "index_name": "my_index",
    "webhook_url": "https://my-webhook-url"
}

Query documents

// POST: /api/v1/query

// Payload
{
    "input": "What is ReAct",
    "vector_database": {
            "type": "qdrant",
            "config": {
            "api_key": "YOUR API KEY",
            "host": "THE QDRANT HOST"
        }
        },
    "index_name": "YOUR INDEX",
    "interpreter_mode": true,
    "encoder": {
        "provider": "cohere",
        "name": "embed-multilingual-light-v3.0",
        "dimensions": 384
    },
    "filter": { // Optional
        // Each provider has its own filter schema,
        // for Qdrant it looks like the following:
        "must": [
            {
                "key": "key",
                "match": {
                    "value": "value"
                }
            }
        ]
    },
    "exclude_fields": ["metadata"], // Exclude specific fields
    "interpreter_mode": False, // Set to True if you wish to run computation Q&A with a code interpreter
    "session_id": "my_session_id" // keeps micro-vm sessions and enables caching 
}

Delete document

// POST: /api/v1/delete

// Payload
{
    "file_url": "A file url to delete",
    "vector_database": {
        "type": "qdrant",
        "config": {
            "api_key": "YOUR API KEY",
            "host": "THE QDRANT HOST"
        }
    },
    "index_name": "my_index",
}

🧠 Supportd encoders

  • OpenAi
  • Cohere
  • HuggingFace
  • FastEmbed
  • Mistral (coming soon)
  • Anthropic (coming soon)

🗃 Supported vector databases

  • Pinecone
  • Qdrant
  • Weaviate
  • Astra
  • PGVector
  • Chroma (coming soon)

super-rag's People

Contributors

carson-evans avatar elisalimli avatar homanp avatar itsharshag avatar simjak avatar skrawcz avatar valentatomas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

super-rag's Issues

Add caching

Describe the issue

At some point we should probably cache responses for a faster experience.

Add webhook option

Describe the issue

The user should be able to pass in a webhook url to the query API.

Invalid request: list of documents must not contain only empty strings or only whitespace.

Describe the issue

Some queries return the following error from the embedding service:


2024-02-23T04:09:10.309-08:00  File "/service/router.py", line 77, in queryCopy | File "/service/router.py", line 77, in query
-- | --
  | 2024-02-23T04:09:10.309-08:00 | return await get_documents(vector_service=vector_service, payload=payload)
  | 2024-02-23T04:09:10.309-08:00 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  | 2024-02-23T04:09:10.309-08:00 | File "/service/router.py", line 43, in get_documents
  | 2024-02-23T04:09:10.309-08:00 | reranked_chunks = await vector_service.rerank(query=payload.input, documents=chunks)
  | 2024-02-23T04:09:10.309-08:00 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  | 2024-02-23T04:09:10.309-08:00 | File "/vectordbs/base.py", line 76, in rerank
  | 2024-02-23T04:09:10.309-08:00 | raise Exception(f"Error while reranking: {e}")
  | 2024-02-23T04:09:10.309-08:00 | Exception: Error while reranking: invalid request: list of documents must not contain only empty strings or only whitespace

Add support for ingesting google drive.

Describe the issue

A user should be able to send in credentials to their google drive which in return should ingest the whole drive into a vector space and db.

Handling invalid files

Describe the issue

We should return an error if the content of the file is malformed, such as CSV files have missing columns.

Scalable data ingestion architecture with microservices

Building the Docker image I noticed it was sized at 7GB in size and that it took 5 minutes for the build to complete.

REPOSITORY TAG IMAGE ID CREATED SIZE
super-rag-api latest 1c9aa42e2450 2 days ago 7.09GB

It turns out PyTorch is responsible for pulling its massive nvidia driver libraries packaged in torch[gpu], while its sibling torch[cpu] bottoms down at 56mb.

pip list sorted by size
$ pip list   | tail -n +3   | awk '{print $1}'   | xargs pip show   | grep -E 'Location:|Name:'   | cut -d ' ' -f 2   | paste -d ' ' - -   | awk '{print $2 "/" tolower($1)}'   | xargs du -sh 2> /dev/null   | sort -hr

1.5G	/app/.venv/lib/python3.11/site-packages/torch
419M	/app/.venv/lib/python3.11/site-packages/triton
72M	/app/.venv/lib/python3.11/site-packages/cmake
62M	/app/.venv/lib/python3.11/site-packages/onnx
46M	/app/.venv/lib/python3.11/site-packages/pandas
40M	/app/.venv/lib/python3.11/site-packages/transformers
33M	/app/.venv/lib/python3.11/site-packages/matplotlib
27M	/app/.venv/lib/python3.11/site-packages/sympy
23M	/app/.venv/lib/python3.11/site-packages/layoutparser
21M	/app/.venv/lib/python3.11/site-packages/lxml
17M	/app/.venv/lib/python3.11/site-packages/onnxruntime
15M	/app/.venv/lib/python3.11/site-packages/pip
14M	/app/.venv/lib/python3.11/site-packages/rapidfuzz
14M	/app/.venv/lib/python3.11/site-packages/cryptography
13M	/app/.venv/lib/python3.11/site-packages/sqlalchemy
13M	/app/.venv/lib/python3.11/site-packages/debugpy
12M	/app/.venv/lib/python3.11/site-packages/tokenizers
12M	/app/.venv/lib/python3.11/site-packages/fastavro
11M	/app/.venv/lib/python3.11/site-packages/torchvision
11M	/app/.venv/lib/python3.11/site-packages/jedi
7.6M	/app/.venv/lib/python3.11/site-packages/timm
7.1M	/app/.venv/lib/python3.11/site-packages/networkx
6.5M	/app/.venv/lib/python3.11/site-packages/unstructured
6.5M	/app/.venv/lib/python3.11/site-packages/nltk
6.4M	/app/.venv/lib/python3.11/site-packages/tiktoken
5.5M	/app/.venv/lib/python3.11/site-packages/pydantic_core
5.3M	/app/.venv/lib/python3.11/site-packages/kiwisolver
4.9M	/app/.venv/lib/python3.11/site-packages/safetensors
4.8M	/app/.venv/lib/python3.11/site-packages/pygments
4.8M	/app/.venv/lib/python3.11/site-packages/aiohttp
3.1M	/app/.venv/lib/python3.11/site-packages/emoji
2.9M	/app/.venv/lib/python3.11/site-packages/regex
2.7M	/app/.venv/lib/python3.11/site-packages/tzdata
2.7M	/app/.venv/lib/python3.11/site-packages/pytz
2.7M	/app/.venv/lib/python3.11/site-packages/pikepdf
2.6M	/app/.venv/lib/python3.11/site-packages/setuptools
2.4M	/app/.venv/lib/python3.11/site-packages/langdetect
2.2M	/app/.venv/lib/python3.11/site-packages/greenlet
2.1M	/app/.venv/lib/python3.11/site-packages/mpmath
1.8M	/app/.venv/lib/python3.11/site-packages/tornado
1.7M	/app/.venv/lib/python3.11/site-packages/pydantic
1.6M	/app/.venv/lib/python3.11/site-packages/pycocotools
1.5M	/app/.venv/lib/python3.11/site-packages/openai
1.4M	/app/.venv/lib/python3.11/site-packages/openpyxl
1.3M	/app/.venv/lib/python3.11/site-packages/pypdf
1.3M	/app/.venv/lib/python3.11/site-packages/joblib
1.3M	/app/.venv/lib/python3.11/site-packages/authlib
1.2M	/app/.venv/lib/python3.11/site-packages/chardet
1.1M	/app/.venv/lib/python3.11/site-packages/yarl
1.1M	/app/.venv/lib/python3.11/site-packages/psutil
984K	/app/.venv/lib/python3.11/site-packages/contourpy
916K	/app/.venv/lib/python3.11/site-packages/frozenlist
812K	/app/.venv/lib/python3.11/site-packages/xlsxwriter
760K	/app/.venv/lib/python3.11/site-packages/fastapi
724K	/app/.venv/lib/python3.11/site-packages/fsspec
660K	/app/.venv/lib/python3.11/site-packages/black
640K	/app/.venv/lib/python3.11/site-packages/pycparser
528K	/app/.venv/lib/python3.11/site-packages/jinja2
488K	/app/.venv/lib/python3.11/site-packages/wcwidth
488K	/app/.venv/lib/python3.11/site-packages/effdet
464K	/app/.venv/lib/python3.11/site-packages/urllib3
452K	/app/.venv/lib/python3.11/site-packages/multidict
452K	/app/.venv/lib/python3.11/site-packages/ipykernel
436K	/app/.venv/lib/python3.11/site-packages/jupyter_client
412K	/app/.venv/lib/python3.11/site-packages/pyparsing
412K	/app/.venv/lib/python3.11/site-packages/cffi
412K	/app/.venv/lib/python3.11/site-packages/anyio
396K	/app/.venv/lib/python3.11/site-packages/olefile
388K	/app/.venv/lib/python3.11/site-packages/omegaconf
384K	/app/.venv/lib/python3.11/site-packages/xlrd
376K	/app/.venv/lib/python3.11/site-packages/parso
372K	/app/.venv/lib/python3.11/site-packages/markdown
368K	/app/.venv/lib/python3.11/site-packages/traitlets
364K	/app/.venv/lib/python3.11/site-packages/click
344K	/app/.venv/lib/python3.11/site-packages/httpx
336K	/app/.venv/lib/python3.11/site-packages/pyflakes
328K	/app/.venv/lib/python3.11/site-packages/starlette
328K	/app/.venv/lib/python3.11/site-packages/httpcore
312K	/app/.venv/lib/python3.11/site-packages/humanfriendly
308K	/app/.venv/lib/python3.11/site-packages/certifi
292K	/app/.venv/lib/python3.11/site-packages/uvicorn
288K	/app/.venv/lib/python3.11/site-packages/idna
280K	/app/.venv/lib/python3.11/site-packages/wrapt
252K	/app/.venv/lib/python3.11/site-packages/flake8
252K	/app/.venv/lib/python3.11/site-packages/cassio
248K	/app/.venv/lib/python3.11/site-packages/tqdm
248K	/app/.venv/lib/python3.11/site-packages/pypdfium2
248K	/app/.venv/lib/python3.11/site-packages/h11
244K	/app/.venv/lib/python3.11/site-packages/h2
244K	/app/.venv/lib/python3.11/site-packages/cohere
232K	/app/.venv/lib/python3.11/site-packages/hpack
224K	/app/.venv/lib/python3.11/site-packages/pipdeptree
224K	/app/.venv/lib/python3.11/site-packages/pexpect
220K	/app/.venv/lib/python3.11/site-packages/requests
204K	/app/.venv/lib/python3.11/site-packages/marshmallow
184K	/app/.venv/lib/python3.11/site-packages/pdfplumber
184K	/app/.venv/lib/python3.11/site-packages/packaging
156K	/app/.venv/lib/python3.11/site-packages/astrapy
152K	/app/.venv/lib/python3.11/site-packages/coloredlogs
148K	/app/.venv/lib/python3.11/site-packages/soupsieve
148K	/app/.venv/lib/python3.11/site-packages/iopath
116K	/app/.venv/lib/python3.11/site-packages/vulture
112K	/app/.venv/lib/python3.11/site-packages/flatbuffers
108K	/app/.venv/lib/python3.11/site-packages/validators
108K	/app/.venv/lib/python3.11/site-packages/jupyter_core
108K	/app/.venv/lib/python3.11/site-packages/filetype
104K	/app/.venv/lib/python3.11/site-packages/tabulate
96K	/app/.venv/lib/python3.11/site-packages/pillow_heif
96K	/app/.venv/lib/python3.11/site-packages/pathspec
96K	/app/.venv/lib/python3.11/site-packages/dirtyjson
88K	/app/.venv/lib/python3.11/site-packages/platformdirs
88K	/app/.venv/lib/python3.11/site-packages/markupsafe
88K	/app/.venv/lib/python3.11/site-packages/executing
84K	/app/.venv/lib/python3.11/site-packages/asttokens
76K	/app/.venv/lib/python3.11/site-packages/tenacity
68K	/app/.venv/lib/python3.11/site-packages/toml
68K	/app/.venv/lib/python3.11/site-packages/geomet
64K	/app/.venv/lib/python3.11/site-packages/distro
60K	/app/.venv/lib/python3.11/site-packages/pypandoc
60K	/app/.venv/lib/python3.11/site-packages/portalocker
56K	/app/.venv/lib/python3.11/site-packages/backoff
48K	/app/.venv/lib/python3.11/site-packages/ptyprocess
48K	/app/.venv/lib/python3.11/site-packages/pdf2image
48K	/app/.venv/lib/python3.11/site-packages/hyperframe
44K	/app/.venv/lib/python3.11/site-packages/filelock
32K	/app/.venv/lib/python3.11/site-packages/deprecated
32K	/app/.venv/lib/python3.11/site-packages/attrs
24K	/app/.venv/lib/python3.11/site-packages/zipp
24K	/app/.venv/lib/python3.11/site-packages/termcolor
24K	/app/.venv/lib/python3.11/site-packages/sniffio
24K	/app/.venv/lib/python3.11/site-packages/pytesseract
24K	/app/.venv/lib/python3.11/site-packages/cycler
24K	/app/.venv/lib/python3.11/site-packages/colorlog
20K	/app/.venv/lib/python3.11/site-packages/comm
12K	/app/.venv/lib/python3.11/site-packages/docx2txt
12K	/app/.venv/lib/python3.11/site-packages/aiosignal
8.0K	/app/.venv/lib/python3.11/site-packages/ruff

New to poetry, I've been through several community discussions covering the same kind of issue:

While the solution could've been as simple as adding extras = [ "cpu" ] or setting the /cpu branch as torch wheels source URL, that wasn't possible.

PyTorch does not implement a specific PEP-standard protocol consumers (such as Poetry) look for when enumerating the package wheels' index.

The last resort is bundling a list of .whl URLs passed to PyTorch's dependency source by intersecting:

Architecture Python Version Platform
arm64 3.9 darwin
x86 3.10 windows
aarch64 3.11 linux

Sticking to Python range 3.9 <> 3.12 as it was initially defined in pyconfig.toml.

The list got quite long, the build time took longer (3x compared to the original).

The XY problem?

Super-rag's vision is a highly available and scalable API backed by workers, thus looking at a microservice-oriented architecture.

Torch is a heavy-lifting CPU/GPU-bound toolkit meant to be decoupled from the IO-bound API. It is a use-case, and it is probable that as the project grows, other "strategies" will be implemented, each with their own use cases.

It is essential for workers' images to be minimal. The image size directly impacts launch-time [availability]: you want a worker's image to be pulled, loaded in memory and start as quickly as possible.

Therefore, analyzing and understanding the use cases for dependencies helps identifying common libraries or services defined as reusable granular image layers.

As for now, my proposed solution is to have individual images (or layers) that only ships with what is strictly necessary for a given triplet (platform, architecture, python version).

Feel free to brainstorm with me on this subject; ideas are always welcome!

Make it possible to use as a library.

Describe the issue

Make it possible to use Super-Rag as a Python library. Preferable syntax would be:

from super_rag import SuperRag

client = SuperRag(config)

# Create index
client.ingest(payload)

# Query index
client.query(payload)

# Delete embeddings
client.delete(payload)

Offload ingestion to background tasks

Describe the issue

We need to offload the ingestion to a task system and report back on status via webhook. Preferably using celery/redis or prefect.

Add support for ingesting Confluence.

Describe the issue

A user should be able to ingest documents from confluence by passing the following payload to the /ingest API endpoint:

{
  "index_name": "string",
  "vector_database": {
    "type": "qdrant",
    "config": {}
  },
  "encoder": {
      "dimensions": 384,
      "model_name": "embed-multilingual-light-v3.0",
      "provider": "cohere"
    },
  "confluence": {
    "api_token": <api_token>,
    "user_email": < user_email >,
    "url":  <url>,
  },
  "webhook_url": "string"
}

Ingestion

After load process has finished we need to loop over the downloaded documents and use the embedding service to chunk, split, generate and save embeddings to the embedding db. The Embedding Service and walkthroughs should be sufficient for this.

Relevant files

Route ingestion on request: https://github.com/superagent-ai/super-rag/blob/main/api/ingest.py#L23
Create a new handler: https://github.com/superagent-ai/super-rag/blob/main/service/ingest.py

Typo

Typo: “Easiset way”

Add support for ingesting Sharepoint.

Describe the issue

A user should be able to ingest their Sharepoint. Probably we would need to read the repo of files/folders and then run unstructured on that.

Expose ingest and query parameters via api with default values

Expose configurable parameters:
Ingest:

  • - chunk_size
  • - chunk_strategy
  • - encoder (already done)

Query:

  • - query transformation options (query fusion, step-back, query rewrite)
  • - top_k
  • - top_n and relevancy score

Maybe some more, depending on testing/evaluation methods

Add authentication

Description

Add authentication to the API. Only users with a vaild Superagent Pro account should be able to utilize the API.

Add possibility to ingest metadata

Describe the issue

A user should be able to pass metadata with their files when they ingest.

[{
  url: "SOME_FILE_URL",
  metadata: {
    key: "VALUE"
  }
}]

Interpreter mode sometimes times out and throws errors

Describe the issue

Somestimes interpreter mode doesn't work.

SAML:

workflows:
  - superagent:
      llm: gpt-4-turbo-preview
      name: Browser assistant
      intro: 👋 Hi there! How can I help search for answers on the internet.
      tools:
        - browser:
            name: browser
            use_for: searching the internet
      prompt: Use the browser to answer any questions
      superrag:
        - index:
            name: Titanic data set
            urls:
              - https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv
            use_for: Useful for answering questions about the titanic data set
            interpreter_mode: true
            database_provider: qdrant
image

Logs:

is_structured:  True interpreter_mode:  True
2024-03-08 23:36:53,402 INFO e2b.sandbox.main: Creating sandbox super-rag
2024-03-08 23:36:53,402 INFO e2b.sandbox.sandbox_connection: Sandbox for template super-rag initialized
2024-03-08 23:36:53,402 INFO e2b.sandbox.main: Opening sandbox super-rag
2024-03-08 23:36:54,347 INFO e2b.sandbox.sandbox_connection: Sandbox 1db0ceubobh88yem7h90 created (id:ibr95ulhcqhe1jao87rb1-3685e692)
2024-03-08 23:36:54,347 INFO e2b.sandbox.sandbox_connection: Started refreshing sandbox 1db0ceubobh88yem7h90 (id: ibr95ulhcqhe1jao87rb1-3685e692)
2024-03-08 23:36:54,348 INFO e2b.sandbox.sandbox_rpc: WebSocket waiting to start
2024-03-08 23:36:56,316 INFO e2b.sandbox.websocket_client: WebSocket connected to wss://49982-ibr95ulhcqhe1jao87rb1-3685e692.e2b.dev/ws
2024-03-08 23:36:56,319 INFO e2b.sandbox.sandbox_rpc: WebSocket started
2024-03-08 23:36:56,320 INFO e2b.sandbox.main: Sandbox super-rag opened
2024-03-08 23:36:56,321 INFO e2b.sandbox.process: Starting process: wget -O /code/2133580078998049921 https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv
2024-03-08 23:36:56,730 INFO e2b.sandbox.process: Started process (id: ZrF46O0mAsMB)
2024-03-08 23:36:56,868 INFO e2b.sandbox.process: Process ZrF46O0mAsMB exited with exit code 0
2024-03-08 23:36:56,868 INFO e2b.sandbox.process: Handling process exit (id: ZrF46O0mAsMB)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype
---  ------       --------------  -----
 0   PassengerId  891 non-null    int64
 1   Survived     891 non-null    int64
 2   Pclass       891 non-null    int64
 3   Name         891 non-null    object
 4   Sex          891 non-null    object
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64
 7   Parch        891 non-null    int64
 8   Ticket       891 non-null    object
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object
 11  Embarked     889 non-null    object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
generated code:  import pandas as pd

df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")

# Process: Filtering data for men and calculating the median age
median_age_men = df[df['Sex'] == 'male']['Age'].median()

# Output: Returning the answer as a string
answer = f"The median age among men was: {median_age_men}"
print(answer)
2024-03-08 23:37:00,180 INFO e2b.sandbox.process: Starting process: python /tmp/main-1709926619.984333.py
2024-03-08 23:37:00,637 INFO e2b.sandbox.process: Started process (id: JOul3yTqBykc)
2024-03-08 23:37:02,204 INFO e2b.sandbox.process: Process JOul3yTqBykc exited with exit code 0
2024-03-08 23:37:02,205 INFO e2b.sandbox.process: Handling process exit (id: JOul3yTqBykc)
process:  messages=[ProcessMessage(line='The median age among men was: 29.0', error=False, timestamp=1709926622252955234)] error=False exit_code=0
output:  The median age among men was: 29.0
2024-03-08 23:37:02,270 INFO e2b.sandbox.sandbox_connection: Closing sandbox 1db0ceubobh88yem7h90 (id: ibr95ulhcqhe1jao87rb1-3685e692)
2024-03-08 23:37:02,270 INFO e2b.sandbox.sandbox_connection: Sandbox closed
2024-03-08 23:37:02,270 INFO e2b.sandbox.websocket_client: WebSocket stopped
Reranking 5 documents: 100%|██████████████████| 5/5 [00:00<00:00, 132731.14it/s]
Processing reranked results : 100%|███████████| 5/5 [00:00<00:00, 185588.67it/s]
/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/pydantic/main.py:1024: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.6/migration/
  warnings.warn('The `dict` method is deprecated; use `model_dump` instead.', category=PydanticDeprecatedSince20)
INFO:     127.0.0.1:64620 - "POST /api/v1/query HTTP/1.1" 200 OK
2024-03-08 23:37:05,184 INFO e2b.sandbox.sandbox_connection: Stopped refreshing sandbox (id: ibr95ulhcqhe1jao87rb1-3685e692)
2024-03-08 23:37:18 INFO semantic_router.utils.logger local
is_structured:  True interpreter_mode:  True
2024-03-08 23:37:20,894 INFO e2b.sandbox.main: Creating sandbox super-rag
2024-03-08 23:37:20,895 INFO e2b.sandbox.sandbox_connection: Sandbox for template super-rag initialized
2024-03-08 23:37:20,895 INFO e2b.sandbox.main: Opening sandbox super-rag
2024-03-08 23:37:22,547 INFO e2b.sandbox.sandbox_connection: Sandbox 1db0ceubobh88yem7h90 created (id:ibj23gqyj86unlztnoe2m-3685e692)
2024-03-08 23:37:22,547 INFO e2b.sandbox.sandbox_connection: Started refreshing sandbox 1db0ceubobh88yem7h90 (id: ibj23gqyj86unlztnoe2m-3685e692)
2024-03-08 23:37:22,548 INFO e2b.sandbox.sandbox_rpc: WebSocket waiting to start
2024-03-08 23:37:23,024 INFO e2b.sandbox.websocket_client: WebSocket connected to wss://49982-ibj23gqyj86unlztnoe2m-3685e692.e2b.dev/ws
2024-03-08 23:37:23,071 INFO e2b.sandbox.sandbox_rpc: WebSocket started
2024-03-08 23:37:23,072 INFO e2b.sandbox.main: Sandbox super-rag opened
2024-03-08 23:37:23,072 INFO e2b.sandbox.process: Starting process: wget -O /code/2133580078998049921 https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv
2024-03-08 23:37:23,516 INFO e2b.sandbox.process: Started process (id: cFchoFfS2e1Z)
2024-03-08 23:37:23,647 INFO e2b.sandbox.process: Process cFchoFfS2e1Z exited with exit code 0
2024-03-08 23:37:23,647 INFO e2b.sandbox.process: Handling process exit (id: cFchoFfS2e1Z)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype
---  ------       --------------  -----
 0   PassengerId  891 non-null    int64
 1   Survived     891 non-null    int64
 2   Pclass       891 non-null    int64
 3   Name         891 non-null    object
 4   Sex          891 non-null    object
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64
 7   Parch        891 non-null    int64
 8   Ticket       891 non-null    object
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object
 11  Embarked     889 non-null    object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
generated code:  import pandas as pd

df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")

# Process: Manipulating data for analysis
oldest_passenger = df.loc[df['Age'].idxmax()]['Name']

# Output: Returning the answer as a string
answer = f"The oldest passenger was: {oldest_passenger}"
answer
2024-03-08 23:37:26,584 INFO e2b.sandbox.process: Starting process: python /tmp/main-1709926646.38554.py
2024-03-08 23:37:27,103 INFO e2b.sandbox.process: Started process (id: s7DToeoD3zmE)
2024-03-08 23:37:28,698 INFO e2b.sandbox.process: Process s7DToeoD3zmE exited with exit code 0
2024-03-08 23:37:28,698 INFO e2b.sandbox.process: Handling process exit (id: s7DToeoD3zmE)
process:  messages=[] error=False exit_code=0
output:  messages=[] error=False exit_code=0
2024-03-08 23:37:28,763 INFO e2b.sandbox.sandbox_connection: Closing sandbox 1db0ceubobh88yem7h90 (id: ibj23gqyj86unlztnoe2m-3685e692)
2024-03-08 23:37:28,763 INFO e2b.sandbox.sandbox_connection: Sandbox closed
INFO:     127.0.0.1:64679 - "POST /api/v1/query HTTP/1.1" 500 Internal Server Error
2024-03-08 23:37:28,763 INFO e2b.sandbox.websocket_client: WebSocket stopped
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/routing.py", line 778, in app
    await route.handle(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle
    await self.app(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/routing.py", line 79, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/starlette/routing.py", line 74, in app
    response = await func(request)
               ^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/fastapi/routing.py", line 299, in app
    raise e
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/fastapi/routing.py", line 294, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/api/query.py", line 11, in query
    chunks = await _query(payload=payload)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/service/router.py", line 96, in query
    return await get_documents(vector_service=vector_service, payload=payload)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/service/router.py", line 63, in get_documents
    BaseDocumentChunk(
  File "/Users/alisalimli/workspace/superagent-ai/super-rag/venv/lib/python3.11/site-packages/pydantic/main.py", line 171, in __init__
    self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for BaseDocumentChunk
content
  Input should be a valid string [type=string_type, input_value=ProcessOutput(messages=[]...rror=False, exit_code=0), input_type=ProcessOutput]
    For further information visit https://errors.pydantic.dev/2.6/v/string_type
2024-03-08 23:37:33,625 INFO e2b.sandbox.sandbox_connection: Stopped refreshing sandbox (id: ibj23gqyj86unlztnoe2m-3685e692)

Cleanup README

Describe the issue

Clean up README with more examples and updates on supported models/dbs etc.

Fix summarization issues.

Describe the issue

Summaries ar indexed as smaller chunks than expected. Make sure the correct chunking strategy is used.

Add `Dockerfile`

Describe the issue

Add Dockerfile for deployment on cloud services.

Computational Q&A

Describe the issue

Add computational Q&A capabilities to RAG pipeline. The pipeline should decide when computation/similarity search is necessary to run.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.