QAnything README

The project's README from github.com/netease-youdao/QAnything. As one markdown file: README.md.

Logo

Question and Answer based on Anything

English | 简体中文

         

              

    

Table of Contents

🚀 Important Updates

Important things should be said three times.

[2024-08-23: QAnything updated to version 2.0.]

[2024-08-23: QAnything updated to version 2.0.]

[2024-08-23: QAnything updated to version 2.0.]

  • This update brings improvements in various aspects such as usability, resource consumption, search results, question and answer results, parsing results, front-end effects, service architecture, and usage methods.
  • At the same time, the old Docker version and Python version have been merged into a new unified version, using a single-line command with Docker Compose for one-click startup, ready to use out of the box.

Contributing

We appreciate your interest in contributing to our project. Whether you're fixing a bug, improving an existing feature, or adding something completely new, your contributions are welcome!

Thanks to all contributors for their efforts

Special thanks!

Please note: Our list of contributors is automatically updated, so your contributions may not appear immediately on this list.

Special thanks!:@ikun-moxiaofei

Special thanks!:@Ianarua

Business contact information:

010-82558901

For business cooperation, please contact us by phone or email:

What is QAnything?

QAnything(Question and Answer based on Anything) is a local knowledge base question-answering system designed to support a wide range of file formats and databases, allowing for offline installation and use.

With QAnything, you can simply drop any locally stored file of any format and receive accurate, fast, and reliable answers.

Currently supported formats include: PDF(pdf),Word(docx),PPT(pptx),XLS(xlsx),Markdown(md),Email(eml),TXT(txt),Image(jpg,jpeg,png),CSV(csv),Web links(html) and more formats coming soon…

Key features

Architecture

qanything_system

Why 2 stage retrieval?

In scenarios with a large volume of knowledge base data, the advantages of a two-stage approach are very clear. If only a first-stage embedding retrieval is used, there will be a problem of retrieval degradation as the data volume increases, as indicated by the green line in the following graph. However, after the second-stage reranking, there can be a stable increase in accuracy, the more data, the better the performance.

two stage retrievaal

QAnything uses the retrieval component BCEmbedding, which is distinguished for its bilingual and crosslingual proficiency. BCEmbedding excels in bridging Chinese and English linguistic gaps, which achieves

1st Retrieval(embedding)

Model Retrieval STS PairClassification Classification Reranking Clustering Avg
bge-base-en-v1.5 37.14 55.06 75.45 59.73 43.05 37.74 47.20
bge-base-zh-v1.5 47.60 63.72 77.40 63.38 54.85 32.56 53.60
bge-large-en-v1.5 37.15 54.09 75.00 59.24 42.68 37.32 46.82
bge-large-zh-v1.5 47.54 64.73 79.14 64.19 55.88 33.26 54.21
jina-embeddings-v2-base-en 31.58 54.28 74.84 58.42 41.16 34.67 44.29
m3e-base 46.29 63.93 71.84 64.08 52.38 37.84 53.54
m3e-large 34.85 59.74 67.69 60.07 48.99 31.62 46.78
bce-embedding-base_v1 57.60 65.73 74.96 69.00 57.29 38.95 59.43

2nd Retrieval(rerank)

Model Reranking Avg
bge-reranker-base 57.78 57.78
bge-reranker-large 59.69 59.69
bce-reranker-base_v1 60.06 60.06

RAG Evaluations in LlamaIndex(embedding and rerank)

NOTE:

LLM

The open source version of QAnything is based on QwenLM and has been fine-tuned on a large number of professional question-answering datasets. It greatly enhances the ability of question-answering. If you need to use it for commercial purposes, please follow the license of QwenLM. For more details, please refer to: QwenLM

🚀 Latest Updates

Before You Start

Star us on GitHub, and be instantly notified for new release! star_us

Getting Started

Latest Features Table

