├─configs
│ conversation.py
│ model_config.py
│ __init__.py
│
├─connector
│ │ __init__.py
│ │
│ ├─database
│ │ │ __init__.py
│ │ │
│ │ ├─faiss
│ │ │ faiss_client.py
│ │ │ __init__.py
│ │ │
│ │ └─mysql
│ │ mysql_client.py
│ │ __init__.py
│ │
│ ├─embedding
│ │ embedding_backend.py
│ │ embedding_onnx_backend.py
│ │ embedding_torch_backend.py
│ │ __init__.py
│ │
│ ├─llm
│ │ │ llm_for_fastchat.py
│ │ │ llm_for_llamacpp.py
│ │ │ llm_for_openai_api.py
│ │ │ __init__.py
│ │ │
│ │ └─base
│ │ base.py
│ │ __init__.py
│ │
│ └─rerank
│ rerank_backend.py
│ rerank_onnx_backend.py
│ rerank_torch_backend.py
│ __init__.py
│
├─core
│ │ local_doc_qa.py
│ │ local_file.py
│ │ __init__.py
│ │
│ └─tools
│ web_search_tool.py
│
├─dependent_server
│ └─ocr_server
│ │ ocr.py
│ │ operators.py
│ │ postprocess.py
│ │ test.jpg
│ │ __init__.py
│ │
│ └─ocr_models
│ det.onnx
│ ocr.res
│ rec.onnx
│
├─nltk_data
│ ├─taggers
│ │ └─averaged_perceptron_tagger
│ │ averaged_perceptron_tagger.pickle
│ │
│ └─tokenizers
│ └─punkt
│ │ czech.pickle
│ │ danish.pickle
│ │ dutch.pickle
│ │ english.pickle
│ │ estonian.pickle
│ │ finnish.pickle
│ │ french.pickle
│ │ german.pickle
│ │ greek.pickle
│ │ italian.pickle
│ │ malayalam.pickle
│ │ norwegian.pickle
│ │ polish.pickle
│ │ portuguese.pickle
│ │ README
│ │ russian.pickle
│ │ slovene.pickle
│ │ spanish.pickle
│ │ swedish.pickle
│ │ turkish.pickle
│ │
│ └─PY3
│ czech.pickle
│ danish.pickle
│ dutch.pickle
│ english.pickle
│ estonian.pickle
│ finnish.pickle
│ french.pickle
│ german.pickle
│ greek.pickle
│ italian.pickle
│ malayalam.pickle
│ norwegian.pickle
│ polish.pickle
│ portuguese.pickle
│ README
│ russian.pickle
│ slovene.pickle
│ spanish.pickle
│ swedish.pickle
│ turkish.pickle
│
├─qanything_server
│ │ handler.py
│ │ sanic_api.py
│ │ __init__.py
│ │
│ ├─dist
│ │ └─qanything
│ │ │ favicons.png
│ │ │ index.html
│ │ │
│ │ └─assets
│ │ ai-avatar-x9recamI.png
│ │ bot-avatar-CBCRm2Zm.js
│ │ BotEdit-B06BJPmC.js
│ │ BotEdit-Dyyrp2t7.css
│ │ BotPublish-Md0cVb8-.js
│ │ BotPublish-vC4PWAbv.css
│ │ Bots-AormuCAr.js
│ │ Bots-DY07q9tM.css
│ │ BotShare-BXdYidoX.js
│ │ BotShare-XmfA0gEJ.css
│ │ BotsManage-ByjTYN3B.css
│ │ BotsManage-NdeULFGl.js
│ │ ChatSourceDialog-5XKToKnC.js
│ │ ChatSourceDialog-BUTjD5tw.css
│ │ collapseMotion-CnI03Kdl.js
│ │ EditDetail-BDpSMOci.js
│ │ EditDetail-kqYHzZye.css
│ │ Home-DBAe-9jL.js
│ │ Home-XMpT4gwr.css
│ │ html2canvas-D_OCvnp_.css
│ │ html2canvas.esm-CgGVt5kG.js
│ │ icon-file-Bxz0aRpP.png
│ │ index-B-fQPM5e.js
│ │ index-BrCLkR8m.js
│ │ index-BxuJyBHW.js
│ │ index-B_yw3M95.js
│ │ index-CyNctjbS.js
│ │ index-DHKaP0Tj.css
│ │ index-ot0vH8Oz.js
│ │ index-YJKHzL67.css
│ │ knowledge-zhu8jsrY.js
│ │ lock-DmQwPPsI.js
│ │ logo-small-b0CKaHl6.png
│ │ RightOutlined-CoMfy0iO.js
│ │ router-B43zTIJp.js
│ │ useBots-BQmzf1CJ.js
│ │ useBotsChat-R5Fputbs.js
│ │ useChatSource-DQGmBhaY.js
│ │ useOptiionList-BYMemxlG.js
│ │ utils-FmuO9fEK.js
│ │
│ └─static
│ redoc.standalone.js
│ swagger-ui-bundle.js
│ swagger-ui.css
│
└─utils
│ custom_log.py
│ general_utils.py
│ __init__.py
│
└─loader
│ audio_loader.py
│ csv_loader.py
│ image_loader.py
│ markdown_parser.py
│ my_recursive_url_loader.py
│ pdf_loader.py
│ __init__.py
│
└─pdf_to_markdown
│ convert2markdown.py
│
└─core
└─layout
│ layout_model.py
│ layout_parser.py
│ table_parser_e2e.py
│ __init__.py
│
├─table_cls
│ infer_onnx.py
│ __init__.py
│
└─table_rec
│ __init__.py
│
└─lib
│ logger.py
│
├─datasets
│ │ dataset_factory.py
│ │
│ ├─dataset
│ │ table.py
│ │ table_mid.py
│ │ table_small.py
│ │
│ └─sample
│ ctdet.py
│
├─detectors
│ base_detector.py
│ ctdet.py
│ detector_factory.py
│
├─external
│ Makefile
│ nms.pyx
│ setup.py
│ shapelyNMS.py
│ __init__.py
│
└─models
│ classifier.py
│ data_parallel.py
│ decode.py
│ losses.py
│ model.py
│
└─networks
└─DCNv2
│ LICENSE
│ _ext.cpython-37m-x86_64-linux-gnu.so
│ __init__.py
│
├─build
│ ├─lib.linux-x86_64-cpython-37
│ │ _ext.cpython-37m-x86_64-linux-gnu.so
│ │
│ ├─temp.linux-x86_64-3.9
│ │ build.ninja
│ │
│ └─temp.linux-x86_64-cpython-37
│ │ .ninja_deps
│ │ .ninja_log
│ │ build.ninja
│ │
│ └─ssd8
│ └─exec
│ └─huangjy
│ └─AdvancedLiterateMachinery
│ └─DocumentUnderstanding
│ └─LORE-TSR
│ └─src
└─DCNv2.egg-info
dependency_links.txt
PKG-INFO
SOURCES.txt
top_level.txt
从更详细的文件结构来看,这个项目涉及多个不同的技术模块,涵盖了从数据库连接、自然语言处理、光学字符识别(OCR)到文档转换的多种功能。可以推断这是一个多功能、模块化的系统,可能用于文本、表格和图像处理等多种任务。以下是详细的模块分析:
__init__.py
)__init__.py
文件存在于多个目录中,表明这是一个 Python 包化的项目,每个文件夹可能代表一个独立的模块或子模块。conversation.py
(与对话系统相关的配置)、model_config.py
(模型配置)。这些配置文件可以调节系统的行为,例如调整模型的超参数、嵌入的设置或对话的逻辑配置。faiss
和 mysql
的连接模块。faiss_client.py
处理高效向量相似性搜索,mysql_client.py
则是用于 MySQL 数据库的客户端。fastchat
, llamacpp
, openai_api
),这些模块支持不同平台的 LLM 模型调用。tools
目录中的 web_search_tool.py
可能实现了基于网络的搜索工具,帮助文档处理或问答系统从互联网上获取信息。ocr.py
、operators.py
和 postprocess.py
处理 OCR 的核心功能。ocr_models
文件夹存储了模型文件(如 det.onnx
, rec.onnx
),用于文本检测和识别。taggers
文件夹中的 averaged_perceptron_tagger
和 tokenizers
文件夹中的 punkt
等 pickle 文件用于分词和词性标注。支持多种语言的文本处理。handler.py
和 sanic_api.py
),以及静态文件资源(如 index.html
, assets
)。这可能是一个提供问答服务的接口,使用前端和后端交互来实现某种聊天或问答系统。custom_log.py
)、常用工具(general_utils.py
)等。loader
目录下有多个文件加载器模块(如 audio_loader.py
, csv_loader.py
, image_loader.py
, pdf_loader.py
),负责处理各种格式的数据输入。core
目录中的 layout_model.py
和 table_parser_e2e.py
可能用于处理复杂文档的布局和表格。table_cls
和 table_rec
)。其中的模型和数据集(如 datasets
和 models
)提供了对表格进行检测和分类的能力,可能应用于文档中的表格解析任务。LICENSE
, build
, models
)。这可能与图像中的表格或布局检测相关。该项目是一个复杂的多模块系统,结合了多种技术功能。主要涉及:
qanything_server
提供智能问答服务,可能结合 LLM 和网络搜索功能。这个项目非常多功能,适用于处理文档、文本、图像和问答任务的复杂系统。
通过观察dockerfile我们可以知道qanything应用以下几个库完成功能。
modelscope==1.13.0 \
Pillow==10.2.0 \
numpy==1.24.3 \
PyMuPDF==1.23.22 \
easyocr==1.7.1 \
onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/ \
# onnxruntime==1.17.1 \
torch==2.1.2 \
torchvision==0.16.2 \
transformers==4.36.2 \
vllm==0.2.7 \
openai==1.12.0 \
concurrent-log-handler==0.9.25 \
sentencepiece==0.1.99 \
tiktoken==0.6.0 \
sanic==23.6.0 \
sanic_ext==23.6.0 \
faiss-cpu==1.8.0 \
openpyxl==3.1.2 \
langchain==0.1.9 \
pypinyin==0.50.0 \
python-docx==1.1.0 \
unstructured==0.12.4 \
unstructured[pptx]==0.12.4 \
unstructured[md]==0.12.4 \
accelerate==0.21.0 \
networkx==3.2.1 \
python-dotenv==1.0.1 \
html2text==2024.2.26 \
duckduckgo-search==5.3.0 \
faster-whisper==1.0.1
这些依赖是该项目中使用的第三方库和工具,它们涵盖了多种功能,包括深度学习、自然语言处理、OCR(光学字符识别)、文档处理、API处理和前端/后端通信等。下面逐一介绍这些依赖库的用途:
gpu
版本使用 GPU 加速 ONNX 模型的运行,支持大规模模型部署。.env
文件中的环境变量配置,便于在项目中管理环境变量。这些库和工具共同构成了一个多功能系统,支持从深度学习推理、NLP、文档和图像处理到 Web API 开发等广泛的任务。这些依赖允许项目处理大规模数据、运行复杂的深度学习模型,并通过 API 提供交互式服务。
从提供的资料和目录结构来看,QAnything 项目似乎是一个集成了多种人工智能技术和自然语言处理(NLP)工具的系统,具备处理多模态输入(文本、图像、PDF等)、执行大规模语言模型推理、OCR、嵌入向量搜索、以及提供API服务等多项功能。下面是基于目录结构和依赖分析得出的几个核心功能:
connector/llm
目录包含了不同的 LLM 接口实现,包括对 OpenAI API、FastChat 和 llama.cpp 的支持。这表明 QAnything 可以连接并调用多种大语言模型,可能用于对话生成、文本生成、回答问题等任务。transformers
和 vllm
支持模型的高效推理,意味着 QAnything 能够加载和运行各种预训练的语言模型,处理复杂的自然语言任务。core/local_doc_qa.py
暗示了该系统可能实现了本地化的文档问答功能,可以基于存储在本地的文档数据直接回答问题。faiss-cpu
和 langchain
这些依赖表明系统可能使用了向量检索技术(如基于嵌入向量的相似度搜索)来进行问答或信息检索。LangChain 则提供了将大语言模型与工具结合使用的能力,可能支持链式推理任务。dependent_server/ocr_server
目录包含了 OCR 模型和处理代码,如 det.onnx
和 rec.onnx
,显示出系统具备从图像或文档中提取文本的能力。easyocr
和 PyMuPDF
支持该功能,表明 QAnything 能够处理图片和 PDF 格式的文档,提取并识别其中的文本信息。这对于多模态信息的处理非常重要。utils/loader
目录下的子模块,如 pdf_loader.py
、audio_loader.py
、image_loader.py
和 csv_loader.py
表明系统具备处理多种数据类型的能力,包括 PDF 文档、音频、图像和 CSV 数据。pdf_to_markdown
模块以及 layout
相关的子模块似乎表明该系统不仅可以从 PDF 提取文本,还可以进行结构化处理,如解析表格或页面布局。这表明 QAnything 可能用于处理复杂文档,将其转换为可供进一步分析或问答的结构化数据。qanything_server
目录下的文件如 sanic_api.py
表示 QAnything 提供了 Web 服务接口,可能通过 REST API 或其他方式供外部系统访问其核心功能。Sanic
框架则表明系统可能是异步的,能够高效地处理并发请求。dist/qanything
目录中的前端资源(如 HTML 文件、CSS 和 JS 文件)表明该项目还包含了用户界面,用于提供一个图形化的交互平台。这可能是一个用于展示问答结果或执行其他互动功能的 Web 界面。connector/rerank
和 web_search_tool.py
表明 QAnything 可能支持在线信息检索与排名重排功能。通过 DuckDuckGo 搜索库和 web 工具,系统可能具备从网络检索信息并结合本地知识库进行增强问答的功能。rerank_onnx_backend.py
等文件显示,系统可能会对检索到的结果进行重新排序,以便提供更相关的答案。unstructured
库和 markdown_parser.py
表明 QAnything 能够将各种格式的文档(如 PPTX、Markdown、PDF 等)转换为结构化文本。这对于实现从文档中提取有价值的信息非常重要,可能用于问答、信息提取等任务。core/tools/web_search_tool.py
表明系统可能集成了网络搜索功能,允许用户在本地知识库之外搜索信息。html2text
和 duckduckgo-search
支持从网页或其他外部数据源提取和格式化信息。这些工具与大语言模型结合可能用于增强系统的问答能力,甚至可以实时获取网络信息来回答问题。QAnything 是一个多功能的 AI 系统,集成了大语言模型推理、OCR、信息检索、文档处理等功能,具备多模态数据处理的能力。它可以通过 Web API 提供问答、信息检索、文档解析等服务,支持文本、图像、PDF等多种输入形式,结合嵌入向量检索技术和在线搜索功能,能够为用户提供高效的知识问答与文档解析服务。