Fixes the following TypeError: api_server_1 | File "/usr/local/lib/python3.11/site-packages/anyio/to_thread.py", line 33, in run_sync api_server_1 | return await get_asynclib().run_sync_in_worker_thread( api_server_1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api_server_1 | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 877, in run_sync_in_worker_thread api_server_1 | return await future api_server_1 | ^^^^^^^^^^^^ api_server_1 | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 807, in run api_server_1 | result = context.run(func, *args) api_server_1 | ^^^^^^^^^^^^^^^^^^^^^^^^ api_server_1 | File "/usr/local/lib/python3.11/site-packages/starlette/concurrency.py", line 53, in _next api_server_1 | return next(iterator) api_server_1 | ^^^^^^^^^^^^^^ api_server_1 | File "/app/danswer/utils/timing.py", line 47, in wrapped_func api_server_1 | value = next(gen) api_server_1 | ^^^^^^^^^ api_server_1 | File "/app/danswer/direct_qa/answer_question.py", line 243, in answer_qa_query_stream api_server_1 | top_chunks = cast(list[InferenceChunk], next(search_generator)) api_server_1 | ^^^^^^^^^^^^^^^^^^^^^^ api_server_1 | File "/app/danswer/search/search_runner.py", line 469, in full_chunk_search_generator api_server_1 | retrieved_chunks = retrieve_chunks( api_server_1 | ^^^^^^^^^^^^^^^^ api_server_1 | File "/app/danswer/search/search_runner.py", line 353, in retrieve_chunks api_server_1 | q_copy.query = rephrase api_server_1 | ^^^^^^^^^^^^ api_server_1 | File "pydantic/main.py", line 359, in pydantic.main.BaseModel.__setattr__ api_server_1 | TypeError: "SearchQuery" is immutable and does not support item assignment
OpenSource Enterprise Question-Answering
Danswer allows you to ask natural language questions against internal documents and get back reliable answers backed by quotes and references from the source material so that you can always trust what you get back. You can connect to a number of common tools such as Slack, GitHub, Confluence, amongst others.
Usage
Danswer provides a fully-featured web UI:
https://github.com/danswer-ai/danswer/assets/25087905/619607a1-4ad2-41a0-9728-351752acc26e
Or, if you prefer, you can 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 controls, check out our Full Video Demo!
Deployment
Danswer can easily be tested locally 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.
💃 Features
- Direct QA powered by Generative AI models with answers backed by quotes and source links.
- Intelligent Document Retrieval (Hybrid Search + Reranking) using the latest NLP models.
- Automatic time/source filter extraction from natural language + custom model to identify user intent.
- User authentication and document level access management.
- Support for LLMs of your choice (GPT-4, Llama2, Orca, etc.)
- Management Dashboards to manage connectors and set up features such as live update fetching.
- One line Docker Compose (or Kubernetes) deployment to host Danswer anywhere.
🔌 Connectors
Efficiently pulls the latest changes from:
- Slack
- GitHub
- Google Drive
- Confluence
- Jira
- Notion
- Gong
- Slab
- Linear
- Productboard
- Guru
- Zulip
- Bookstack
- Document360
- Request Tracker
- Hubspot
- Local Files
- Websites
- With more to come...
🚧 Roadmap
- Chat/Conversation support.
- Organizational understanding.
- Code Search
- Structured Query Languages (SQL, Excel formulas, etc.)
- Ability to locate and suggest experts from your team.
💡 Contributing
Looking to contribute? Please check out the Contribution Guide for more details.