features python (v1.4.2) docker (v1.2.2) QAnything v2.0.0 Explanation
Detailed installation document ✅ ✅ ✅
Support API ✅ ✅ ✅
Support production environment ❌ ✅ ✅
Support offline use ❌ ✅ ✅
Support multiple concurrency ❌ ✅ ✅
Support multi-card inference ❌ ✅ ❌ Version 2.0.0 no longer provides default local LLM. All access is through the openai interface, and users can deploy local LLM through tools such as ollama.
Support Mac (M series chips) ✅ ❌ ✅
Support Linux ✅ ✅ ✅ The old version of Python defaults to using onnxruntime-gpu for cuda12 on Linux, and automatically switches to onnxruntime when glibc<2.28.
Support windows ❌ ❌ ✅ Both old versions of Python and Docker require WSL environment. Version 2.0.0 can be started directly in a non-WSL environment.
Support CPU only ✅ ❌ ✅ Version 2.0.0 Mac, Linux, Win unified no longer use GPU, completely migrated to CPU.
Support hybrid search (BM25+embedding) ❌ ✅ ✅
Support web search (need VPN) ✅ ❌ ✅
Support FAQ ✅ ❌ ✅
Support BOT ✅ ❌ ✅
Support Traceability ✅ ❌ ✅
Support Log retrieval ✅ ❌ ✅
Support audio file ✅ ❌ ❌ Relying on whisper, slow speed and high resource consumption, temporarily removed.
Support OpenCloudOS ✅ ❌ ✅
Support interfaces compatible with Openaiapi (including ollama) ✅ ✅ ✅ Old versions of Python and Docker require manual modification of parameters such as api_key, base_url, model, etc. In version 2.0.0, these are all changed to be automatically saved in the front end settings.
PDF parsing performance improvement (including tables) ✅ ❌ ✅ Version 1.4.2 requires manual settings, version 2.0.0 does not require manual settings, and both the PDF parsing effect and performance have been improved.
User-defined configuration (Experimental: Improve speed) ✅ ❌ ✅ v1.4.2 needs to be set manually, v2.0.0 uses the best configuration by default.

QAnything (netease-youdao/QAnything)

Searching Database…

14.2K ·GitHub
Что это такое?Локальная система вопросов и ответов по базе знаний: загружаете в неё свои документы и задаёте вопросы — получаете точные ответы, взятые из ваших файлов, а не из открытого интернета.
Это приложение, которое я разворачиваю сам, или библиотека для кода?Это self-hosted приложение, а не библиотека: одна команда Docker Compose поднимает сервис, которым вы пользуетесь через веб-интерфейс. Есть и API, если захотите встроить его в свой код.
Как его запустить?Склонируйте репозиторий qanything, перейдите в корень проекта и запустите команду старта — в версии v2.0.0 весь стек поднимается одной строкой Docker Compose. Есть и онлайн-демо, чтобы сначала просто попробовать.
Что должно быть установлено заранее?Только Docker. Всё остальное — разбор PDF, OCR, эмбеддинги, rerank — уже внутри стека, причём каждый компонент независим и его можно свободно заменить.
Что сейчас не умеет?В версии 2.0 убрали поддержку аудиофайлов — разбор через whisper работал медленно и прожорливо к ресурсам, — а также исчез вывод на несколько GPU. Функция веб-поиска требует VPN.
На каких системах работает?Windows, macOS (включая Mac на чипах серии M) и Linux. Версия 2.0.0 — первая, которая запускается на Windows напрямую, без WSL.
Можно пользоваться без интернета?Да — офлайн-режим официально поддерживается в v2.0.0 (в старом варианте на Python его не было). Интернет нужен только для необязательной функции веб-поиска.
Мои данные остаются на моём компьютере?Да — безопасность данных заявлена как ключевая особенность: вся система рассчитана на установку и использование с отключённым сетевым кабелем, так что ваши документы не покидают ваш компьютер.
Есть ли подвох в лицензии для коммерческого использования?Код — под AGPL-3.0. Также учтите: открытая версия построена на дообученной модели QwenLM, и коммерческое использование этой модели должно соответствовать собственной лицензии QwenLM.
По каким типам файлов можно задавать вопросы?PDF, Word (docx), PPT (pptx), Excel (xlsx), Markdown, письма (eml), TXT, картинки (jpg/jpeg/png), CSV и веб-ссылки (html), список продолжает пополняться. Вопросы и ответы работают и между языками: можно спросить по-английски о файлах на китайском и наоборот — независимо от языка файла.
Ответы останутся точными, когда база знаний вырастет до тысяч файлов?Да — именно эту задачу и решает архитектура. Двухэтапный конвейер (поиск по эмбеддингам плюс reranker) держит точность на подъёме по мере роста данных, тогда как одностадийный поиск по эмбеддингам деградирует. Ограничений на количество загруженных файлов нет, а поиск остаётся быстрым благодаря моделям BCEmbedding от команды проекта.
В комплекте идёт своя ИИ-модель?Уже нет. В версии 2.0.0 убрали локальную LLM по умолчанию: всё подключается через OpenAI-совместимый интерфейс, настраиваемый в параметрах веб-интерфейса, — так что можно подключить любой OpenAI-совместимый сервис или запустить локальную модель через инструменты вроде ollama.
Что он умеет из коробки, кроме общения с моими файлами?Быстрый чат в стиле Kimi без подключённых файлов, режим «только поиск» и собственные боты. Версия 2.0 добавила FAQ-записи, гибридный поиск BM25+embedding, онлайн-просмотр и редактирование чанков, предпросмотр с отслеживанием исходных файлов и поиск по логам.
Size
114.4 MB
Stars
14.2K
Age
2y
Commits · 90 Days