Skip to content

v0.2.0

Latest
Compare
Choose a tag to compare
@pmeier pmeier released this 16 Mar 20:55
· 19 commits to main since this release
c6bdb0f

Feature changes and enhancements

  • Ragna's 0.1.x releases were built on a task queue backend. This turned out to be a premature optimization that limited us in other features we wanted to implement. Thus, we removed it without impacting the API. This enabled us to add two new features:

  • Ragna gained support for Markdown (.md), Microsoft Word (.docx), and Microsoft Powerpoint (.pptx) documents.

  • Ragna now has an official docker image. Try it with

    $ docker run -p 31476:31476 -p 31477:31477 quay.io/quansight/ragna:0.2.0
    

    The web UI can be accessed under http://localhost:31477.

  • Instead of just returning the location of a source, e.g. page numbers in a PDF document but potentially nothing for other formats that don't have this kind of information, the REST API now also returns the full source content. This aligns it with the Python API. The source view in the web UI now also shows the source content.

Breaking Changes

  • As a result of the removal of the task queue, ragna worker is no longer needed and was removed. The same applies to the --start-worker option of ragna api and the queue_url configuration option (see below).

  • The return type of ragna.core.Assistant.answer changed from str to Iterator[str] / AsyncIterator[str]. To reflect that in the implementation, replace return with yield. To stream the response, yield multiple times.

  • The abstract property ragna.core.Assistant.max_input_size was removed. This information was never used anywhere. Note that you don't have to remove it from existing implementations. It will just stay unused by Ragna.

  • We introduced a couple of changes to the configuration file.

    • The top level local_cache_root option was renamed to local_root to align with the new ragna.local_root function.
    • The [core] section was dissolved and its options merged into the top level. The queue_url option was removed.
    • The authentication option was moved from the [api] section to the top level.
    • Both the [api] and [ui] section gained a hostname and port parameter that are used to bind the application. The url option, previously used for the same purpose, option was removed from the [ui] section. It was retained in the [api] section, but now only indicates the URL the REST API can be contacted on, e.g. by the web UI, and has no effect on how the REST API is bound.
    • The default value of database_url in the [api] section changed to use a persistent database by default. The "memory" option is no longer available. Use sqlite:// if you want to retain the non-persistent behavior.
    • The [api] section gained a new root_path option to help deploying Ragna behind a proxy. By default, the behavior does not change compared to before.

    Below you can find a comparison between two equivalent configuration files

    v0.1.3
    local_cache_root = "/home/user/.cache/ragna"
    
    [core]
    queue_url = "memory"
    document = "ragna.core.LocalDocument"
    source_storages = [
        "ragna.source_storages.Chroma",
        ...
    ]
    assistants = [
        "ragna.assistants.Claude",
        ...
    ]
    
    [api]
    url = "http://127.0.0.1:31476"
    origins = ["http://127.0.0.1:31477"]
    database_url = "memory"
    authentication = "ragna.core.RagnaDemoAuthentication"
    
    [ui]
    url = "http://127.0.0.1:31477"
    origins = ["http://127.0.0.1:31477"]
    v0.2.0
    local_root = "/home/user/.cache/ragna"
    authentication = "ragna.deploy.RagnaDemoAuthentication"
    document = "ragna.core.LocalDocument"
    source_storages = [
        "ragna.source_storages.Chroma",
        ...
    ]
    assistants = [
        "ragna.assistants.Claude",
        ...
    ]
    
    [api]
    hostname = "127.0.0.1"
    port = 31476
    root_path = ""
    url = "http://127.0.0.1:31476"
    origins = [
        "http://127.0.0.1:31477",
    ]
    database_url = "sqlite://"
    
    [ui]
    hostname = "127.0.0.1"
    port = 31477
    origins = [
        "http://127.0.0.1:31477",
    ]
  • The classes ragna.deploy.Authentication, ragna.deploy.RagnaDemoAuthentication, and ragna.deploy.Config moved from the ragna.core module to a new ragna.deploy module.

  • ragna.core.Component, which is the superclass for ragna.core.Assistant and ragna.core.SourceStorage, no longer takes a ragna.deploy.Config to instantiate. For example

    class MyAssistant(ragna.core.Assistant):
        def __init__(self, config):
            super().__init__(config)

    needs to change to

    class MyAssistant(ragna.core.Assistant):
        def __init__(self):
            super().__init__()

    You can use the new ragna.local_root function as replacement for config.local_root if needed.

  • The database scheme changed and is no longer compatible with the tables used in previous releases. The default database set by the configuration wizard is located at ~/.cache/ragna/ragna.db. Please delete it. It will be created anew the next time the REST API is started.

  • The /chat/{chat_id}/prepare and /chat/{chat_id}/answer endpoints of the REST API now no longer return the chat object, but only the message.

What's Changed

New Contributors