Question and Answer based on Anything
Table of Contents
GitHub
What is QAnything?
Question and Answer based on Anything (QAnything
) 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, Word (doc/docx), PPT, Markdown, Eml, TXT, Images (jpg, png, etc.), Web links and more formats coming soon…
Key features
- Data Security, supports installation and usage with network cable unplugged throughout the process.
- Cross-language QA support, freely switch between Chinese and English QA, regardless of the language of the document.
- Supports massive data QA, two-stage retrieval ranking, solving the degradation problem of large-scale data retrieval; the more data, the better the performance.
- High-performance production-grade system, directly deployable for enterprise applications.
- User-friendly, no need for cumbersome configurations, one-click installation and deployment, ready to use.
- Multi knowledge base QA Support selecting multiple knowledge bases for Q&A
Architecture
![qanything_system](https://cdn-uploads.huggingface.co/production/uploads/63aa90473453852ef5458cd3/KDeEwzOcI_EUd1-k860k9.png)
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](https://cdn-uploads.huggingface.co/production/uploads/63aa90473453852ef5458cd3/lmXhf9sM3q0o7Y-BZsqOW.jpeg)
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
- A high performence on Semantic Representation Evaluations in MTEB;
- A new benchmark in the realm of RAG Evaluations in LlamaIndex.
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 |
- More evaluation details please check Embedding Models Evaluation Summary。
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 |
- More evaluation details please check Reranker Models Evaluation Summary
RAG Evaluations in LlamaIndex(embedding and rerank)
![rag evaluation in llamaindex](https://cdn-uploads.huggingface.co/production/uploads/63aa90473453852ef5458cd3/vs-dxcGpjzVQileTd1JOO.jpeg)
NOTE:
- In
WithoutReranker
setting, ourbce-embedding-base_v1
outperforms all the other embedding models. - With fixing the embedding model, our
bce-reranker-base_v1
achieves the best performence. - The combination of
bce-embedding-base_v1
andbce-reranker-base_v1
is SOTA. - If you want to use embedding and rerank separately, please refer to BCEmbedding
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
Getting Started
Prerequisites
Required item | Minimum Requirement | Note |
---|---|---|
NVIDIA GPU Memory | >= 16GB | NVIDIA 3090 recommended |
NVIDIA Driver Version | >= 525.105.17 | |
CUDA Version | >= 12.0 | |
docker compose version | >=1.27.4 | docker compose install |
Installation
Please refer to: https://github.com/netease-youdao/QAnything?tab=readme-ov-file#installation
Usage
Cross-lingual: Multiple English paper Q&A
Information extraction
Various files
Web Q&A
API Document
If you need to access the API, please refer to the QAnything API documentation.
WeChat Group
Welcome to scan the QR code below and join the WeChat group.
![](https://cdn-uploads.huggingface.co/production/uploads/63aa90473453852ef5458cd3/wWljn9-KTokyjgIOAObuf.jpeg)
Support
Reach out to the maintainer at one of the following places:
- Github issues
- Contact options listed on this GitHub profile
License
QAnything
is licensed under Apache 2.0 License
Acknowledgments
QAnything
adopts dependencies from the following:
- Thanks to our BCEmbedding for the excellent embedding and rerank model.
- Thanks to Qwen for strong base language models.
- Thanks to Triton Inference Server for providing great open source inference serving.
- Thanks to FasterTransformer for highly optimized LLM inference backend.
- Thanks to Langchain for the wonderful llm application framework.
- Thanks to Langchain-Chatchat for the inspiration provided on local knowledge base Q&A.
- Thanks to Milvus for the excellent semantic search library.
- Thanks to PaddleOCR for its ease-to-use OCR library.
- Thanks to Sanic for the powerful web service framework.