rkuo-danswer f531d071af
Feature/background deletion (#2337)
* first cut at redis

* some new helper functions for the db

* ignore kombu tables in alembic migrations (used by celery)

* multiline commands for readability, add vespa_metadata_sync queue to worker

* typo fix

* fix returning tuple fields

* add constants

* fix _get_access_for_document

* docstrings!

* fix double function declaration and typing

* fix type hinting

* add a global redis pool

* Add get_document function

* use task_logger in various celery tasks

* add celeryconfig.py to simplify configuration. Will be used in a subsequent commit

* Add celery redis helper. used in a subsequent PR

* kombu warning getting spammy since celery is not self managing its queue in Postgres any more

* add last_modified and last_synced to documents

* fix task naming convention

* use celeryconfig.py

* the big one. adds queues and tasks, updates functions to use the queues with priorities, etc

* change vespa index log line to debug

* mypy fixes

* update alembic migration

* fix fence ordering, rename to "monitor", fix fetch_versioned_implementation call

* mypy

* switch to monotonic time

* fix startup dependencies on redis

* rebase alembic migration

* kombu cleanup - fail silently

* mypy

* add redis_host environment override

* update REDIS_HOST env var in docker-compose.dev.yml

* update the rest of the docker files

* in flight

* harden indexing-status endpoint against db changes happening in the background.  Needs further improvement but OK for now.

* allow no task syncs to run because we create certain objects with no entries but initially marked as out of date

* add back writing to vespa on indexing

* actually working connector deletion

* update contributing guide

* backporting fixes from background_deletion

* renaming cache to cache_volume

* add redis password to various deployments

* try setting up pr testing for helm

* fix indent

* hopefully this release version actually exists

* fix command line option to --chart-dirs

* fetch-depth 0

* edit values.yaml

* try setting ct working directory

* bypass testing only on change for now

* move files and lint them

* update helm testing

* some issues suggest using --config works

* add vespa repo

* add postgresql repo

* increase timeout

* try amd64 runner

* fix redis password reference

* add comment to helm chart testing workflow

* rename helm testing workflow to disable it

* adding clarifying comments

* address code review

* missed a file

* remove commented warning ... just not needed

* fix imports

* refactor to use update_single

* mypy fixes

* add vespa test

* add db refresh to connector deletion

* code review fixes

* move monitor_usergroup_taskset to ee, improve logging

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2024-09-18 16:50:11 +00:00
2024-09-15 17:32:58 +00:00
2024-09-07 14:05:36 -07:00
2024-09-18 14:23:56 +00:00
2024-09-07 14:05:36 -07:00
2024-09-11 19:17:23 -07:00
2024-09-13 10:26:51 -07:00
2024-06-25 15:07:56 -07:00
2024-07-14 16:50:48 -07:00

Open Source Gen-AI Chat + Unified Search.

Documentation Slack Discord License

Danswer is the AI Assistant connected to your company's docs, apps, and people. Danswer provides a Chat interface and plugs into any LLM of your choice. Danswer can be deployed anywhere and for any scale - on a laptop, on-premise, or to cloud. Since you own the deployment, your user data and chats are fully in your own control. Danswer is MIT licensed and designed to be modular and easily extensible. The system also comes fully ready for production usage with user authentication, role management (admin/basic users), chat persistence, and a UI for configuring Personas (AI Assistants) and their Prompts.

Danswer also serves as a Unified Search across all common workplace tools such as Slack, Google Drive, Confluence, etc. By combining LLMs and team specific knowledge, Danswer becomes a subject matter expert for the team. Imagine ChatGPT if it had access to your team's unique knowledge! It enables questions such as "A customer wants feature X, is this already supported?" or "Where's the pull request for feature Y?"

Usage

Danswer Web App:

https://github.com/danswer-ai/danswer/assets/32520769/563be14c-9304-47b5-bf0a-9049c2b6f410

Or, plug Danswer into your existing Slack workflows (more integrations to come 😁):

https://github.com/danswer-ai/danswer/assets/25087905/3e19739b-d178-4371-9a38-011430bdec1b

For more details on the Admin UI to manage connectors and users, check out our Full Video Demo!

Deployment

Danswer can easily be run locally (even on a laptop) or deployed on a virtual machine with a single docker compose command. Checkout our docs to learn more.

We also have built-in support for deployment on Kubernetes. Files for that can be found here.

💃 Main Features

  • Chat UI with the ability to select documents to chat with.
  • Create custom AI Assistants with different prompts and backing knowledge sets.
  • Connect Danswer with LLM of your choice (self-host for a fully airgapped solution).
  • Document Search + AI Answers for natural language queries.
  • Connectors to all common workplace tools like Google Drive, Confluence, Slack, etc.
  • Slack integration to get answers and search results directly in Slack.

🚧 Roadmap

  • Chat/Prompt sharing with specific teammates and user groups.
  • Multi-Model model support, chat with images, video etc.
  • Choosing between LLMs and parameters during chat session.
  • Tool calling and agent configurations options.
  • Organizational understanding and ability to locate and suggest experts from your team.

Other Noteable Benefits of Danswer

  • User Authentication with document level access management.
  • Best in class Hybrid Search across all sources (BM-25 + prefix aware embedding models).
  • Admin Dashboard to configure connectors, document-sets, access, etc.
  • Custom deep learning models + learn from user feedback.
  • Easy deployment and ability to host Danswer anywhere of your choosing.

🔌 Connectors

Efficiently pulls the latest changes from:

  • Slack
  • GitHub
  • Google Drive
  • Confluence
  • Jira
  • Zendesk
  • Gmail
  • Notion
  • Gong
  • Slab
  • Linear
  • Productboard
  • Guru
  • Bookstack
  • Document360
  • Sharepoint
  • Hubspot
  • Local Files
  • Websites
  • And more ...

📚 Editions

There are two editions of Danswer:

  • Danswer Community Edition (CE) is available freely under the MIT Expat license. This version has ALL the core features discussed above. This is the version of Danswer you will get if you follow the Deployment guide above.
  • Danswer Enterprise Edition (EE) includes extra features that are primarily useful for larger organizations. Specifically, this includes:
    • Single Sign-On (SSO), with support for both SAML and OIDC
    • Role-based access control
    • Document permission inheritance from connected sources
    • Usage analytics and query history accessible to admins
    • Whitelabeling
    • API key authentication
    • Encryption of secrets
    • Any many more! Checkout our website for the latest.

To try the Danswer Enterprise Edition:

  1. Checkout our Cloud product.
  2. For self-hosting, contact us at founders@danswer.ai or book a call with us on our Cal.

💡 Contributing

Looking to contribute? Please check out the Contribution Guide for more details.

Description
Gen-AI Chat for Teams - Think ChatGPT if it had access to your team's unique knowledge.
Readme MIT 85 MiB
Languages
Python 62.4%
TypeScript 33%
JavaScript 2.4%
HTML 0.9%
CSS 0.9%
Other 0.4%